Главная → Документация → Скрытые ДТП и повреждения
Скрытые ДТП и повреждения
События, которых нет в базе ГИБДД: ДТП из неофициальных источников, страховые выплаты, ДТП за рубежом, продажа на аукционах битых автомобилей с фото и расчёты стоимости ремонта. Все события одним списком, свежие сверху; одно событие из разных источников показывается один раз. Поиск по VIN или номеру кузова.
Аутентификация
Токен передаётся заголовком Authorization: Bearer <токен> или параметром ?token=. Токен один для всех API, он в личном кабинете.
Эндпоинт
GET https://api.avtovincod.ru/hidden-damage
Параметры
Передайте ровно один идентификатор автомобиля.
| Параметр | Описание |
|---|---|
vin | VIN, 17 символов (латиница и цифры, без I, O, Q) |
body | Номер кузова (для машин без VIN), 6-17 символов, дефисы и пробелы можно не убирать. Номер кузова, который встречается у разных машин, даёт «не найдено» и "vinResolved": false, бесплатно |
Пример запроса
curl -H "Authorization: Bearer $TOKEN" \
"https://api.avtovincod.ru/hidden-damage?vin=X7TEST00000000001"
Пример ответа
{
"success": 1,
"query": {
"vin": "X7TEST00000000001"
},
"found": 3,
"summary": {
"accidents": 1,
"accidents_abroad": 1,
"insurance_payments": 1,
"repair_estimates": 0,
"salvage_auctions": 0
},
"events": [
{
"type": "insurance_payment",
"year": 2019
},
{
"type": "accident",
"date": "2016-10-06",
"kind": "Столкновение",
"region": "Московская область",
"department": "ГИБДД Чеховского ОВД",
"damage": [
"перед справа",
"перед слева"
],
"plate": "М236•••777"
},
{
"type": "accident_abroad",
"date": "2013-10-18",
"count": 1,
"country": "Германия",
"mileage_km": 65411,
"car": "2010 Volkswagen CC"
}
],
"checkedAt": "2026-10-29T12:00:00+03:00"
}
Ничего не найдено: "found": 0, "events": []. Это выполненная проверка, а не ошибка, и она бесплатна.
Расчёт ремонта и аукцион битых автомобилей
[
{
"type": "repair_estimate",
"date": "2020-03-06",
"costs": {
"paint": "до 10000 руб.",
"labor": "до 10000 руб.",
"parts": "до 10000 руб.",
"total": "10000 - 20000 руб."
},
"works": [
{
"name": "Замена",
"items": [
"РАМКА НОМЕРН ЗНАКА П"
]
},
{
"name": "Ремонт",
"items": [
"ОБЛИЦОВКА БАМПЕРА П ОТРЕМОНТИРОВАТЬ"
]
}
]
},
{
"type": "salvage_auction",
"date": "2021-07-01",
"region": "Уфа",
"photos": [
{
"url": "https://.../salvage/....jpg?...",
"width": 640,
"height": 480
}
]
}
]
Что возвращает
| Поле | Значение |
|---|---|
query | по чему искали: vin или body и значение после нормализации |
found | сколько событий найдено; 0 - ничего нет |
summary | сколько событий каждого типа: accidents, accidents_abroad, insurance_payments, repair_estimates, salvage_auctions |
events[].type | тип события (таблица ниже) |
vinResolved | только при поиске по кузову: false - машину по номеру кузова определить не удалось |
checkedAt | время ответа |
| type | Поля |
|---|---|
accident | ДТП вне базы ГИБДД: date, kind (тип ДТП), region, department, damage[] (повреждения), plate (госномер на тот момент, маской) |
accident_abroad | ДТП за рубежом: date (бывает null), count (число ДТП), country, mileage_km, car; odometer_problems - расхождения пробега, если были |
insurance_payment | страховая выплата: year |
repair_estimate | расчёт стоимости ремонта: date, costs (paint, labor, parts, total - диапазоны в рублях), works[] (name - вид работ, items - детали) |
salvage_auction | продажа на аукционе битых автомобилей: date, region, photos[] (url, width, height); ссылки на снимки временные, до 7 суток |
Коды ошибок
| Код | Значение |
|---|---|
NO_TOKEN | токен не передан |
TOKEN_INVALID | токен недействителен или деактивирован |
NOT_ALLOWED | API не подключён вашему токену |
INSUFFICIENT_BALANCE | недостаточно средств на балансе |
RATE_LIMIT | превышен лимит запросов в минуту |
INPUT_REQUIRED, INPUT_CONFLICT | не передан идентификатор или переданы оба |
BAD_VIN, BAD_BODY | неверный VIN или номер кузова |
SERVICE_UNAVAILABLE | сервис временно недоступен, повторите позже (бесплатно) |
Примеры кода: PHP, Python, JavaScript, Go, Java, C#, Ruby, 1С
Примеры готовы к запуску: токен берётся из переменной окружения AVC_TOKEN, а в запросе стоит тестовое значение (vin=X7TEST00000000001). По тестовым значениям приходит ответ-образец по схеме метода: бесплатно, без списания и даже при нулевом балансе, с полем "testMode": true. Так интеграцию можно собрать и проверить до первого платного запроса. Все тестовые значения.
curl -s --max-time 90 -G "https://api.avtovincod.ru/hidden-damage" \
--data-urlencode "vin=X7TEST00000000001" \
-H "Authorization: Bearer $AVC_TOKEN"<?php
$url = 'https://api.avtovincod.ru/hidden-damage?' . http_build_query(['vin' => 'X7TEST00000000001']);
$ch = curl_init($url);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 90,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AVC_TOKEN')]]);
$d = json_decode(curl_exec($ch), true);
echo $d['success'] ? json_encode($d, JSON_UNESCAPED_UNICODE) : $d['code'] . ': ' . $d['error'];import os, requests
r = requests.get("https://api.avtovincod.ru/hidden-damage", params={"vin": "X7TEST00000000001"},
headers={"Authorization": "Bearer " + os.environ["AVC_TOKEN"]}, timeout=90)
d = r.json()
print(d if d.get("success") else f'{d["code"]}: {d["error"]}')// Node.js 18+, файл .mjs (await на верхнем уровне)
const url = "https://api.avtovincod.ru/hidden-damage?" + new URLSearchParams({ vin: "X7TEST00000000001" });
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AVC_TOKEN}` },
signal: AbortSignal.timeout(90000) });
const d = await res.json();
console.log(d.success ? d : `${d.code}: ${d.error}`);package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("vin", "X7TEST00000000001")
req, _ := http.NewRequest("GET", "https://api.avtovincod.ru/hidden-damage?"+q.Encode(), nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("AVC_TOKEN"))
resp, err := (&http.Client{Timeout: 90 * time.Second}).Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode, string(body))
}// Java 11+
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.*;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
public class AvtoVinCod {
public static void main(String[] args) throws Exception {
String q = "vin=" + URLEncoder.encode("X7TEST00000000001", StandardCharsets.UTF_8);
HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.avtovincod.ru/hidden-damage?" + q))
.header("Authorization", "Bearer " + System.getenv("AVC_TOKEN"))
.timeout(Duration.ofSeconds(90)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode() + " " + resp.body());
}
}// .NET 6+
using System.Net.Http.Headers;
using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(90) };
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("AVC_TOKEN"));
var url = "https://api.avtovincod.ru/hidden-damage?" + "vin=" + Uri.EscapeDataString("X7TEST00000000001");
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode + " " + await resp.Content.ReadAsStringAsync());require "net/http"
require "json"
uri = URI("https://api.avtovincod.ru/hidden-damage")
uri.query = URI.encode_www_form(vin: "X7TEST00000000001")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer #{ENV["AVC_TOKEN"]}"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true, read_timeout: 90) { |h| h.request(req) }
d = JSON.parse(res.body)
puts d["success"] == 1 ? d : "#{d["code"]}: #{d["error"]}"Токен = "ВАШ_ТОКЕН";
Соединение = Новый HTTPСоединение("api.avtovincod.ru", 443, , , , 90, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/hidden-damage?" + "vin=" + КодироватьСтроку("X7TEST00000000001", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
Если Данные.success = 1 Тогда
Сообщить("Проверка выполнена");
Иначе
Сообщить(Данные.code + ": " + Данные.error);
КонецЕсли;Бесплатных тестовых периодов и долгих согласований нет: пополните баланс в личном кабинете и сразу проверяйте реальные машины. Токен выдаётся при регистрации, деньги списываются только по правилам метода (раздел "Тарификация"). Нужен доступ из ИИ-ассистента: MCP-сервер.
Примеры ответов: успешный, ошибка, сервис недоступен
Успешный запрос
GET https://api.avtovincod.ru/hidden-damage?vin=X7TEST00000000001
Authorization: Bearer ВАШ_ТОКЕН
HTTP 200, success: 1, события найдены: списание по тарифу метода, сумма и остаток в блоке billing (цифры в примере условные).
{
"success": 1,
"query": {
"vin": "X7TEST00000000001"
},
"found": 3,
"summary": {
"accidents": 1,
"accidents_abroad": 1,
"insurance_payments": 1,
"repair_estimates": 0,
"salvage_auctions": 0
},
"events": [
{
"type": "insurance_payment",
"year": 2019
},
{
"type": "accident",
"date": "2016-10-06",
"kind": "Столкновение",
"region": "Московская область",
"department": "ГИБДД Чеховского ОВД",
"damage": [
"перед справа",
"перед слева"
],
"plate": "М236•••777"
},
{
"type": "accident_abroad",
"date": "2013-10-18",
"count": 1,
"country": "Германия",
"mileage_km": 65411,
"car": "2010 Volkswagen CC"
}
],
"checkedAt": "2026-10-29T12:00:00+03:00",
"billing": {
"charged": 8,
"currency": "RUB",
"billed": true,
"balance": 992,
"requestId": 1234567
}
}
Бесплатная проба без списания: https://api.avtovincod.ru/hidden-damage?vin=X7TEST00000000001 (или body=TEST-0000001) вернёт ответ-образец по этой же схеме с полем testMode: true и charged: 0.
Неуспешный запрос
GET https://api.avtovincod.ru/hidden-damage?vin=XTA2170
Authorization: Bearer ВАШ_ТОКЕН
Ошибка в параметрах: HTTP 400, текст ошибки можно показать пользователю. Бесплатно.
{
"success": 0,
"error": "VIN должен содержать 17 символов (латиница и цифры).",
"code": "BAD_VIN"
}
Сервис недоступен
GET https://api.avtovincod.ru/hidden-damage?vin=X7TEST00000000001
Authorization: Bearer ВАШ_ТОКЕН
HTTP 503, SERVICE_UNAVAILABLE. Бесплатно, повторите запрос позже. Запрос записан в историю с charged: 0.
{
"success": 0,
"error": "Сервис временно недоступен, повторите позже",
"code": "SERVICE_UNAVAILABLE",
"billing": {
"charged": 0,
"currency": "RUB",
"billed": false,
"balance": 992,
"requestId": 1234569
}
}
Тарификация
Списание только когда найдено хотя бы одно событие (found больше 0). Ничего не найдено (found: 0), неверный идентификатор, сервис недоступен - бесплатно.
В ответ добавляется блок billing: сколько списано за этот запрос (charged, в рублях), платный ли он (billed), остаток баланса после запроса (balance) и номер в истории запросов (requestId). Те же данные в заголовках X-Charged, X-Balance, X-Request-Id. Нет блока - запрос не списан. Подробнее о блоке billing.
MCP-сервер для ИИ-ассистентов
Подключите проверки к ИИ-ассистенту: Claude, Cursor, VS Code и другим клиентам с поддержкой MCP (Model Context Protocol). Ассистент сам вызывает нужный метод по вашему токену, и проверку можно запросить обычными словами: "проверь залог и ограничения по VIN", "есть ли штрафы по СТС". Удобно менеджерам автосалона, лизинга и страховой без программиста, а разработчику помогает быстро собрать прототип интеграции.
- Адрес сервера:
https://api.avtovincod.ru/mcp, авторизация тем же токеном (Authorization: Bearer ВАШ_ТОКЕН). - Этот метод в MCP - инструмент
hidden_damage_check; всего инструментов 43. - Цены и списания как у API, в результате тоже есть блок
billing. Тестовые значения работают бесплатно. - Инструкция по подключению: avtovincod.ru/docs/mcp/