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

Главная → Документация → Проверка ТС в РНИС по номеру

Проверка ТС в РНИС по номеру

РНИС проверка ТС по номеру машины: зарегистрирован ли автомобиль в региональной навигационно-информационной системе, когда была последняя навигационная отметка, сколько дней назад и через какие источники (бортовое оборудование, системы мониторинга) машина передаёт данные. Ответ в JSON за 3-10 секунд.

Метод GET /rnisПоиск госномерРегион МоскваОтвет 3-10 с

Что такое РНИС и зачем проверять машину

РНИС (региональная навигационно-информационная система) Москвы собирает координаты транспорта: грузовиков с пропусками в центр, автобусов, такси, машин перевозчиков по городским контрактам. Если машина перестала передавать отметки, это видно по дате последней отметки.

Как проверить машину в РНИС по госномеру

  1. Передайте госномер: GET https://api.avtovincod.ru/rnis?plate=Т160ХО774.
  2. Посмотрите found: 1 значит машина в РНИС есть, 0 значит нет.
  3. Оцените свежесть по lastMarkDaysAgo: 0 означает отметку сегодня или меньше суток назад. Если прошло несколько суток, машина давно не передавала данные.

Без программирования то же самое можно сделать в консоли проверки личного кабинета.

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

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

Эндпоинт

GET https://api.avtovincod.ru/rnis

Параметры

ПараметрОписаниеОбязателен
plateгосномер ТС кириллицей или латиницей, регистр и пробелы не важны (синонимы regNumber, gos)да

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

curl --max-time 60 -G -H "Authorization: Bearer $TOKEN" \
  "https://api.avtovincod.ru/rnis" --data-urlencode "plate=Т160ХО774"

Пример ответа: машина есть в РНИС

{
  "success": 1,
  "query": { "plate": "Т160ХО774" },
  "found": 1,
  "regNumber": "Т160ХО774",
  "lastMark": "2026-10-11 09:42:17",
  "lastMarkDaysAgo": 0,
  "sources": [
    { "type": "Wialon", "originType": "Wialon", "bnsoNumber": null },
    { "type": "EGTS", "originType": "EGTS", "bnsoNumber": "861234567890123" }
  ]
}

Последняя отметка сегодня, данные идут через два источника. У первого номер бортового оборудования не указан.

Поля ответа

ПолеЗначение
found1: машина есть в РНИС, 0: нет
regNumberгосномер так, как он записан в РНИС
lastMarkвремя последней навигационной отметки по Москве, ГГГГ-ММ-ДД ЧЧ:ММ:СС; null, если отметок нет
lastMarkDaysAgoсколько полных суток прошло с последней отметки: 0 значит сегодня
sources[]источники навигационных данных, может быть пустым
sources[].type / originTypeтип источника телеметрии, например Wialon, EGTS
sources[].bnsoNumberномер бортового навигационно-связного оборудования (БНСО), если известен

Если машина есть в РНИС, но отметок нет совсем, found: 1, а lastMark и lastMarkDaysAgo равны null.

Пример ответа: машины в РНИС нет

Проверка выполнена, навигационных данных по этому номеру в системе нет. Ответ успешный и тарифицируется.

{
  "success": 1,
  "query": { "plate": "О000ОО77" },
  "found": 0,
  "regNumber": null,
  "lastMark": null,
  "lastMarkDaysAgo": null,
  "sources": []
}

Коды ошибок

КодЗначение
NO_TOKENтокен не передан
TOKEN_INVALIDтокен недействителен или деактивирован
NOT_ALLOWEDAPI не подключён вашему токену
API_DISABLEDAPI временно отключён
IP_NOT_ALLOWEDзапрос с IP вне вашего белого списка
INPUT_REQUIREDне передан госномер
PLATE_INVALIDгосномер не похож на номер ТС
QUERY_INVALIDисточник отклонил значения запроса, проверьте ввод
INSUFFICIENT_BALANCEнедостаточно средств на балансе
RATE_LIMITпревышен лимит запросов в минуту
RATE_LIMIT_IPслишком много запросов с одного IP
SERVICE_UNAVAILABLEсервис временно недоступен, повторите позже
PROVIDER_FAILисточник не ответил, повторите позже

Ошибка приходит в виде {"success": 0, "error": "...", "code": "..."} и никогда не тарифицируется. PROVIDER_FAIL приходит с HTTP 200: проверяйте поле success.

Примеры кода: PHP, Python, JavaScript, Go, Java, C#, Ruby, 1С

Примеры готовы к запуску: токен берётся из переменной окружения AVC_TOKEN, а в запросе стоит тестовое значение (plate=T000TT00). По тестовым значениям приходит ответ-образец по схеме метода: бесплатно, без списания и даже при нулевом балансе, с полем "testMode": true. Так интеграцию можно собрать и проверить до первого платного запроса. Все тестовые значения.

curl -s --max-time 60 -G "https://api.avtovincod.ru/rnis" \
  --data-urlencode "plate=T000TT00" \
  -H "Authorization: Bearer $AVC_TOKEN"
<?php
$url = 'https://api.avtovincod.ru/rnis?' . http_build_query(['plate' => 'T000TT00']);
$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/rnis", params={"plate": "T000TT00"},
                 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/rnis?" + new URLSearchParams({ plate: "T000TT00" });
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("plate", "T000TT00")
	req, _ := http.NewRequest("GET", "https://api.avtovincod.ru/rnis?"+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 = "plate=" + URLEncoder.encode("T000TT00", StandardCharsets.UTF_8);
        HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.avtovincod.ru/rnis?" + 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/rnis?" + "plate=" + Uri.EscapeDataString("T000TT00");
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/rnis")
uri.query = URI.encode_www_form(plate: "T000TT00")
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Запрос("/rnis?" + "plate=" + КодироватьСтроку("T000TT00", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);

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

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

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

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

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

GET https://api.avtovincod.ru/rnis?plate=А123ВС777
Authorization: Bearer ВАШ_ТОКЕН

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

{
  "success": 1,
  "query": {
    "plate": "А123ВС777"
  },
  "found": 1,
  "regNumber": "А123ВС777",
  "lastMark": "2026-10-13 09:00:00",
  "lastMarkDaysAgo": 0,
  "sources": [
    {
      "type": "EGTS",
      "originType": "EGTS",
      "bnsoNumber": "164301012345678"
    }
  ],
  "billing": {
    "charged": 3,
    "currency": "RUB",
    "billed": true,
    "balance": 997,
    "requestId": 1234567
  }
}

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

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

GET https://api.avtovincod.ru/rnis?plate=А12
Authorization: Bearer ВАШ_ТОКЕН

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

{
  "success": 0,
  "error": "Неверный госномер. Пример: Т160ХО774.",
  "code": "PLATE_INVALID"
}

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

GET https://api.avtovincod.ru/rnis?plate=А123ВС777
Authorization: Bearer ВАШ_ТОКЕН

Источник не выполнил проверку: HTTP 200, PROVIDER_FAIL. Бесплатно, повторите запрос позже. Блока billing нет: запрос не списан.

{
  "success": 0,
  "error": "Проверка не выполнена",
  "code": "PROVIDER_FAIL"
}

Тарификация

Списание один раз за выполненную проверку (success: 1), в том числе если машины в РНИС нет (found: 0). Ошибки и PROVIDER_FAIL бесплатны. Цена и подключение метода в личном кабинете.

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

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

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

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

Для генераторов клиентов и ИИ-агентов: OpenAPI-спецификация метода (YAML). Все методы сразу: /openapi.yaml.

Смежные проверки

Частые вопросы

Как проверить регистрацию ТС в РНИС по номеру машины?

Отправьте GET-запрос https://api.avtovincod.ru/rnis?plate=ГОСНОМЕР с токеном или введите номер в консоли проверки в личном кабинете. found: 1 значит машина в РНИС есть, lastMark показывает время последней навигационной отметки.

Что значит lastMarkDaysAgo?

Сколько полных суток прошло с последней навигационной отметки. 0 значит отметка сегодня или меньше суток назад. Большое значение говорит о том, что машина давно не передаёт данные.

Зачем проверять РНИС для пропуска на МКАД?

Пропуска грузовиков в Москву связаны с передачей навигационных данных в РНИС: если машина перестаёт передавать отметки, пропуск могут аннулировать. Проверка показывает, видит ли система машину и когда была последняя отметка.

Что такое БНСО в ответе?

Бортовое навигационно-связное оборудование: блок в машине, который передаёт координаты. Его номер приходит в sources[].bnsoNumber, если он известен системе.

Работает ли проверка для регионов кроме Москвы?

Метод проверяет РНИС Москвы. Машины, которые работают и передают данные только в других регионах, в ней обычно не значатся: ответ found: 0.

Платная ли проверка, если машины в РНИС нет?

Да: выполненная проверка тарифицируется и при found: 0. Ошибки ввода и сбои источника бесплатны. Цена в личном кабинете.

Проверить без программиста

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

Открыть кабинет