Главная → Документация → Реестр залогов
Проверка авто на залог: API реестра залогов
Проверка автомобиля в реестре уведомлений о залоге движимого имущества Федеральной нотариальной палаты: залогодатели и залогодержатели, дата и номер уведомления, история изменений записи и статус: залог действует сейчас или уже прекращён. Поиск по VIN, номеру кузова или номеру шасси.
Аутентификация
Единый API-токен для всех API выдаётся сразу после регистрации в личном кабинете. Передавайте его в заголовке:
Authorization: Bearer ВАШ_ТОКЕН
Эндпоинт
GET https://api.avtovincod.ru/pledge?vin=SALLMAMH4CA388911
Authorization: Bearer ВАШ_ТОКЕН
| Параметр | Описание |
|---|---|
| vin | VIN, от 11 до 17 символов (латиница без I, O, Q). |
| body | Номер кузова, от 4 до 25 символов. Указывается вместо VIN. Синоним: bodyNumber. |
| chassis | Номер шасси, от 4 до 25 символов. Указывается вместо VIN. Синоним: chassisNumber. |
Как читать ответ
| Ответ | Что это значит | Платно |
|---|---|---|
| success 1, found 0 | Записей в реестре нет: машина в залоге не была. | да |
| success 1, active_count больше 0 | Машина в залоге сейчас. | да |
| success 1, found больше 0, active_count 0 | Сейчас не в залоге, но раньше была: залог прекращён. | да |
| success 0, code PROVIDER_FAIL | Реестр не ответил, проверка не выполнена. Повторите позже. | нет |
| success 0, другой code | Ошибка запроса (токен, формат, баланс), см. коды ошибок. | нет |
Всегда сначала проверяйте success. Ответ success: 0 не значит "залога нет": проверка не состоялась.
Пример 1. Залогов нет
Записей в реестре нет. Проверка выполнена и тарифицируется.
{
"success": 1,
"query": { "vin": "X96330232C0778388" },
"found": 0,
"active_count": 0,
"records": []
}
Пример 2. Машина в залоге
Действующий залог: status равен active, end_date равен null, active_count 1.
{
"success": 1,
"query": { "vin": "LVVDB21B2ND730991" },
"found": 1,
"active_count": 1,
"records": [
{
"register_date": "2022-12-05",
"status": "active",
"start_date": "2022-12-05",
"end_date": null,
"number": "2022-007-475770-694",
"pledgor_hidden": 0,
"pledgee_hidden": 0,
"objects": [
"VIN LVVDB21B2ND730991",
"Номер кузова LVVDB21B2ND730991"
],
"pledgors": [
{ "type": "person", "name": "С****й В********ч Ю****о, 01.01.1980" }
],
"pledgees": [
{ "type": "org",
"name": "Коммерческий Банк \"ЛОКО-Банк\" (акционерное общество)" }
],
"history": [
{ "date": "05.12.2022", "type": "Возникновение", "number": "2022-007-475770-694/0" }
]
}
]
}
Пример 3. Залог был, но прекращён
Запись в реестре осталась (found 1), но в истории есть исключение: status равен terminated, end_date заполнен, действующих залогов нет.
{
"success": 1,
"query": { "vin": "JTNBV58E80J192913" },
"found": 1,
"active_count": 0,
"records": [
{
"register_date": "2025-07-28",
"status": "terminated",
"start_date": "2025-07-28",
"end_date": "2026-09-30",
"number": "2025-011-584944-137",
"pledgor_hidden": 0,
"pledgee_hidden": 0,
"objects": [],
"pledgors": [ { "type": "person", "name": "Данные не представлены" } ],
"pledgees": [ { "type": "person", "name": "Данные не представлены" } ],
"history": [
{ "date": "28.07.2025", "type": "Возникновение", "number": "2025-011-584944-137/0" },
{ "date": "30.09.2026", "type": "Исключение", "number": "2025-011-584944-137/1" }
]
}
]
}
Пример 4. Реестр не ответил
HTTP 200, но success: 0: проверка не выполнена, деньги не списаны. Повторите запрос позже. Это не "залогов нет".
{
"success": 0,
"error": "Проверка не выполнена",
"code": "PROVIDER_FAIL"
}
Пример 5. Ошибки запроса
Ошибки запроса приходят с HTTP-кодом 4xx и тоже не тарифицируются.
HTTP 400
{ "success": 0, "error": "Неверный формат VIN. Пример: SALLMAMH4CA388911.", "code": "VIN_INVALID" }
HTTP 401
{ "success": 0, "error": "Токен не передан. Header: Authorization: Bearer TOKEN или ?token=TOKEN",
"code": "NO_TOKEN" }
HTTP 402
{ "success": 0, "error": "Недостаточно средств. ",
"code": "INSUFFICIENT_BALANCE" }
Действует залог или прекращён
Запись в реестре остаётся и после погашения кредита: в её историю добавляется уведомление об исключении. Поэтому само наличие записи (found больше 0) ещё не значит, что машина в залоге. Смотрите на поля статуса (добавлены 08.10.2026, остальные поля не менялись):
| Поле | Что означает |
|---|---|
| active_count | Сколько залогов действует сейчас. 0 значит машина не в залоге. |
| records[].status | active: залог действует; terminated: залог прекращён, в истории есть исключение. |
| records[].start_date | Дата возникновения залога, ГГГГ-ММ-ДД. |
| records[].end_date | Дата исключения из реестра, ГГГГ-ММ-ДД. Пока залог действует, null. |
| found | Сколько записей есть в реестре, включая прекращённые. |
Имена физических лиц маскируются. Если реестр не раскрывает стороны залога, в name приходит "Данные не представлены".
Пустой список records при success: 1 означает, что реестр отработал и залогов по автомобилю не найдено. Проверять один и тот же автомобиль полезно по VIN и по номеру кузова: залог мог быть зарегистрирован по любому из идентификаторов.
Коды ошибок
| HTTP · code | Что означает |
|---|---|
| 400 · VIN_INVALID / BODY_INVALID / CHASSIS_INVALID | Неверный формат идентификатора. |
| 400 · INPUT_REQUIRED | Не указан ни VIN, ни номер кузова, ни номер шасси. |
| 200 · PROVIDER_FAIL | Реестр не ответил, проверка не выполнена. Запрос не тарифицирован, повторите позже. Приходит с HTTP 200 и success: 0. |
| 403 · NOT_ALLOWED / API_DISABLED | API не подключён для токена или временно отключён. Запросите доступ в кабинете. |
| 401 · NO_TOKEN / TOKEN_INVALID | Токен не передан, неверен или деактивирован. Возьмите актуальный в кабинете. |
| 402 · INSUFFICIENT_BALANCE | Недостаточно средств. Пополните баланс в кабинете (раздел «Платежи»). |
| 403 · IP_NOT_ALLOWED | IP не входит в ваш белый список (если он настроен). |
| 429 · RATE_LIMIT / RATE_LIMIT_IP | Превышена частота запросов в минуту. Повторите через минуту. |
| 503 · SERVICE_UNAVAILABLE | Источник временно недоступен. Повторите позже, запрос не тарифицирован. |
Пример на cURL
curl -s --max-time 180 "https://api.avtovincod.ru/pledge?vin=SALLMAMH4CA388911" \\
-H "Authorization: Bearer ВАШ_ТОКЕН"
Примеры кода: PHP, Python, JavaScript, Go, Java, C#, Ruby, 1С
Примеры готовы к запуску: токен берётся из переменной окружения AVC_TOKEN, а в запросе стоит тестовое значение (vin=X7TEST00000000001). По тестовым значениям приходит ответ-образец по схеме метода: бесплатно, без списания и даже при нулевом балансе, с полем "testMode": true. Так интеграцию можно собрать и проверить до первого платного запроса. Все тестовые значения.
curl -s --max-time 90 -G "https://api.avtovincod.ru/pledge" \
--data-urlencode "vin=X7TEST00000000001" \
-H "Authorization: Bearer $AVC_TOKEN"<?php
$url = 'https://api.avtovincod.ru/pledge?' . 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/pledge", 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/pledge?" + 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/pledge?"+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/pledge?" + 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/pledge?" + "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/pledge")
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Запрос("/pledge?" + "vin=" + КодироватьСтроку("X7TEST00000000001", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
Если Данные.success = 1 Тогда
Сообщить("Проверка выполнена");
Иначе
Сообщить(Данные.code + ": " + Данные.error);
КонецЕсли;Бесплатных тестовых периодов и долгих согласований нет: пополните баланс в личном кабинете и сразу проверяйте реальные машины. Токен выдаётся при регистрации, деньги списываются только по правилам метода (раздел "Тарификация"). Нужен доступ из ИИ-ассистента: MCP-сервер.
Примеры ответов: успешный, ошибка, источник недоступен
Успешный запрос
GET https://api.avtovincod.ru/pledge?vin=SALLMAMH4CA388911
Authorization: Bearer ВАШ_ТОКЕН
HTTP 200, success: 1. Списание по тарифу метода, сумма и остаток в блоке billing (цифры в примере условные).
{
"success": 1,
"query": {
"vin": "SALLMAMH4CA388911"
},
"found": 1,
"active_count": 1,
"records": [
{
"register_date": "2023-04-12",
"status": "active",
"start_date": "2023-04-12",
"end_date": null,
"number": "2023-000-000000-000",
"pledgor_hidden": 0,
"pledgee_hidden": 0,
"objects": [
"VIN SALLMAMH4CA388911"
],
"pledgors": [
{
"type": "person",
"name": "Т***т Т***т Т***ч, 01.01.1990"
}
],
"pledgees": [
{
"type": "org",
"name": "Банк (акционерное общество)"
}
],
"history": [
{
"date": "12.04.2023",
"type": "Возникновение",
"number": "2023-000-000000-000/0"
}
]
}
],
"billing": {
"charged": 0.6,
"currency": "RUB",
"billed": true,
"balance": 999.4,
"requestId": 1234567
}
}
Бесплатная проба без списания: https://api.avtovincod.ru/pledge?vin=X7TEST00000000001 вернёт ответ-образец по этой же схеме с полем testMode: true и charged: 0.
Неуспешный запрос
GET https://api.avtovincod.ru/pledge?vin=XTA
Authorization: Bearer ВАШ_ТОКЕН
Ошибка в параметрах: HTTP 400, код VIN_INVALID, текст ошибки можно показать пользователю. Бесплатно.
{
"success": 0,
"error": "Неверный формат VIN. Пример: SALLMAMH4CA388911.",
"code": "VIN_INVALID"
}
Источник недоступен
GET https://api.avtovincod.ru/pledge?vin=SALLMAMH4CA388911
Authorization: Bearer ВАШ_ТОКЕН
Источник не выполнил проверку: HTTP 200, PROVIDER_FAIL. Бесплатно, повторите запрос позже. Блока billing нет: запрос не списан.
{
"success": 0,
"error": "Проверка не выполнена",
"code": "PROVIDER_FAIL"
}
Тарификация
Списание происходит, когда реестр отработал (success: 1), даже если залогов не найдено. Если ни один источник не ответил, возвращается PROVIDER_FAIL и запрос бесплатный. Ошибки не тарифицируются. Актуальная цена и баланс доступны в личном кабинете.
В ответ добавляется блок billing: сколько списано за этот запрос (charged, в рублях), платный ли он (billed), остаток баланса после запроса (balance) и номер в истории запросов (requestId). Те же данные в заголовках X-Charged, X-Balance, X-Request-Id. Нет блока - запрос не списан. Подробнее о блоке billing.
Уже подключены? Ничего менять не нужно.
- Прежние поля ответа, коды ошибок, HTTP-статусы и правила списания остались как были. Интеграции, настроенные раньше, работают без изменений.
- Новое только одно: в конец JSON добавлен блок
billing, а в ответ пришли заголовки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 - инструмент
pledge_check; всего инструментов 45. - Цены и списания как у API, в результате тоже есть блок
billing. Тестовые значения работают бесплатно. - Инструкция по подключению: avtovincod.ru/docs/mcp/
Попробуйте прямо сейчас. Регистрация за минуту, токен сразу, пополнение картой. Проверить можно и без кода: в кабинете есть консоль проверки.
Создать аккаунт