Главная → Документация → Проверка спецразрешения КТГ для крупногабаритов
Проверка спецразрешения КТГ для крупногабаритов
Разрешения КТГ для крупногабаритов: проверка специального разрешения на перевозку тяжеловесного и крупногабаритного груза по номеру разрешения и госномеру. Сервис сверяет разрешение с машиной и возвращает его содержание: срок и число поездок, вид перевозки, допустимую скорость, автопоезд, груз, габариты и массы, нагрузки на оси, маршрут, особые условия и выдавший орган. Ответ в JSON за 3-10 секунд.
Что такое разрешение КТГ
КТГ означает крупногабаритный и (или) тяжеловесный груз. Чтобы везти негабарит или груз сверх допустимых масс и нагрузок на оси, перевозчик получает специальное разрешение. В нём записаны автопоезд, груз, габариты, массы, маршрут по участкам дорог, срок, число поездок и особые условия движения. Сведения о выданных разрешениях ведёт Росдормониторинг.
Как проверить спецразрешение по номеру
- Возьмите номер разрешения, например
Р050-00100-00/00012345, и госномер машины из автопоезда. - Передайте оба:
?permit=...&plate=.... Источник проверяет, что разрешение выдано именно на эту машину. - Смотрите
found(разрешение найдено) иisActive(сегодня в сроке поездок), затем маршрут, габариты и условия.
Вручную, без программиста, то же самое делается в консоли проверки личного кабинета: номер разрешения и госномер.
Кому нужна проверка разрешения КТГ
- Заказчику перевозки: разрешение, которое показал перевозчик, действительно выдано на эту машину и действует.
- Логисту и диспетчеру: маршрут, сроки, число поездок, допустимые габариты и массы, особые условия на участках дорог.
- Контролю и страхованию: сверка фактического автопоезда и груза с разрешёнными параметрами.
Без персональных данных
Телефон и адрес заявителя не отдаются. Имя заявителя приходит, только если это организация; у физического лица и ИП client.name равно null.
Аутентификация
Токен передаётся заголовком Authorization: Bearer <токен> либо параметром ?token=. Токен один для всех API, он выдаётся в личном кабинете сразу после регистрации.
Эндпоинт
GET https://api.avtovincod.ru/ktg-permit
Параметры
| Параметр | Описание | Обязателен |
|---|---|---|
permit | номер специального разрешения, например Р050-00100-00/00012345 (синоним licenseNumber) | да |
plate | госномер ТС из автопоезда, кириллицей или латиницей (синонимы regNumber, gos) | да |
Латинские буквы-двойники переводятся в кириллицу, пробелы убираются. Символ "/" в номере разрешения передавайте как есть или закодированным (%2F), HTTP-библиотеки делают это сами.
Пример запроса
curl --max-time 60 -G -H "Authorization: Bearer $TOKEN" "https://api.avtovincod.ru/ktg-permit" \
--data-urlencode "permit=Р050-00100-00/00012345" --data-urlencode "plate=А123ВС750"
Пример ответа: разрешение найдено
{
"success": 1,
"query": { "permit": "Р050-00100-00/00012345", "plate": "А123ВС750" },
"found": 1,
"isActive": true,
"permit": {
"licenseNumber": "Р050-00100-00/00012345",
"applicationNumber": "РДС1234567",
"issueDate": "2026-04-15 10:30",
"transportationType": "Внутрироссийская",
"maxSpeed": 70,
"tripsCount": "неограниченно",
"startDate": "2026-04-15",
"endDate": "2026-12-15",
"escortType": null,
"issuer": "ФКУ Росдормониторинг",
"vehicles": [
{ "type": "Седельный тягач", "mark": "SCANIA", "model": "R450",
"regNumber": "А123ВС750", "vin": "XLER4X20000123456",
"country": "Российская Федерация" }
],
"client": { "type": "organization", "name": "ООО \"Тяжпром\"" },
"cargos": [
{ "name": "Строительные конструкции",
"length": 18, "width": 2.8, "height": 3.5, "weight": 22.5 }
],
"params": { "emptyMass": 18.5, "fullMass": 41, "length": 22, "width": 2.8,
"height": 4, "frontOverhang": 1.2, "rearOverhang": 2.5, "minRadius": 11 },
"axles": [
{ "pos": 1, "distanceToNext": 3.5, "load": 8, "wheels": 2, "slope": 1, "airSuspension": false },
{ "pos": 2, "distanceToNext": 0, "load": 11.5, "wheels": 4, "slope": 2, "airSuspension": true }
],
"route": [
{ "totalLength": 45, "length": 45, "name": "Московская область, А-104" },
{ "totalLength": 120, "length": 75, "name": "Тверская область, М-11" }
],
"specialConditions": [
{ "owner": "ФКУ Упрдор \"Москва - Санкт-Петербург\"", "road": "М-11",
"range": "0 - 50+000", "condition": "Движение по крайней правой полосе",
"period": "Постоянно" }
],
"signature": { "thumbprint": "ABCDEF1234567890", "issuedTo": "ФКУ Росдормониторинг",
"validFrom": "2025-01-01", "validTo": "2027-12-31" }
}
}
Поля ответа
| Поле | Значение |
|---|---|
found / isActive | разрешение найдено для этой машины; сегодня (по Москве) в сроке поездок |
permit.licenseNumber / applicationNumber | номер разрешения и номер заявления |
permit.issueDate / startDate / endDate | дата выдачи, срок поездок |
permit.transportationType | вид перевозки: "Внутрироссийская", "Международная" и т. п. |
permit.maxSpeed / tripsCount | допустимая скорость, км/ч; число поездок или "неограниченно" |
permit.escortType / issuer | вид сопровождения (null, если не требуется); выдавший орган |
permit.vehicles[] | ТС автопоезда: type, mark, model, regNumber, vin, country |
permit.client | заявитель: type "organization" или "person", name только у организации |
permit.cargos[] | груз: name; length, width, height в метрах; weight в тоннах |
permit.params | автопоезд: массы (т), габариты, свесы и радиус поворота (м) |
permit.axles[] | оси: расстояние до следующей, нагрузка, колёса, скатность, пневмоподвеска |
permit.route[] | маршрут по участкам: name, length (км), totalLength (км с начала) |
permit.specialConditions[] | особые условия: владелец дороги, дорога, участок, условие, период |
permit.signature | электронная подпись разрешения: отпечаток, кому выдана, срок |
Поля разрешения передаются в том виде, в котором их отдаёт источник: отсутствующие значения приходят как null или не приходят вовсе. Проверяйте наличие ключа.
Пример ответа: разрешение не найдено
Разрешения с таким номером на эту машину нет: номер неверный, разрешение выдано на другое ТС или не выдавалось. Ответ успешный и тарифицируется.
{
"success": 1,
"query": { "permit": "Р050-00100-00/00012345", "plate": "О000ОО77" },
"found": 0,
"isActive": false,
"permit": null
}
Коды ошибок
| Код | Значение |
|---|---|
NO_TOKEN | токен не передан |
TOKEN_INVALID | токен недействителен или деактивирован |
NOT_ALLOWED | API не подключён вашему токену |
API_DISABLED | API временно отключён |
IP_NOT_ALLOWED | запрос с IP вне вашего белого списка |
INPUT_REQUIRED | не передан номер разрешения или госномер |
PERMIT_INVALID | номер разрешения не похож на номер |
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, а в запросе стоит тестовое значение (permit=Р000-00000-00/00000000, plate=T000TT00). По тестовым значениям приходит ответ-образец по схеме метода: бесплатно, без списания и даже при нулевом балансе, с полем "testMode": true. Так интеграцию можно собрать и проверить до первого платного запроса. Все тестовые значения.
curl -s --max-time 60 -G "https://api.avtovincod.ru/ktg-permit" \
--data-urlencode "permit=Р000-00000-00/00000000" \
--data-urlencode "plate=T000TT00" \
-H "Authorization: Bearer $AVC_TOKEN"<?php
$url = 'https://api.avtovincod.ru/ktg-permit?' . http_build_query(['permit' => 'Р000-00000-00/00000000', '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/ktg-permit", params={"permit": "Р000-00000-00/00000000", "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/ktg-permit?" + new URLSearchParams({ permit: "Р000-00000-00/00000000", 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("permit", "Р000-00000-00/00000000")
q.Set("plate", "T000TT00")
req, _ := http.NewRequest("GET", "https://api.avtovincod.ru/ktg-permit?"+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 = "permit=" + URLEncoder.encode("Р000-00000-00/00000000", StandardCharsets.UTF_8) + "&" + "plate=" + URLEncoder.encode("T000TT00", StandardCharsets.UTF_8);
HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.avtovincod.ru/ktg-permit?" + 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/ktg-permit?" + "permit=" + Uri.EscapeDataString("Р000-00000-00/00000000") + "&" + "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/ktg-permit")
uri.query = URI.encode_www_form(permit: "Р000-00000-00/00000000", 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Запрос("/ktg-permit?" + "permit=" + КодироватьСтроку("Р000-00000-00/00000000", СпособКодированияСтроки.КодировкаURL) + "&" + "plate=" + КодироватьСтроку("T000TT00", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
Если Данные.success = 1 Тогда
Сообщить("Проверка выполнена");
Иначе
Сообщить(Данные.code + ": " + Данные.error);
КонецЕсли;Бесплатных тестовых периодов и долгих согласований нет: пополните баланс в личном кабинете и сразу проверяйте реальные машины. Токен выдаётся при регистрации, деньги списываются только по правилам метода (раздел "Тарификация"). Нужен доступ из ИИ-ассистента: MCP-сервер.
Примеры ответов: успешный, ошибка, источник недоступен
Успешный запрос
GET https://api.avtovincod.ru/ktg-permit?plate=А123ВС777&permit=Р101-12345-24/00123456
Authorization: Bearer ВАШ_ТОКЕН
HTTP 200, success: 1. Списание по тарифу метода, сумма и остаток в блоке billing (цифры в примере условные).
{
"success": 1,
"query": {
"permit": "Р101-12345-24/00123456",
"plate": "А123ВС777"
},
"found": 1,
"isActive": true,
"permit": {
"licenseNumber": "Р101-12345-24/00123456",
"applicationNumber": "ПК2604150001",
"issueDate": "2026-04-15 10:30",
"transportationType": "Внутрироссийская",
"maxSpeed": 60,
"tripsCount": "10",
"startDate": "2026-04-15",
"endDate": "2026-12-15",
"escortType": null,
"issuer": "Орган, выдавший разрешение",
"vehicles": [
{
"type": "Седельный тягач",
"mark": "MAN",
"model": "T-1",
"regNumber": "А123ВС777",
"vin": "XTAGFL110MY463366",
"country": "Российская Федерация"
}
],
"client": {
"type": "organization",
"name": "ООО \"Перевозчик\""
},
"cargos": [
{
"name": "Металлоконструкции",
"length": 15,
"width": 2.6,
"height": 3.2,
"weight": 20
}
],
"params": {
"emptyMass": 17,
"fullMass": 37,
"length": 20,
"width": 2.6,
"height": 4,
"frontOverhang": 1.2,
"rearOverhang": 2,
"minRadius": 11
},
"axles": [
{
"pos": 1,
"distanceToNext": 3.6,
"load": 8,
"wheels": 2,
"slope": 1,
"airSuspension": false
}
],
"route": [
{
"totalLength": 50,
"length": 50,
"name": "МКАД, 45 км"
}
],
"specialConditions": [],
"signature": null
},
"billing": {
"charged": 3,
"currency": "RUB",
"billed": true,
"balance": 997,
"requestId": 1234567
}
}
Бесплатная проба без списания: https://api.avtovincod.ru/ktg-permit?plate=Т000ТТ00&permit=Р101-12345-24/00123456 вернёт ответ-образец по этой же схеме с полем testMode: true и charged: 0.
Неуспешный запрос
GET https://api.avtovincod.ru/ktg-permit?plate=А123ВС777
Authorization: Bearer ВАШ_ТОКЕН
Ошибка в параметрах: HTTP 400, код INPUT_REQUIRED, текст ошибки можно показать пользователю. Бесплатно.
{
"success": 0,
"error": "Нужны оба значения: ?permit=НОМЕР_РАЗРЕШЕНИЯ и ?plate=ГОСНОМЕР (источник сверяет разрешение с автомобилем).",
"code": "INPUT_REQUIRED"
}
Источник недоступен
GET https://api.avtovincod.ru/ktg-permit?plate=А123ВС777&permit=Р101-12345-24/00123456
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.
Уже подключены? Ничего менять не нужно.
- Прежние поля ответа, коды ошибок, 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 - инструмент
ktg_permit; всего инструментов 45. - Цены и списания как у API, в результате тоже есть блок
billing. Тестовые значения работают бесплатно. - Инструкция по подключению: avtovincod.ru/docs/mcp/
Для генераторов клиентов и ИИ-агентов: OpenAPI-спецификация метода (YAML). Все методы сразу: /openapi.yaml.
Смежные проверки
- Проверка грузовых пропусков на МКАД: пропуска грузовика в зоны ограничения Москвы.
- Проверка ТС в РНИС: передаёт ли машина навигационные данные.
- VIN по госномеру: VIN и СТС тягача или прицепа.
Частые вопросы
Что такое разрешение КТГ?
Специальное разрешение на движение транспортного средства, которое перевозит крупногабаритный и (или) тяжеловесный груз (КТГ). В нём указаны автопоезд, груз, габариты и массы, маршрут, срок, число поездок и особые условия.
Как проверить спецразрешение на перевозку крупногабаритного груза?
Отправьте GET-запрос https://api.avtovincod.ru/ktg-permit?permit=НОМЕР_РАЗРЕШЕНИЯ&plate=ГОСНОМЕР с токеном или введите номер разрешения и госномер в консоли проверки в личном кабинете. found: 1 значит разрешение выдано на эту машину, isActive показывает, действует ли оно сегодня.
Почему нужен госномер, а не только номер разрешения?
Источник сверяет разрешение с автомобилем: так видно, что разрешение выдано именно на эту машину, а не на другую из того же парка.
Есть ли в ответе персональные данные заявителя?
Нет. Телефон и адрес не отдаются, имя заявителя приходит только у организаций. У физических лиц и ИП client.name равно null.
Что показывает маршрут в разрешении?
Список участков дорог по порядку с длиной каждого и нарастающим итогом, а также особые условия движения на отдельных участках: полоса, скорость, время проезда.
Платная ли проверка, если разрешение не найдено?
Да: выполненная проверка тарифицируется и при found: 0. Ошибки ввода и сбои источника бесплатны. Цена в личном кабинете.
Проверить без программиста
В личном кабинете есть консоль проверки: введите номер и получите ответ в читаемом виде, без кода.