Главная → Документация → История полисов ОСАГО
История полисов ОСАГО
Все полисы ОСАГО автомобиля за годы по VIN, госномеру или номеру кузова: страховые компании, серии и номера, сроки и периоды использования, регион, цель использования (личная, такси), ограничение по водителям и тип собственника. Ответ в JSON, без персональных данных.
Что показывает история полисов
Метод "Полисы ОСАГО" отвечает на вопрос, есть ли у машины полис сейчас. История полисов показывает всю жизнь автомобиля в страховании: с какого года он застрахован, как часто менялись страховые компании и регионы, были ли перерывы без полиса и для чего машину страховали.
- Работа в такси. Цель использования "Такси" в одном из прошлых полисов прямо говорит, что машина возила пассажиров: повышенный износ и, как правило, большой пробег.
- Юридическое лицо собственником. Лизинг, служебная или корпоративная машина: ей могли пользоваться много разных водителей.
- Перерывы без полиса. Месяцы без ОСАГО бывают, когда машина стояла после ДТП, была в ремонте или ездила без страховки.
- Смена регионов. Перегон из другого региона или частая смена места использования.
- Ограничение по водителям. Полис "только вписанные водители" против "без ограничений" и число вписанных водителей.
Без персональных данных
В ответе только сведения о полисе и автомобиле. ФИО, даты рождения и ИНН собственника и страхователя, а также КБМ и стоимость полиса не отдаются. Вместо этого есть тип лица: Физическое лицо или Юридическое лицо.
Аутентификация
Токен передаётся заголовком Authorization: Bearer <токен> либо параметром ?token=. Токен один для всех API, он выдаётся в личном кабинете сразу после регистрации.
Эндпоинт
GET https://api.avtovincod.ru/osago-history
Параметры
| Параметр | Описание | Обязателен |
|---|---|---|
vin | VIN автомобиля, 17 символов | да* |
plate | госномер РФ кириллицей или латиницей, например А001АА77 (синоним regNumber) | да* |
body | номер кузова, 6-17 символов, с дефисом или без (синоним bodyNumber) | да* |
* Передайте ровно один из параметров vin, plate, body, иначе вернётся INPUT_CONFLICT. Кириллицу в адресе кодируйте в UTF-8 или передавайте номер латиницей: ?plate=A001AA77 даст тот же результат.
Время ответа
Источник собирает историю по всем полисам, поэтому ответ приходит не мгновенно: обычно за 15-60 секунд, иногда до 2 минут. Ставьте таймаут на своей стороне не меньше 150 секунд. Если источник не успел, приходит PROVIDER_TIMEOUT (бесплатно): повторите запрос через 1-2 минуты, ответ уже будет готов и придёт быстрее.
Пример запроса
curl --max-time 150 -H "Authorization: Bearer $TOKEN" \
"https://api.avtovincod.ru/osago-history?vin=JHMGD18508S000001"
curl --max-time 150 -G -H "Authorization: Bearer $TOKEN" \
"https://api.avtovincod.ru/osago-history" --data-urlencode "plate=А001АА77"
curl --max-time 150 -H "Authorization: Bearer $TOKEN" \
"https://api.avtovincod.ru/osago-history?body=GP2-3100383"
Пример ответа: полисы найдены
{
"success": 1,
"query": { "regNumber": "А001АА77" },
"found": 2,
"active": 1,
"policies": [
{
"companyName": "СПАО \"Ингосстрах\"",
"policySerial": "ХХХ",
"policyNumber": "0244426188",
"status": "Действует",
"isActive": true,
"startDate": "2025-11-03",
"endDate": "2026-11-02",
"createDate": "2025-11-03",
"periods": [ { "start": "2025-11-03", "end": "2026-11-02" } ],
"region": "Приморский край, г Уссурийск",
"purpose": "Личная",
"purposeType": "PERSONAL",
"driversLimited": true,
"driversCount": 2,
"ownerType": "Физическое лицо",
"insurantType": "Физическое лицо",
"vin": null,
"bodyNumber": "GP23100383",
"chassisNumber": null,
"regNumber": "А001АА77",
"brand": "Honda",
"model": "FIT",
"markmodel": "Honda FIT",
"category": "B",
"powerHp": 88,
"maxWeight": null,
"passengersCount": null,
"hasTrailer": false,
"followsToRegistration": false
},
{
"companyName": "САО \"ВСК\"",
"policySerial": "ТТТ",
"policyNumber": "7012345678",
"status": "Прекратил действие",
"isActive": false,
"startDate": "2023-10-20",
"endDate": "2024-10-19",
"createDate": "2023-10-19",
"periods": [ { "start": "2023-10-20", "end": "2024-04-19" },
{ "start": "2024-06-01", "end": "2024-10-19" } ],
"region": "г Москва",
"purpose": "Такси",
"purposeType": "TAXI",
"driversLimited": false,
"driversCount": null,
"ownerType": "Юридическое лицо",
"insurantType": "Юридическое лицо",
"vin": null,
"bodyNumber": "GP23100383",
"chassisNumber": null,
"regNumber": "А001АА77",
"brand": "Honda",
"model": "FIT",
"markmodel": "Honda FIT",
"category": "B",
"powerHp": 88,
"maxWeight": null,
"passengersCount": null,
"hasTrailer": false,
"followsToRegistration": false
}
]
}
Поля ответа
| Поле | Значение |
|---|---|
found | сколько полисов в истории, 0 значит не найдено |
active | сколько из них действует сейчас |
policies[] | полисы от новых к старым |
companyName | страховая компания |
policySerial / policyNumber | серия и номер полиса |
status / isActive | "Действует" или "Прекратил действие" и то же логическим полем |
startDate / endDate / createDate | начало и конец срока страхования, дата оформления, ГГГГ-ММ-ДД |
periods[] | периоды использования внутри срока: у сезонных полисов их несколько |
region | регион использования из полиса |
purpose / purposeType | цель использования: "Личная", "Такси", "Учебная езда" и т. п.; машинный код, например PERSONAL, TAXI |
driversLimited / driversCount | полис с ограничением по водителям и сколько водителей вписано |
ownerType / insurantType | тип собственника и страхователя: физическое или юридическое лицо |
vin / bodyNumber / chassisNumber / regNumber | идентификаторы автомобиля, записанные в полисе |
brand / model / markmodel | марка и модель из полиса |
category / powerHp | категория ТС и мощность, л. с. |
maxWeight / passengersCount / hasTrailer | разрешённая масса, число мест, использование с прицепом |
followsToRegistration | полис оформлен на машину, следующую к месту регистрации или техосмотра |
Схема ответа постоянная: если источник не знает значения, приходит null, ключ остаётся на месте. Идентификаторы в разных полисах могут отличаться: например, госномер менялся, а VIN в старых полисах не указан.
Пример ответа: полисов нет
Проверка выполнена, в базе полисов по этому идентификатору нет. Ответ успешный, тарифицируется. Если искали по госномеру, попробуйте по VIN: номер мог смениться.
{
"success": 1,
"query": { "vin": "XTA21099043512345" },
"found": 0,
"active": 0,
"policies": []
}
Пример ответа: источник не успел
{
"success": 0,
"error": "Источник ещё собирает историю полисов. Повторите запрос через 1-2 минуты: ответ будет готов, списание только за полученный результат.",
"code": "PROVIDER_TIMEOUT"
}
Бесплатно. Повторите тот же запрос через 1-2 минуты: проверка у источника продолжается, повтор её дождётся.
Коды ошибок
| Код | Значение |
|---|---|
NO_TOKEN | токен не передан |
TOKEN_INVALID | токен недействителен или деактивирован |
NOT_ALLOWED | API не подключён вашему токену |
API_DISABLED | API временно отключён |
IP_NOT_ALLOWED | запрос с IP вне вашего белого списка |
INPUT_REQUIRED | не передан ни vin, ни plate, ни body |
INPUT_CONFLICT | передано больше одного параметра поиска |
BAD_VIN | VIN не 17 символов либо содержит недопустимые знаки |
BAD_PLATE | неверный формат госномера или буква, которой нет на номерах РФ |
BAD_BODY | номер кузова короче 6 или длиннее 17 символов |
PROVIDER_TIMEOUT | источник ещё собирает историю, повторите через 1-2 минуты |
INSUFFICIENT_BALANCE | недостаточно средств на балансе |
RATE_LIMIT | превышен лимит запросов в минуту |
RATE_LIMIT_IP | слишком много запросов с одного IP |
SERVICE_UNAVAILABLE | сервис временно недоступен, повторите позже |
PROVIDER_FAIL | источник не ответил, повторите позже |
Ошибка приходит в виде {"success": 0, "error": "...", "code": "..."} и никогда не тарифицируется. PROVIDER_FAIL и PROVIDER_TIMEOUT приходят с HTTP 200: проверяйте поле success.
Примеры кода: PHP, Python, JavaScript, Go, Java, C#, Ruby, 1С
Примеры готовы к запуску: токен берётся из переменной окружения AVC_TOKEN, а в запросе стоит тестовое значение (vin=X7TEST00000000001). По тестовым значениям приходит ответ-образец по схеме метода: бесплатно, без списания и даже при нулевом балансе, с полем "testMode": true. Так интеграцию можно собрать и проверить до первого платного запроса. Все тестовые значения.
curl -s --max-time 150 -G "https://api.avtovincod.ru/osago-history" \
--data-urlencode "vin=X7TEST00000000001" \
-H "Authorization: Bearer $AVC_TOKEN"<?php
$url = 'https://api.avtovincod.ru/osago-history?' . http_build_query(['vin' => 'X7TEST00000000001']);
$ch = curl_init($url);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 150,
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/osago-history", params={"vin": "X7TEST00000000001"},
headers={"Authorization": "Bearer " + os.environ["AVC_TOKEN"]}, timeout=150)
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/osago-history?" + new URLSearchParams({ vin: "X7TEST00000000001" });
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AVC_TOKEN}` },
signal: AbortSignal.timeout(150000) });
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/osago-history?"+q.Encode(), nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("AVC_TOKEN"))
resp, err := (&http.Client{Timeout: 150 * 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/osago-history?" + q))
.header("Authorization", "Bearer " + System.getenv("AVC_TOKEN"))
.timeout(Duration.ofSeconds(150)).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(150) };
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("AVC_TOKEN"));
var url = "https://api.avtovincod.ru/osago-history?" + "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/osago-history")
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: 150) { |h| h.request(req) }
d = JSON.parse(res.body)
puts d["success"] == 1 ? d : "#{d["code"]}: #{d["error"]}"Токен = "ВАШ_ТОКЕН";
Соединение = Новый HTTPСоединение("api.avtovincod.ru", 443, , , , 150, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/osago-history?" + "vin=" + КодироватьСтроку("X7TEST00000000001", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
Если Данные.success = 1 Тогда
Сообщить("Проверка выполнена");
Иначе
Сообщить(Данные.code + ": " + Данные.error);
КонецЕсли;Бесплатных тестовых периодов и долгих согласований нет: пополните баланс в личном кабинете и сразу проверяйте реальные машины. Токен выдаётся при регистрации, деньги списываются только по правилам метода (раздел "Тарификация"). Нужен доступ из ИИ-ассистента: MCP-сервер.
Примеры ответов: успешный, ошибка, источник недоступен
Успешный запрос
GET https://api.avtovincod.ru/osago-history?vin=XTAGFL110MY463366
Authorization: Bearer ВАШ_ТОКЕН
HTTP 200, success: 1. Списание по тарифу метода, сумма и остаток в блоке billing (цифры в примере условные).
{
"success": 1,
"query": {
"vin": "XTAGFL110MY463366"
},
"found": 2,
"active": 1,
"policies": [
{
"companyName": "АО \"Страховая компания\"",
"policySerial": "ХХХ",
"policyNumber": "0000000001",
"status": "Действует",
"isActive": true,
"startDate": "2026-04-01",
"endDate": "2027-03-31",
"createDate": "2026-04-01",
"periods": [
{
"start": "2026-04-01",
"end": "2027-03-31"
}
],
"region": "г Москва",
"purpose": "Личная",
"purposeType": "PERSONAL",
"driversLimited": true,
"driversCount": 2,
"ownerType": "Физическое лицо",
"insurantType": "Физическое лицо",
"vin": "XTAGFL110MY463366",
"bodyNumber": null,
"chassisNumber": null,
"regNumber": "А123ВС777",
"brand": "LADA",
"model": "VESTA",
"markmodel": "LADA VESTA",
"category": "B",
"powerHp": 106,
"maxWeight": null,
"passengersCount": null,
"hasTrailer": false,
"followsToRegistration": false
},
...
],
"billing": {
"charged": 1.7,
"currency": "RUB",
"billed": true,
"balance": 998.3,
"requestId": 1234567
}
}
Бесплатная проба без списания: https://api.avtovincod.ru/osago-history?vin=X7TEST00000000001 вернёт ответ-образец по этой же схеме с полем testMode: true и charged: 0.
Неуспешный запрос
GET https://api.avtovincod.ru/osago-history?vin=XTAGFL110MY46336
Authorization: Bearer ВАШ_ТОКЕН
Ошибка в параметрах: HTTP 400, код BAD_VIN, текст ошибки можно показать пользователю. Бесплатно.
{
"success": 0,
"error": "VIN должен содержать 17 символов, у вас 16. Проверьте ввод.",
"code": "BAD_VIN"
}
Источник недоступен
GET https://api.avtovincod.ru/osago-history?vin=XTAGFL110MY463366
Authorization: Bearer ВАШ_ТОКЕН
Источник не выполнил проверку: HTTP 200, PROVIDER_FAIL. Бесплатно, повторите запрос позже. Запрос записан в историю с charged: 0.
{
"success": 0,
"error": "Проверка не выполнена",
"code": "PROVIDER_FAIL",
"billing": {
"charged": 0,
"currency": "RUB",
"billed": false,
"balance": 998.3,
"requestId": 1234569
}
}
Тарификация
Деньги списываются один раз за выполненную проверку (success: 1), в том числе если полисов нет (found: 0). Ошибки и PROVIDER_TIMEOUT бесплатны. Цена в личном кабинете.
В ответ добавляется блок 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 - инструмент
osago_history; всего инструментов 43. - Цены и списания как у API, в результате тоже есть блок
billing. Тестовые значения работают бесплатно. - Инструкция по подключению: avtovincod.ru/docs/mcp/
Смежные методы
- Полисы ОСАГО: действующий полис на дату, быстрый ответ.
- Проверка такси: разрешения на работу в такси.
- История регистрации: владельцы, характеристики, ПТС и СТС.
- История пробега: пробег по техосмотрам.
Частые вопросы
Как узнать историю полисов ОСАГО автомобиля?
Отправьте GET-запрос https://api.avtovincod.ru/osago-history?vin=VIN (или ?plate=госномер, ?body=номер кузова) с токеном. В ответе все полисы автомобиля от новых к старым: страховая, номер, сроки, регион, цель использования.
Чем история полисов отличается от проверки ОСАГО?
Проверка ОСАГО показывает полис на дату, обычно действующий. История показывает все полисы за годы, включая прекращённые: так видны работа в такси, смена регионов, юрлицо собственником и перерывы без страховки.
Как по истории ОСАГО понять, что машина работала в такси?
Посмотрите поле purpose или purposeType в полисах: значение "Такси" (TAXI) хотя бы в одном полисе означает, что машину страховали для перевозки пассажиров.
Есть ли в ответе ФИО владельца?
Нет. Персональные данные, КБМ и стоимость полиса не отдаются. Есть только тип собственника и страхователя: физическое или юридическое лицо.
Сколько ждать ответа?
Обычно 15-60 секунд, иногда до 2 минут. Если источник не успел, придёт бесплатный ответ PROVIDER_TIMEOUT: повторите запрос через 1-2 минуты.
Попробовать без программиста
В личном кабинете есть консоль проверки: введите номер и получите ответ в читаемом виде.