Документация API

Тестовые значения → новое VIN, госномер и СТС для отладки: ответ-образец бесплатно MCP-сервер → новое /mcp · проверки как инструменты ИИ-ассистентов Краткие данные ТС → /brief · марка, модель, год и двигатель по VIN или ГРЗ Расшифровка VIN → /decode · модификация, двигатель, кузов и завод по VIN Госномер по VIN → /vin2gos · госномер, марка, модель и год по VIN История госномеров → новое /plate-history · какие номера были у машины, по VIN или кузову Номер двигателя по VIN → новое /autopark · номер двигателя, марка, модель и год по VIN, кузову или шасси Плюсы и минусы модели → новое /pros-cons · надёжность, коррозия, ликвидность, болячки модели по VIN или кузову Госномер, марка и цвет по фото → новое /photo-plate · номер, марка, модель, цвет и кузов по фотографии, POST Скрыть или замазать номер машины на фото → новое /plate-hide · размыть, замазать цветом или закрыть логотипом госномер, можно и лица, до 10 фото, POST Замазать или размыть лицо на фото → новое /face-hide · найти и размыть, закрыть мозаикой или цветом лица людей, до 10 фото, POST Долги у судебных приставов → новое /enforcement · исполнительные производства по номеру, ИНН или ФИО: причина запрета на машине, сумма, вид долга ДТП по европротоколу → новое /europrotocol · ДТП, оформленные без ГИБДД: дата, страховая, полис; по VIN, госномеру, кузову или шасси Скрытые ДТП и повреждения → новое /hidden-damage · ДТП вне базы ГИБДД, страховые выплаты, ДТП за рубежом, аукционы битых авто, расчёты ремонта; по VIN или кузову Наличие данных по VIN: что есть в иностранных отчётах → новое /vin-precheck · есть ли записи CARFAX, AutoCheck, аукционов, фото, Беларуси до покупки отчёта; ответ сразу CARFAX: история авто из США и Канады → новое /usa-history · регистрации, пробеги, ДТП, обслуживание, титул; PDF и отчёт на русском (страница и JSON), асинхронно 5-15 минут AutoCheck: оценка и история авто из США и Канады → новое /usa-score · оценка AutoCheck Score, ДТП, титулы, хронология; PDF и отчёт на русском (страница и JSON), асинхронно VinHistory: фото авто с аукционов США → новое /usa-photos · фото и лоты американских аукционов по VIN, асинхронно Аукционные лоты США и Кореи: цены и фото → новое /auction-lots · дата торгов, цена, повреждения, фото по VIN, асинхронно История авто в Беларуси → новое /by-history · ввоз и таможня, регистрации, техосмотры, ДТП, такси по VIN; обычно за минуту Комплектация VAG по ETKA (PDF) → новое /vag-equipment-doc · заводские опции и PR-коды Volkswagen, Audi, Skoda, Seat, Cupra, Porsche по VIN, асинхронно История регистрации → /vin · /body - владельцы, характеристики, ПТС/СТС История регистрации (архив) → новое /gibdd-archive · периоды владения и данные учётной записи из архива на дату проверки, по VIN Score: ограничения и розыск → /score · /score-body - запреты, розыск, статус VIN по госномеру → /gos2vin - VIN, кузов и СТС по ГРЗ Проверка такси → /taxi · разрешения на работу в такси по VIN или ГРЗ Реестр залогов ФНП → /pledge · залог по VIN, кузову или шасси Штрафы ГИБДД → /fines · по СТС, ВУ или номеру постановления Штрафы ГИС ГМП → /fines-gis · через СМЭВ в ГИС ГМП: скидка, статья, место, реквизиты; СТС, ВУ, УИН, ИНН Электронный ПТС → /elpts · ЭПТС по VIN или номеру ПТС Техосмотр и пробег → /probeg · ЕАИСТО и пробег по VIN, ГРЗ или кузову Полисы ОСАГО → /osago · полисы по VIN, ГРЗ, кузову или номеру полиса История полисов ОСАГО → /osago-history · все полисы за годы: такси, регионы, перерывы, тип собственника Фотографии автомобиля → /nomerogram · снимки из открытых объявлений по госномеру Проверка каршеринга → /sharing · использование в каршеринге по госномеру или VIN Сервисная история → /service · история обслуживания по VIN Проверка лизинга → /lizing · договоры лизинга по VIN Проверка ДТП → /accidents · ДТП по VIN из архивов (не реальное время) Данные о растаможке → /customs · таможенное оформление по VIN Таможня ФТС → /customs-fts · запрос в ФТС: дата выпуска и утильсбор; VIN, кузов, шасси Объявления о продаже → /offers · история цен и пробегов по VIN Отзывные кампании → /recalls · отзывы производителя по VIN Рыночная оценка → /price · стоимость и аналоги по VIN ДТП по базе ГИБДД → /accidents-rt · ДТП в реальном времени по VIN или кузову Судебные дела (арбитраж) → /lawsuits · решения арбитражных судов по VIN или госномеру Реестр инвалидов → /invalid-reg · стоянка на местах для инвалидов, по госномеру Проверка грузовых пропусков на МКАД → новое /truck-pass · пропуска на МКАД, ТТК и СК по госномеру или номеру пропуска Проверка ТС в РНИС → новое /rnis · последняя навигационная отметка в РНИС Москвы по госномеру Разрешения КТГ для крупногабаритов → новое /ktg-permit · спецразрешение на негабарит по номеру и госномеру

Проверка транспортного средства по VIN: данные ГИБДД - история регистрации, периоды владения, характеристики, ПТС/СТС, ограничения и розыск - одним GET-запросом, ответ в JSON.

Хост api.avtovincod.ru Протокол HTTPS / REST Формат JSON (UTF-8) Метод GET Версия v1.0

1. Обзор

API возвращает данные базы ГИБДД по VIN-номеру транспортного средства. Один запрос - полный ответ: характеристики, история владения, документы, действующие ограничения и статус розыска.

МетодЭндпоинтНазначение
GET /score?vin={VIN}Полная проверка ТС по VIN (характеристики + ограничения + розыск)Основной эндпоинт
GET /stats.phpСтатистика и баланс клиентаСлужебный

MCP-сервер для ИИ-ассистентов

Подключите проверки к ИИ-ассистенту: Claude, Cursor, VS Code и другим клиентам с поддержкой MCP (Model Context Protocol). Ассистент сам вызывает нужный метод по вашему токену, и проверку можно запросить обычными словами: "проверь залог и ограничения по VIN", "есть ли штрафы по СТС". Удобно менеджерам автосалона, лизинга и страховой без программиста, а разработчику помогает быстро собрать прототип интеграции.

  • Адрес сервера: https://api.avtovincod.ru/mcp, авторизация тем же токеном (Authorization: Bearer ВАШ_ТОКЕН).
  • Этот метод в MCP - инструмент restrictions_wanted; всего инструментов 45.
  • Цены и списания как у API, в результате тоже есть блок billing. Тестовые значения работают бесплатно.
  • Инструкция по подключению: avtovincod.ru/docs/mcp/

Принцип работы

1. Клиент отправляет GET-запрос с VIN и токеном. 2. API проверяет токен, IP, лимиты и баланс. 3. VIN нормализуется (кириллица → латиница) и валидируется. 4. API запрашивает данные у ГИБДД - асинхронно, до 45 секунд. 5. При получении данных списывается стоимость запроса. 6. Клиент получает JSON с характеристиками, ограничениями и розыском.

2. Аутентификация

Каждый клиент получает уникальный Bearer-токен (96 символов hex) при подключении. Передать его можно двумя способами.

Способ 1 - заголовок Authorization (рекомендуется)

GET /score?vin=Z94K241BBJR061674 HTTP/1.1
Host: api.avtovincod.ru
Authorization: Bearer ВАШ_ТОКЕН_96_СИМВОЛОВ

Способ 2 - параметр token в URL

GET /score?vin=Z94K241BBJR061674&token=ВАШ_ТОКЕН_96_СИМВОЛОВ

Первый способ предпочтителен: токен не попадает в логи сервера и историю браузера. Параметр в URL используйте только там, где заголовки недоступны.

3. Эндпоинт и параметры

GET https://api.avtovincod.ru/score?vin={VIN}
ПараметрТипОбязательныйОписание
vinstringдаVIN-номер, 17 символов; кириллица нормализуется автоматически
tokenstringнет** Не нужен, если токен передан в заголовке Authorization

Требования к VIN

Ровно 17 символов; латинские буквы A-Z (кроме I, O, Q) и цифры 0-9. Регистр не важен - API приводит его к верхнему. Примеры валидных VIN: Z94K241BBJR061674, WAUZZZ8UXER030082, WBALM71090E298475.

4. Нормализация VIN

Кириллические буквы, визуально совпадающие с латинскими, заменяются автоматически. Это снимает проблему VIN, скопированных из СТС, документов и старых баз, где кириллица и латиница перемешаны.

Кириллица→ ЛатиницаКириллица→ Латиница
А, В, С, ЕA, B, C, EК, М, Н, ОK, M, H, O
Р, Т, У, ХP, T, Y, XПример: WВАLМ71090Е298475 → WBALM71090E298475

Буквы I, O, Q запрещены стандартом VIN (ISO 3779) - путаются с 1, 0 и 9. Такой VIN вернёт ошибку VIN_INVALID с подсказкой замены.

5. Формат ответа

Успешный ответ (success=1)

{
  "success": 1,
  "record": {
    "vin": "Z94K241BBJR061674",
    "bodyNumber": "Z94K241BBJR061674",
    "regNumber": null,
    "sts": { "num": null, "date": "2021-01-27" },
    "pts": { "num": null, "date": "2017-11-17" },
    "model": "HYUNDAI SOLARIS",
    "engineVolume": "1368",
    "color": "Белый",
    "powerHp": "99.6",
    "powerKwt": "73.3",
    "year": "2017",
    "maxWeight": "1600",
    "weightWithoutLoading": "1210",
    "category": "B",
    "lastRegAction": "В связи с изменением собственника",
    "recordStatus": "действующая",
    "ownershipPeriods": [
      { "personType": "Юридическое лицо", "from": "2017-12-23", "to": "2021-01-27" },
      { "personType": "Физическое лицо", "from": "2021-01-27", "to": null }
    ]
  },
  "restrictions": [],
  "searches": [],
  "status": {
    "restricted": false,
    "wanted": false,
    "spec_wanted": false
  }
}

Данные не найдены или ошибка (success=0)

{ "success": 0 }

Ответ success=0 - бесплатный: стоимость запроса не списывается.

Примеры ответов: успешный, ошибка, источник недоступен

Успешный запрос

GET https://api.avtovincod.ru/score?vin=Z94K241BBJR061674
Authorization: Bearer ВАШ_ТОКЕН

HTTP 200, success: 1. Списание по тарифу метода, сумма и остаток в блоке billing (цифры в примере условные).

{
  "success": 1,
  "found": 1,
  "record": {
    "vin": "Z94K241BBJR061674",
    "bodyNumber": null,
    "model": "LADA GFL110 LADA VESTA",
    "year": "2021",
    "color": "БЕЛЫЙ",
    "category": "B",
    "engineVolume": "1596",
    "powerHp": "106",
    "powerKwt": "78",
    "maxWeight": "1670",
    "weightWithoutLoading": "1230",
    "recordStatus": "действующая",
    "lastRegAction": "Изменение собственника",
    "ownershipPeriods": [
      {
        "personType": "Юридическое лицо",
        "from": "2021-06-01",
        "to": "2023-04-10"
      },
      ...
    ]
  },
  "restrictions": [
    {
      "restriction_name": "Запрет на регистрационные действия",
      "region": "г. Москва",
      "organization_name": "Судебный пристав",
      "reasons": "Документ: 0000 от 01.09.2026",
      "enforcement_number": "00000/00/00000-ИП",
      "enforcement_date": "2026-09-01",
      "osp_address": "г. Москва"
    }
  ],
  "searches": [],
  "status": {
    "restricted": true,
    "wanted": false,
    "spec_wanted": false
  },
  "billing": {
    "charged": 14,
    "currency": "RUB",
    "billed": true,
    "balance": 986,
    "requestId": 1234567
  }
}

Бесплатная проба без списания: https://api.avtovincod.ru/score?vin=X7TEST00000000001 вернёт ответ-образец по этой же схеме с полем testMode: true и charged: 0.

Неуспешный запрос

GET https://api.avtovincod.ru/score?vin=Z94K241BBJR0616
Authorization: Bearer ВАШ_ТОКЕН

Ошибка в параметрах: HTTP 400, код BAD_VIN, текст ошибки можно показать пользователю. Бесплатно.

{
  "success": 0,
  "error": "VIN должен содержать 17 символов, у вас 15. Проверьте ввод.",
  "code": "BAD_VIN"
}

Источник недоступен

GET https://api.avtovincod.ru/score?vin=Z94K241BBJR061674
Authorization: Bearer ВАШ_ТОКЕН

Данные от источника не получены: HTTP 200, success: 0. Бесплатно, повторите запрос позже. Запрос записан в историю с charged: 0.

{
  "success": 0,
  "billing": {
    "charged": 0,
    "currency": "RUB",
    "billed": false,
    "balance": 986,
    "requestId": 1234569
  }
}

6. Описание полей

Корневые поля

ПолеТипОписание
successinteger1 - запрос выполнен, 0 - ошибка или нет данных
recordobject / nullХарактеристики ТС, документы, периоды владения
restrictionsarrayОграничения на регистрационные действия (может быть пустым)
searchesarrayЗаписи о розыске (может быть пустым)
statusobjectБыстрые флаги: restricted, wanted, spec_wanted
error, codestringОписание и код ошибки - только при ошибках

Объект record

ПолеТипОписание
vinstring/nullVIN из базы ГИБДД, нормализованный
bodyNumberstring/nullНомер кузова
regNumberstring/nullГосударственный регистрационный номер
sts.num / sts.datestring/nullСерия-номер и дата выдачи СТС (YYYY-MM-DD)
pts.num / pts.datestring/nullСерия-номер и дата выдачи ПТС (YYYY-MM-DD)
modelstring/nullМарка и модель
engineVolumestring/nullОбъём двигателя, куб. см
colorstring/nullЦвет ТС
powerHp / powerKwtstring/nullМощность в л.с. и кВт
yearstring/nullГод выпуска
maxWeightstring/nullМаксимальная масса, кг
weightWithoutLoadingstring/nullМасса без нагрузки, кг
categorystring/nullКатегория ТС (A, B, C, D)
lastRegActionstring/nullПоследнее регистрационное действие
recordStatusstring/nullСтатус записи: действующая / архивная
ownershipPeriodsarrayПериоды владения - см. ниже

Элемент ownershipPeriods

ПолеТипОписание
personTypestringФизическое лицо / Юридическое лицо
fromstring/nullДата начала владения (YYYY-MM-DD)
tostring/nullДата окончания; null - текущий владелец

7. Ограничения и розыск

Блок restrictions

Массив объектов, каждый - отдельное ограничение (запрет на регистрационные действия, наложенный судебными приставами):

ПолеОписание
restriction_nameВид ограничения
regionРегион инициатора ограничения
organization_nameОрган, наложивший ограничение
reasonsОснование; ФИО маскируется автоматически
enforcement_numberНомер исполнительного производства
enforcement_dateДата ИП (YYYY-MM-DD)
osp_addressАдрес отдела судебных приставов
Пример ответа с ограничением
"restrictions": [
  {
    "restriction_name": "Запрет на регистрационные действия",
    "region": "Краснодарский край",
    "organization_name": "Судебный участок № 62...",
    "reasons": "Документ: 709722738/2340 от 17.03.2026, П*******а О***а В********а...",
    "enforcement_number": "152126/26/23040-ИП",
    "enforcement_date": "2025-12-05",
    "osp_address": "350075, г. Краснодар, ул. Стасова, 180/1"
  }
]

Персональные данные в поле reasons маскируются: Петрусева Ольга Валерьевна → П*******а О***а В********а.

Блок searches

ПолеОписание
modelМарка и модель ТС
model_yearГод выпуска
regionРегион розыска
search_dateДата постановки на учёт в розыске

Блок status

ПолеОписание
restrictedtrue - есть ограничения на рег. действия
wantedtrue - ТС находится в розыске
spec_wantedtrue - ТС в спецрозыске

Для быстрой проверки достаточно блока status. Подробности - в restrictions и searches.

8. Коды ошибок

При ошибке API возвращает success=0 плюс поля error и code:

{ "success": 0, "error": "Токен не передан.", "code": "NO_TOKEN" }
HTTPКодОписаниеПлатный
400VIN_INVALIDНекорректный формат VINНет
401NO_TOKENТокен авторизации не переданНет
401TOKEN_INVALIDТокен недействителенНет
402INSUFFICIENT_BALANCEНедостаточно средствНет
403SCORE_NOT_ALLOWEDЭндпоинт не подключён для токенаНет
403IP_NOT_ALLOWEDIP не в белом спискеНет
429RATE_LIMITПревышен rate limitНет
429SCORE_LIMIT_DAY / _MONTH / _YEARИсчерпан дневной / месячный / годовой лимитНет
200- (success=0)Данные не найдены / техническая ошибкаНет
200NOT_FOUNDДанные по VIN не найдены (история регистрации из архива)Нет
200NOT_AVAILABLEОтчёт не сформирован: в источнике нет данных (отчёты по VIN)Нет
200PROVIDER_TIMEOUTАсинхронный отчёт не получен за отведённое времяНет
400BRAND_NOT_SUPPORTEDОтчёт не делается для этой марки (комплектация VAG)Нет
404TASK_NOT_FOUNDНомер задачи неверный, чужой или от другого методаНет
503-Технические работы на сервисеНет

9. Тарификация

СитуацияСписание
Данные получены от ГИБДДСписывается стоимость запроса
VIN не найден в базе (success=0)Бесплатно
Ошибка API / таймаутБесплатно
Ошибка авторизации, лимит, неверный VINБесплатно

Ключевое правило: списание происходит только когда ГИБДД вернула данные по VIN. Технические ошибки и отсутствие данных - бесплатно.

Стоимость в каждом ответе

Чтобы вести учёт у себя, не сверяясь с кабинетом, в ответ добавляется блок billing. Он есть во всех ответах, которые попали в историю запросов: и в платных, и в бесплатных (тогда charged равен 0).

{
  "success": 1,
  ...
  "billing": {
    "charged": 14,
    "currency": "RUB",
    "billed": true,
    "balance": 481,
    "requestId": 1234567
  }
}
ПолеЗначение
chargedСколько списано за этот запрос, в рублях. 0 - запрос бесплатный
currencyВалюта, всегда RUB
billedtrue - запрос платный и учтён в расходах кабинета
balanceОстаток баланса после этого запроса, в рублях
requestIdНомер запроса в истории кабинета: по нему удобно сверяться и обращаться в поддержку

Те же значения приходят в заголовках X-Charged, X-Balance и X-Request-Id: их можно читать, не разбирая тело ответа. Блока нет, если запрос не дошёл до учёта (неверный или пустой токен, ошибка до проверки доступа) или ничего не стоил по правилам метода (например, ДТП-задача ещё в работе или повторный опрос готовой задачи). Правило простое: нет блока billing - деньги не списаны.

Уже подключены? Ничего менять не нужно.

  • Прежние поля ответа, коды ошибок, HTTP-статусы и правила списания остались как были. Интеграции, настроенные раньше, работают без изменений.
  • Новое только одно: в конец JSON добавлен блок billing, а в ответ пришли заголовки X-Charged, X-Balance, X-Request-Id. Использовать их не обязательно.
  • Если ваш код строго проверяет состав полей ответа (например, схема с запретом лишних полей), разрешите поле billing.

В тестовом режиме блок тоже есть: charged 0, billed false, requestId null.

10. Лимиты

Лимиты раздельные и считаются по платным запросам: дневной (сброс в 00:00 МСК), месячный и годовой. Значение 0 означает отсутствие лимита; лимиты настраиваются администратором. При превышении API возвращает HTTP 429 с соответствующим кодом.

Если нужны заведомо свежие данные, запрос можно выполнить принудительно:

GET /score?vin=Z94K241BBJR061674

11. Примеры интеграции

cURL
curl -X GET "https://api.avtovincod.ru/score?vin=Z94K241BBJR061674" \
  -H "Authorization: Bearer ВАШ_ТОКЕН"
PHP
$token = 'ВАШ_ТОКЕН';
$vin = 'WAUZZZ8UXER030082';

$ch = curl_init("https://api.avtovincod.ru/score?vin={$vin}");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 60,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer {$token}"],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);

if ($data['success'] === 1) {
    $r = $data['record'];
    echo "Модель: {$r['model']}, Год: {$r['year']}\n";
    echo "Владельцев: " . count($r['ownershipPeriods']) . "\n";

    if ($data['status']['restricted']) {
        foreach ($data['restrictions'] as $restr) {
            echo "Ограничение: {$restr['restriction_name']} ({$restr['region']})\n";
        }
    }
    if ($data['status']['wanted']) {
        echo "ТС в розыске!\n";
    }
} elseif (isset($data['code'])) {
    echo "Ошибка: {$data['code']} - {$data['error']}\n";
} else {
    echo "Данные не найдены\n";
}
Python
import requests

response = requests.get(
    "https://api.avtovincod.ru/score",
    params={"vin": "Z94K241BBJR061674"},
    headers={"Authorization": "Bearer ВАШ_ТОКЕН"},
    timeout=60,
)
data = response.json()

if data.get("success") == 1:
    r = data["record"]
    print(f"{r['model']}, {r['year']}, {r['color']}")
    print(f"Ограничения: {data['status']['restricted']}")
    print(f"Розыск: {data['status']['wanted']}")
JavaScript / Node.js
const res = await fetch(
  'https://api.avtovincod.ru/score?vin=Z94K241BBJR061674',
  { headers: { 'Authorization': 'Bearer ВАШ_ТОКЕН' } }
);
const data = await res.json();

if (data.success === 1) {
  const { model, year, color } = data.record;
  console.log(model, year, color);
  console.log('Ограничения:', data.status.restricted);
  console.log('Розыск:', data.status.wanted);
}

12. Безопасность

Токен. Храните как пароль: не публикуйте в открытых репозиториях, конфигах и фронтенде; передавайте только по HTTPS; используйте заголовок Authorization вместо параметра URL. При компрометации - сразу запросите сброс.

Белый список IP. Список разрешённых адресов вы задаёте сами в личном кабинете: раздел «Кабинет», блок «Доступ к API по IP». Подходят IPv4, IPv6 и подсети вида 203.0.113.0/24. Запросы с других адресов отклоняются с кодом IP_NOT_ALLOWED (HTTP 403) без списания. Проверки в личном кабинете, в Telegram-боте, пакетная проверка и мониторинг работают при любом списке.

Rate limiting. Не более 200 запросов в минуту с одного IP (глобально), плюс персональный лимит вашего токена.

13. Рекомендации по интеграции

АспектРекомендация
ТаймаутНе менее 60 секунд - API опрашивает ГИБДД до 45 секунд
RetryHTTP 503 - повторить через 5-10 минут; success=0 без кода - повторить запрос
ХранениеСохраняйте полученные ответы у себя - экономит лимиты
VINУдаляйте пробелы перед отправкой; кириллицу API нормализует сам
ОшибкиВсегда проверяйте success; при success=0 данных нет
БезопасностьНе передавайте токен на клиентскую сторону (JS в браузере)
МониторингЗапрашивайте /stats.php для контроля баланса и лимитов

14. Поддержка

Вопросы по интеграции и подключению: api@avtovincod.ru. Чтобы разбор был быстрым, приложите: ваш идентификатор клиента, дату и время запроса (UTC), использованный VIN и полный ответ API.

Токен ещё не получен - зарегистрируйтесь в личном кабинете: токен выдаётся сразу, после пополнения баланса запросы работают немедленно.