Главная → Документация → История регистрации авто по VIN из архива
История регистрации авто по VIN из архива
Периоды владения, характеристики и данные учётной записи автомобиля из архива проверок, в том же формате, что История регистрации. В ответе дата, на которую данные актуальны (checkedAt), и признак "archival": true. Платно только если найдены периоды владения. Поиск по VIN.
Когда нужен архив
- Сколько было владельцев. Все периоды владения с датами и типом владельца (физическое или юридическое лицо), включая старые машины.
- Быстрый и стабильный ответ. Данные отдаются из архива, без запроса в ГИБДД в момент проверки: подходит для массовых проверок и пакетов.
- Тот же формат. Поле
recordсовпадает с ответом Истории регистрации: подключается без нового разбора ответа.
Архив показывает данные на дату checkedAt. Если нужна регистрация на сегодня, используйте Историю регистрации.
Аутентификация
Токен передаётся заголовком Authorization: Bearer <токен> либо параметром ?token=. Токен один для всех API, он выдаётся в личном кабинете сразу после регистрации.
Эндпоинт
GET https://api.avtovincod.ru/gibdd-archive
Параметры
| Параметр | Описание | Обязателен |
|---|---|---|
vin | VIN, 17 символов (латиница и цифры, без I, O, Q). Русские буквы-двойники переводятся в латиницу автоматически | да |
Пример запроса
curl --max-time 60 -H "Authorization: Bearer $TOKEN" \
"https://api.avtovincod.ru/gibdd-archive?vin=KL1NF487J8K801500"
Пример ответа: данные найдены
{
"success": 1,
"archival": true,
"checkedAt": "2026-04-02",
"record": {
"vin": "KL1NF487J8K801500",
"bodyNumber": "KL1NF487J8K801500",
"regNumber": "Р819•••98",
"sts": {
"num": null,
"date": null
},
"pts": {
"num": null,
"date": null
},
"model": "ШЕВРОЛЕ LACETTI",
"engineVolume": "1399",
"color": "СИНИЙ",
"powerHp": "95.0",
"powerKwt": "69.9",
"year": "2007",
"maxWeight": null,
"weightWithoutLoading": null,
"category": "B",
"lastRegAction": null,
"recordStatus": "действующая",
"ownershipPeriods": [
{
"personType": "Физическое лицо",
"from": "2008-01-26",
"to": "2017-05-16"
},
{
"personType": "Физическое лицо",
"from": "2017-05-16",
"to": "2018-01-18"
},
{
"personType": "Физическое лицо",
"from": "2018-01-18",
"to": "2018-01-20"
},
{
"personType": "Физическое лицо",
"from": "2018-01-20",
"to": "2019-10-09"
},
{
"personType": "Физическое лицо",
"from": "2019-10-09",
"to": "2019-10-22"
},
{
"personType": "Физическое лицо",
"from": "2019-10-22",
"to": null
}
]
},
"billing": {
"charged": 1.5,
"currency": "RUB",
"billed": true,
"balance": 998.5,
"requestId": 1234567
}
}
Последний период с "to": null: этот владелец владел машиной на дату checkedAt. Госномер в примере скрыт.
Поля ответа
| Поле | Значение |
|---|---|
archival | всегда true: данные из архива, а не из запроса в ГИБДД в момент проверки |
checkedAt | дата, на которую данные актуальны (YYYY-MM-DD) |
record.vin, bodyNumber, regNumber | VIN, номер кузова, госномер на дату данных |
record.sts, record.pts | номер и дата СТС и ПТС: {"num", "date"}, если были в данных |
record.model, year, color | марка и модель, год выпуска, цвет |
record.engineVolume, powerHp, powerKwt | объём двигателя (куб. см), мощность (л.с. и кВт) |
record.maxWeight, weightWithoutLoading | разрешённая максимальная масса и масса без нагрузки, кг |
record.category | категория ТС (A, B, C, D) |
record.lastRegAction | последнее регистрационное действие, если было в данных |
record.recordStatus | статус записи: действующая или архивная |
record.ownershipPeriods[] | периоды владения по порядку: personType (Физическое лицо / Юридическое лицо), from, to (YYYY-MM-DD; null у последнего - владелец на дату данных) |
Поля, которых нет в данных, приходят null. Состав полей record такой же, как у Истории регистрации.
Пример ответа: данные не найдены
По VIN нет периодов владения. HTTP 200, бесплатно:
{
"success": 0,
"error": "Данные не найдены.",
"code": "NOT_FOUND"
}
Коды ошибок
| Код | Значение |
|---|---|
NOT_FOUND | данные по VIN не найдены (HTTP 200, бесплатно) |
NO_TOKEN | токен не передан |
TOKEN_INVALID | токен недействителен или деактивирован |
NOT_ALLOWED | API не подключён вашему токену |
API_DISABLED | API временно отключён |
IP_NOT_ALLOWED | запрос с IP вне вашего белого списка |
INPUT_REQUIRED | не передан vin |
BAD_VIN | VIN не 17 символов либо содержит недопустимые знаки |
INSUFFICIENT_BALANCE | недостаточно средств на балансе |
RATE_LIMIT | превышен лимит запросов в минуту |
RATE_LIMIT_IP | слишком много запросов с одного IP |
SERVICE_UNAVAILABLE | источник временно недоступен (HTTP 503), повторите позже |
Ошибка приходит в виде {"success": 0, "error": "...", "code": "..."} и никогда не тарифицируется.
Примеры кода: PHP, Python, JavaScript, Go, Java, C#, Ruby, 1С
Примеры готовы к запуску: токен берётся из переменной окружения AVC_TOKEN, а в запросе стоит тестовое значение (vin=X7TEST00000000001). По тестовым значениям приходит ответ-образец по схеме метода: бесплатно, без списания и даже при нулевом балансе, с полем "testMode": true. Так интеграцию можно собрать и проверить до первого платного запроса. Все тестовые значения.
curl -s --max-time 60 -G "https://api.avtovincod.ru/gibdd-archive" \
--data-urlencode "vin=X7TEST00000000001" \
-H "Authorization: Bearer $AVC_TOKEN"<?php
$url = 'https://api.avtovincod.ru/gibdd-archive?' . http_build_query(['vin' => 'X7TEST00000000001']);
$ch = curl_init($url);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60,
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/gibdd-archive", params={"vin": "X7TEST00000000001"},
headers={"Authorization": "Bearer " + os.environ["AVC_TOKEN"]}, timeout=60)
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/gibdd-archive?" + new URLSearchParams({ vin: "X7TEST00000000001" });
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AVC_TOKEN}` },
signal: AbortSignal.timeout(60000) });
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/gibdd-archive?"+q.Encode(), nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("AVC_TOKEN"))
resp, err := (&http.Client{Timeout: 60 * 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/gibdd-archive?" + q))
.header("Authorization", "Bearer " + System.getenv("AVC_TOKEN"))
.timeout(Duration.ofSeconds(60)).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(60) };
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("AVC_TOKEN"));
var url = "https://api.avtovincod.ru/gibdd-archive?" + "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/gibdd-archive")
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: 60) { |h| h.request(req) }
d = JSON.parse(res.body)
puts d["success"] == 1 ? d : "#{d["code"]}: #{d["error"]}"Токен = "ВАШ_ТОКЕН";
Соединение = Новый HTTPСоединение("api.avtovincod.ru", 443, , , , 60, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/gibdd-archive?" + "vin=" + КодироватьСтроку("X7TEST00000000001", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
Если Данные.success = 1 Тогда
Сообщить("Проверка выполнена");
Иначе
Сообщить(Данные.code + ": " + Данные.error);
КонецЕсли;Бесплатных тестовых периодов и долгих согласований нет: пополните баланс в личном кабинете и сразу проверяйте реальные машины. Токен выдаётся при регистрации, деньги списываются только по правилам метода (раздел "Тарификация"). Нужен доступ из ИИ-ассистента: MCP-сервер.
Примеры ответов: успешный, ошибка, источник недоступен
Успешный запрос
GET https://api.avtovincod.ru/gibdd-archive?vin=KL1NF487J8K801500
Authorization: Bearer ВАШ_ТОКЕН
HTTP 200, success: 1, найдены периоды владения. Списание по тарифу метода, сумма и остаток в блоке billing (цифры в примере условные).
{
"success": 1,
"archival": true,
"checkedAt": "2026-04-02",
"record": {
"vin": "KL1NF487J8K801500",
...
"ownershipPeriods": [ ... ]
},
"billing": {
"charged": 1.5,
"currency": "RUB",
"billed": true,
"balance": 998.5,
"requestId": 1234567
}
}
Бесплатная проба без списания: https://api.avtovincod.ru/gibdd-archive?vin=X7TEST00000000001 вернёт ответ-образец по этой же схеме с полем testMode: true и charged: 0.
Неуспешный запрос
GET https://api.avtovincod.ru/gibdd-archive?vin=KL1NF487J8K80150
Authorization: Bearer ВАШ_ТОКЕН
Ошибка в параметрах: HTTP 400, код BAD_VIN, текст ошибки можно показать пользователю. Бесплатно.
{
"success": 0,
"error": "VIN должен содержать 17 символов, у вас 16. Проверьте ввод.",
"code": "BAD_VIN"
}
Источник недоступен
GET https://api.avtovincod.ru/gibdd-archive?vin=KL1NF487J8K801500
Authorization: Bearer ВАШ_ТОКЕН
Источник временно недоступен: HTTP 503, SERVICE_UNAVAILABLE. Бесплатно, повторите запрос позже.
{
"success": 0,
"error": "Источник временно недоступен. Повторите позже, запрос не тарифицирован.",
"code": "SERVICE_UNAVAILABLE"
}
Тарификация
Списание только когда в ответе есть периоды владения (success: 1). Ответ NOT_FOUND и все ошибки бесплатны. Цена и подключение метода в личном кабинете.
В ответ добавляется блок 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 - инструмент
registration_history_archive; всего инструментов 43. - Цены и списания как у API, в результате тоже есть блок
billing. Тестовые значения работают бесплатно. - Инструкция по подключению: avtovincod.ru/docs/mcp/
Для генераторов клиентов и ИИ-агентов: OpenAPI-спецификация метода (YAML). Все методы сразу: /openapi.yaml.
Смежные методы
- История регистрации: те же данные на сегодня, по VIN или номеру кузова.
- История регистрации, ограничения и розыск: запреты на регистрационные действия и розыск.
- История госномеров: какие номера были у машины.
- Госномер по VIN и VIN по госномеру.
Частые вопросы
Чем архив отличается от Истории регистрации?
История регистрации запрашивает данные ГИБДД в момент проверки. Архив отдаёт сохранённые данные прошлых проверок на дату checkedAt: ответ быстрее и стабильнее, но изменения после этой даты в нём не видны. Формат ответа одинаковый, поэтому архив легко подключить там, где уже разбирается История регистрации.
Что значит "to": null у последнего периода?
Этот владелец владел машиной на дату данных checkedAt. Владеет ли он ей сейчас, архив не знает: для текущих данных используйте Историю регистрации.
Можно ли искать по госномеру или номеру кузова?
Нет, только по VIN. Госномер по VIN и VIN по госномеру есть отдельными методами.
Когда списываются деньги?
Только если в ответе есть периоды владения. Ответ NOT_FOUND и любые ошибки бесплатны.
Почему нет номера СТС или ПТС?
Архив хранит то, что было в данных на дату проверки. Если номера документов не было, поле приходит null. Список периодов владения при этом полный.
Проверить без программиста
В личном кабинете есть консоль проверки: введите номер и получите ответ в читаемом виде, без кода.