Личный кабинет

Главная → Документация → Наличие данных по VIN

Наличие данных по VIN: что есть в иностранных отчётах

Перед покупкой полного отчёта узнайте, есть ли по VIN данные и сколько: история в США и Канаде (CARFAX, AutoCheck), продажи на аукционах США и лоты аукционов США и Кореи, фото-история, история в Беларуси, аукционы Европы. Ответ сразу, в каждом блоке - адрес метода, которым заказать полный отчёт. Удобно показать покупателю, что отчёт будет не пустым, и не платить за отчёты, по которым данных нет.

GET /vin-precheckпо VINответ сразу, 3-15 секундJSON

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

Токен передаётся заголовком Authorization: Bearer <токен> или параметром ?token=. Токен один для всех API, он в личном кабинете.

Эндпоинт

GET https://api.avtovincod.ru/vin-precheck

Можно и POST с теми же параметрами в теле формы.

Параметры

ПараметрОписание
vinVIN, 17 символов (латиница и цифры, без I, O, Q)
methodнеобязательно: проверить только для одного отчёта - код или адрес метода: usa_history, usa_score, auction_lots, usa_photos, by_history (или auction-lots и т. п.). В ответе только блоки этого отчёта, ответ быстрее
itemsнеобязательно: только эти блоки через запятую, например items=usa_history,usa_photos (по умолчанию все)

Что проверяется: блоки ответа

БлокЧто показываетПолный отчёт
usa_historyзаписи в истории США и Канады, сколькоCARFAX, AutoCheck
usa_auctionsпродажи на аукционах США, сколько записейАукционные лоты США и Кореи: цены и фото
auction_lotsлоты аукционов США и Кореи, сколькоАукционные лоты США и Кореи: цены и фото
usa_photosфото-история с аукционов, сколько фотоVinHistory: фото авто с аукционов США
by_historyданные в базах Республики БеларусьИстория авто в Беларуси
eu_auctionsпродажи на аукционах Европы: дата, название лота (info.date, info.title)справочно

В ответе только блоки, отчёты по которым доступны вашему аккаунту.

Проверка перед заказом отчёта. Методы CARFAX, AutoCheck, фото-история, аукционные лоты и история в Беларуси сами бесплатно проверяют наличие данных перед каждым заказом (передавать для этого ничего не нужно): если данных нет, ответ NOT_AVAILABLE приходит сразу, без задачи и списания. Этот метод нужен, чтобы узнать заранее, по каким отчётам данные есть, и показать это покупателю.

Пример запроса

curl -H "Authorization: Bearer $TOKEN" "https://api.avtovincod.ru/vin-precheck?vin=4JGFB4FB8SB491277"

Пример ответа

{
  "success": 1,
  "found": 1,
  "query": {
    "vin": "4JGFB4FB8SB491277"
  },
  "vehicle": "Mercedes-Benz GLE 350 4Matic 2025",
  "items": [
    {
      "key": "usa_history",
      "title": "История в США и Канаде (CARFAX, AutoCheck)",
      "available": true,
      "records": 15,
      "apis": [
        {
          "code": "usa_history",
          "path": "/usa-history",
          "title": "CARFAX: история авто из США и Канады",
          "connected": true
        },
        {
          "code": "usa_score",
          "path": "/usa-score",
          "title": "AutoCheck: оценка и история авто из США и Канады",
          "connected": true
        }
      ]
    },
    {
      "key": "usa_auctions",
      "title": "Продажи на аукционах США",
      "available": true,
      "records": 36,
      "apis": [
        {
          "code": "auction_lots",
          "path": "/auction-lots",
          "title": "Аукционные лоты США и Кореи: цены и фото",
          "connected": true
        }
      ]
    },
    {
      "key": "auction_lots",
      "title": "Аукционные лоты США и Кореи: цены и фото",
      "available": true,
      "records": 2,
      "apis": [
        {
          "code": "auction_lots",
          "path": "/auction-lots",
          "title": "Аукционные лоты США и Кореи: цены и фото",
          "connected": true
        }
      ]
    },
    {
      "key": "usa_photos",
      "title": "Фото-история (США и Канада)",
      "available": true,
      "records": 10,
      "apis": [
        {
          "code": "usa_photos",
          "path": "/usa-photos",
          "title": "VinHistory: фото авто с аукционов США",
          "connected": true
        }
      ]
    },
    {
      "key": "by_history",
      "title": "История в Беларуси",
      "available": false,
      "records": null,
      "apis": [
        {
          "code": "by_history",
          "path": "/by-history",
          "title": "История авто в Беларуси",
          "connected": true
        }
      ]
    },
    {
      "key": "eu_auctions",
      "title": "Аукционы Европы",
      "available": null,
      "records": null,
      "note": "Источник не ответил, проверьте позже.",
      "apis": []
    }
  ],
  "checked_at": "2026-11-01 12:14:05",
  "billing": {
    "charged": 0.2,
    "currency": "RUB",
    "billed": true,
    "balance": 1610.8,
    "requestId": 1234567
  }
}

Проверка для одного отчёта

Если покупатель уже выбрал отчёт, проверяйте только его: параметр method. В ответе только блоки этого отчёта.

curl -H "Authorization: Bearer $TOKEN" "https://api.avtovincod.ru/vin-precheck?vin=4S4BSBNC1G3257741&method=auction_lots"
{
  "success": 1,
  "found": 1,
  "query": {
    "vin": "4S4BSBNC1G3257741",
    "method": "auction_lots"
  },
  "vehicle": null,
  "items": [
    {
      "key": "usa_auctions",
      "title": "Продажи на аукционах США",
      "available": true,
      "records": 1,
      "apis": [
        {
          "code": "auction_lots",
          "path": "/auction-lots",
          "title": "Аукционные лоты США и Кореи: цены и фото",
          "connected": true
        }
      ]
    },
    {
      "key": "auction_lots",
      "title": "Аукционные лоты США и Кореи: цены и фото",
      "available": true,
      "records": 1,
      "apis": [
        {
          "code": "auction_lots",
          "path": "/auction-lots",
          "title": "Аукционные лоты США и Кореи: цены и фото",
          "connected": true
        }
      ]
    }
  ],
  "checked_at": "2026-11-01 06:21:12",
  "billing": {
    "charged": 0.2,
    "currency": "RUB",
    "billed": true,
    "balance": 1610.6,
    "requestId": 1234569
  }
}

Что возвращает

ПолеЗначение
found1 - хотя бы в одном блоке данные есть; 0 - ни в одном
vehicleмарка, модель и год, если источник их сообщил; иначе null
items[].availabletrue - данные есть, false - нет, null - источник по этому блоку не ответил (причина в note)
items[].recordsсколько записей, если источник сообщил; иначе null
items[].infoподробности блока, если есть: date и title у аукционов Европы
items[].apisметоды полного отчёта: path - адрес, title - название, connected - подключён ли вашему токену
checked_atкогда источник ответил

Коды ошибок

Все ошибки бесплатны.

КодЗначение
NO_TOKEN, TOKEN_INVALIDтокен не передан или недействителен
NOT_ALLOWEDAPI не подключён вашему токену
INSUFFICIENT_BALANCEнедостаточно средств
INPUT_REQUIRED, BAD_VINне передан VIN или он неверный
INVALID_PARAMнеизвестный блок в items
PRECHECK_NOT_SUPPORTEDдля метода в method проверка наличия данных не выполняется
RATE_LIMIT, DAILY_LIMITслишком часто или исчерпан дневной лимит проверок (по умолчанию 1000 в сутки)
SERVICE_BUSYисточник сейчас занят: повторите через retryAfterSec секунд
PROVIDER_FAIL, 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/vin-precheck" \
  --data-urlencode "vin=X7TEST00000000001" \
  -H "Authorization: Bearer $AVC_TOKEN"
<?php
$url = 'https://api.avtovincod.ru/vin-precheck?' . 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/vin-precheck", 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/vin-precheck?" + 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/vin-precheck?"+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/vin-precheck?" + 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/vin-precheck?" + "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/vin-precheck")
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Запрос("/vin-precheck?" + "vin=" + КодироватьСтроку("X7TEST00000000001", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);

Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();

Если Данные.success = 1 Тогда
    Сообщить("Проверка выполнена");
Иначе
    Сообщить(Данные.code + ": " + Данные.error);
КонецЕсли;

Проверить, затем заказать отчёт (Python)

import os, requests

API = "https://api.avtovincod.ru"
H = {"Authorization": "Bearer " + os.environ["AVC_TOKEN"]}
VIN = "4JGFB4FB8SB491277"

d = requests.get(API + "/vin-precheck", params={"vin": VIN}, headers=H, timeout=60).json()
if d.get("success") != 1:
    raise SystemExit(d["code"] + ": " + d["error"])
for it in d["items"]:
    mark = {True: "есть", False: "нет", None: "не проверено"}[it["available"]]
    print(it["title"], "-", mark, it.get("records") or "")
# заказать отчёт CARFAX, только если данные есть
usa = next((it for it in d["items"] if it["key"] == "usa_history"), None)
if usa and usa["available"]:
    order = requests.get(API + "/usa-history", params={"vin": VIN}, headers=H, timeout=90).json()
    print("заказан, номер задачи", order.get("taskId"))

Бесплатных тестовых периодов и долгих согласований нет: пополните баланс в личном кабинете и сразу проверяйте реальные машины. Токен выдаётся при регистрации, деньги списываются только по правилам метода (раздел "Тарификация"). Нужен доступ из ИИ-ассистента: MCP-сервер.

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

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

GET https://api.avtovincod.ru/vin-precheck?vin=4JGFB4FB8SB491277
Authorization: Bearer ВАШ_ТОКЕН

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

{
  "success": 1,
  "found": 1,
  "query": {
    "vin": "4JGFB4FB8SB491277"
  },
  "vehicle": "Mercedes-Benz GLE 350 4Matic 2025",
  "items": [
    {
      "key": "usa_history",
      "title": "История в США и Канаде (CARFAX, AutoCheck)",
      "available": true,
      "records": 15,
      "apis": [
        {
          "code": "usa_history",
          "path": "/usa-history",
          "title": "CARFAX: история авто из США и Канады",
          "connected": true
        },
        {
          "code": "usa_score",
          "path": "/usa-score",
          "title": "AutoCheck: оценка и история авто из США и Канады",
          "connected": true
        }
      ]
    },
    {
      "key": "usa_auctions",
      "title": "Продажи на аукционах США",
      "available": true,
      "records": 36,
      "apis": [
        {
          "code": "auction_lots",
          "path": "/auction-lots",
          "title": "Аукционные лоты США и Кореи: цены и фото",
          "connected": true
        }
      ]
    },
    {
      "key": "auction_lots",
      "title": "Аукционные лоты США и Кореи: цены и фото",
      "available": true,
      "records": 2,
      "apis": [
        {
          "code": "auction_lots",
          "path": "/auction-lots",
          "title": "Аукционные лоты США и Кореи: цены и фото",
          "connected": true
        }
      ]
    },
    {
      "key": "usa_photos",
      "title": "Фото-история (США и Канада)",
      "available": true,
      "records": 10,
      "apis": [
        {
          "code": "usa_photos",
          "path": "/usa-photos",
          "title": "VinHistory: фото авто с аукционов США",
          "connected": true
        }
      ]
    },
    {
      "key": "by_history",
      "title": "История в Беларуси",
      "available": false,
      "records": null,
      "apis": [
        {
          "code": "by_history",
          "path": "/by-history",
          "title": "История авто в Беларуси",
          "connected": true
        }
      ]
    },
    {
      "key": "eu_auctions",
      "title": "Аукционы Европы",
      "available": null,
      "records": null,
      "note": "Источник не ответил, проверьте позже.",
      "apis": []
    }
  ],
  "checked_at": "2026-11-01 12:14:05",
  "billing": {
    "charged": 0.2,
    "currency": "RUB",
    "billed": true,
    "balance": 1610.8,
    "requestId": 1234567
  }
}

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

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

GET https://api.avtovincod.ru/vin-precheck?vin=4JGFB4FB8SB49127
Authorization: Bearer ВАШ_ТОКЕН

Ошибка в параметрах: HTTP 400, текст ошибки можно показать пользователю. Бесплатно. Если источник занят, ответ HTTP 429 SERVICE_BUSY с retryAfterSec, тоже бесплатно:

{
  "success": 0,
  "error": "VIN должен содержать 17 символов, у вас 16. Проверьте ввод.",
  "code": "BAD_VIN"
}
{
  "success": 0,
  "error": "Источник сейчас занят. Повторите запрос через несколько секунд. Деньги не списаны.",
  "code": "SERVICE_BUSY",
  "retryAfterSec": 5
}

Нет данных

GET https://api.avtovincod.ru/vin-precheck?vin=WVWZZZ3CZKE012345&items=usa_history,usa_photos
Authorization: Bearer ВАШ_ТОКЕН

Источник ответил, что данных нет ни в одном блоке: HTTP 200, found: 0, у блоков available: false. Это результат проверки, он оплачивается: полный отчёт по такому VIN заказывать не нужно.

{
  "success": 1,
  "found": 0,
  "query": {
    "vin": "WVWZZZ3CZKE012345"
  },
  "vehicle": null,
  "items": [
    {
      "key": "usa_history",
      "title": "История в США и Канаде (CARFAX, AutoCheck)",
      "available": false,
      "records": 0,
      "apis": [
        {
          "code": "usa_history",
          "path": "/usa-history",
          "title": "CARFAX: история авто из США и Канады",
          "connected": true
        },
        {
          "code": "usa_score",
          "path": "/usa-score",
          "title": "AutoCheck: оценка и история авто из США и Канады",
          "connected": true
        }
      ]
    },
    {
      "key": "usa_photos",
      "title": "Фото-история (США и Канада)",
      "available": false,
      "records": null,
      "apis": [
        {
          "code": "usa_photos",
          "path": "/usa-photos",
          "title": "VinHistory: фото авто с аукционов США",
          "connected": true
        }
      ]
    }
  ],
  "checked_at": "2026-11-01 12:20:41",
  "billing": {
    "charged": 0.2,
    "currency": "RUB",
    "billed": true,
    "balance": 1610.6,
    "requestId": 1234568
  }
}

Тарификация

Списание одно за вызов, если источник ответил хотя бы по одному блоку, в том числе когда данных нет. Источник не ответил ни по одному блоку, ошибки в параметрах, занятость источника - бесплатно.

В ответ добавляется блок billing: сколько списано за этот запрос (charged, в рублях), платный ли он (billed), остаток баланса после запроса (balance) и номер в истории запросов (requestId). Те же данные в заголовках X-Charged, X-Balance, X-Request-Id. Нет блока - запрос не списан. Подробнее о блоке billing.

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

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