Публичное API. Города и регионы адресуются по ФИАС; внутренние коды справочников наружу не отдаются. Все методы требуют заголовок Authorization: Bearer <токен>; токен выдаёт администратор и привязывает его к логину потребителя.
Все поля JSON-объекта в запросе обязательны, если в описании метода не указано обратное.
Передавать поля и параметры, которых нет в описании метода, нельзя: такой запрос отклоняется с кодом 400.
Спецификация OpenAPI
Описание всех методов в формате OpenAPI 3 доступно по адресу https://public-api.clever-logistics.ru/docs-json: по нему можно сгенерировать клиент или импортировать методы в Postman. Интерактивная версия — Swagger UI.
Авторизация
Все методы API требуют токен доступа. Токен передаётся в заголовке каждого запроса:
Authorization: Bearer <токен>
Токен выдаёт администратор Clever Logistics и привязывает его к вашей учётной записи. Токен имеет вид <префикс>_<случайная строка>, например pub_lE0xk8…: префикс помогает отличать токены разных интеграций. У токена может быть срок действия.
Храните токен как пароль: не публикуйте его в клиентском коде и репозиториях. Если токен скомпрометирован, обратитесь в поддержку — его отзовут и выпустят новый.
Если заголовка нет или он неверного формата, API отвечает кодом 401 с сообщением «Требуется токен доступа». Если токен неизвестен, отозван или истёк — кодом 401 с сообщением «Токен недействителен».
Типы данных
В примерах запросов и ответов тип каждого поля указан в квадратных скобках в конце комментария.
Обозначение
Что означает
[String]
Строка
[Integer]
Целое число
[Number]
Число, в том числе дробное; разделитель — точка
[Boolean]
Логическое значение: true или false
[UUID]
Идентификатор в формате UUID, например ФИАС: c2deb16a-0330-4f05-821f-1d09c93331e6
[Date]
Дата в формате ISO 8601: 2026-09-14
[DateTime]
Дата и время в формате ISO 8601 со смещением часового пояса: 2026-09-14T00:00:00+03:00
[URL]
Абсолютная ссылка
[Array<…>]
Массив; в угловых скобках — тип элементов
[Object]
Вложенный объект
Если поле может принимать значение null, это указано в комментарии: «может быть null». Города и регионы адресуются идентификаторами ФИАС.
Ошибки
При ошибке API возвращает HTTP-код ошибки и JSON единого вида:
{
"error": {
"code": 404,
"message": "Город с ФИАС 0c5b2444-70a0-4932-980c-b4dc0d3f02b5 не найден"
}
}
code — HTTP-код ответа, продублирован в теле;
message — описание ошибки. Если запрос не прошёл проверку сразу по нескольким полям, сообщения перечисляются через «; ».
Код
Когда возвращается
400
Некорректные параметры: поле не прошло проверку или передано лишнее поле
401
Токен не передан, неизвестен, отозван или истёк
404
Запрошенный объект не найден, например город по ФИАС
422
Расчёт для указанных параметров недоступен
429
Исчерпан месячный лимит запросов токена — см. раздел «Ограничения»
500
Внутренняя ошибка сервиса
503
Сервис расчёта временно недоступен — повторите запрос позже
Коды, которые возвращает конкретный метод, перечислены в его описании.
Ограничения
На токен может быть установлен лимит запросов в месяц. Лимит обнуляется 1-го числа каждого месяца в 00:00 по московскому времени.
В лимит засчитывается каждый запрос с действующим токеном, в том числе завершившийся ошибкой, например 400 или 404. Запросы, отклонённые из-за исчерпанного лимита, не засчитываются.
Если у токена есть лимит, в каждом ответе передаются заголовки:
Заголовок
Что означает
X-RateLimit-Limit
Лимит запросов в текущем месяце
X-RateLimit-Remaining
Сколько запросов осталось до конца месяца
X-RateLimit-Reset
Момент обнуления лимита — Unix-время в секундах
Когда лимит исчерпан, API отвечает кодом 429 с сообщением «Исчерпан месячный лимит запросов» до начала следующего месяца. Чтобы увеличить лимит, обратитесь в поддержку.
Метод GET /vehicles — Список типов транспортных средств
Доступные машины с характеристиками: грузоподъёмность, объём, габариты, типы кузова со способами загрузки, оснащением и признаком температурного режима.
Доступ
По токену доступа, заголовок Authorization: Bearer <токен> — подробнее
"uuid": "2f1c3c9e-3c5e-4d0a-9a53-1a2b3c4d5e6f",// идентификатор машины. Годится как truckId в POST /calculate/ftl [UUID]
"name": "20 тонн : 92 куба",// название машины [String]
"capacity_kg": 20000,// грузоподъёмность, кг [Number]
"volume_m3": 89.96,// объём кузова, м³ [Number]
"dimensions_m": {// габариты кузова, м [Object]
"length": 13.6,// длина кузова, м [Number]
"width": 2.45,// ширина кузова, м [Number]
"height": 2.7// высота кузова, м [Number]
},
"body_types": [// типы кузова, доступные для этой машины в расчёте. Кузова, которых нет в справочнике расчёта, в выдачу не попадают [Array]
{
"name": "Реф",// тип кузова. Значение годится как truckType в POST /calculate/ftl, значения: "Тент", "Борт", "Изотерм", "Реф" [String]
"temperature_controlled": true,// поддерживает температурный режим (рефрижератор или изотермический кузов) [Boolean]
"loading": ["Зад", "Зад/Бок"],// доступные комбинации загрузки. Значения годятся как load в POST /calculate/ftl, значения: "Зад", "Зад/Бок", "Зад/Верх", "Зад/Бок/Верх" [Array<String>]
"options": ["ремни", "Гидроборт"]// дополнительное оснащение. Значения годятся как dop в POST /calculate/ftl, значения: "ремни", "коники", "деревянный пол", "обрешетка", "Гидроборт" [Array<String>]
}
],
"limits": [// дополнительные ограничения и характеристики [Array]
{
"name": "Мест",// название характеристики [String]
"unit": "шт",// единица измерения [String]
"min": 1,// нижняя граница [Number]
"max": 33// верхняя граница. null — не ограничена [Number]
}
]
}
]
Коды ответа
200Типы транспортных средств
401Токен отсутствует или недействителен
429Исчерпан месячный лимит запросов токена; лимит обнуляется 1-го числа
Метод POST /calculate/ftl — Расчёт выделенного транспорта (FTL)
Итоговая стоимость с учётом всех надбавок и коэффициентов клиента, даты подачи и доставки, детализация по услугам. Машина и тип кузова — из справочника GET /vehicles.
Доступ
По токену доступа, заголовок Authorization: Bearer <токен> — подробнее
Формат запроса
{
"points": [// ФИАС города отправления и города назначения, ровно 2 элемента [Array<UUID>]
"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"c2deb16a-0330-4f05-821f-1d09c93331e6"
],
"insurance": 0,// объявленная стоимость груза для страхования, ₽. 0 — оценивается по весу [Number]
"truckId": "2f1c3c9e-3c5e-4d0a-9a53-1a2b3c4d5e6f",// идентификатор машины — поле uuid из GET /vehicles [UUID]
"truckType": "Тент",// тип кузова. Должен быть среди body_types выбранной машины в GET /vehicles, значения: "Тент", "Борт", "Изотерм", "Реф" [String]