Журнал изменений API

Все важные изменения API. Новые — вверху. Следуем стабильности v1 — без Breaking changes без новой версии.

2026-10-30 Улучшение Toll Cost API: плата за проезд для легковых авто (класс car)

Продукт toll-cost теперь также считает стоимость для легковых авто. Отправьте "vehicle": {"class": "car"}.

  • Класс car: мы считаем пункты оплаты на маршруте и самую дешёвую виньетку в каждой стране с виньетками (например, 1-дневные виньетки AT и HU). Если есть промежуточные точки, мы строим маршрут для легкового авто.
  • Ответ: by_country[] содержит cost_eur, gates_eur, vignette_eur и vignette_name. Каждый платный пункт имеет тип gate. Для легковых авто toll_km равно null.
  • По умолчанию: без class или с "class": "hgv" продукт считает грузовики, как раньше. Для легковых авто axles, gross_weight_t, euro и co2_class не используются.

Документация: Truck Toll Cost.

2026-10-28 Новое Truck Route API v3: выделенный сервер маршрутизации и новый базовый URL api.nakordoni.dev

Версия v3 truck-route теперь описана в документации. Она доступна по адресу GET https://api.nakordoni.dev/v3/truck-route и по адресу GET /api/v3/data/truck-route. Параметры запроса те же, что и в v2. Также в ней есть поля ответа v3 от 2026-10-22: правила для остановок на отдых и время ожидания на границе по eCherha.

  • Маршрут сначала рассчитывается на нашем выделенном сервере маршрутизации. Если этот сервер не отвечает вовремя, маршрут рассчитывает наш основной сервер. Формат ответа не меняется.
  • Заголовок ответа X-Route-Source указывает, какой сервер ответил: primary или fallback.
  • Тот же API-ключ и тот же класс квоты, что и в v2: route, 1 единица за вызов.

Версия v2 по-прежнему поддерживается и не изменяется. Чтобы перейти на v3, измените версию в URL запроса.

Документация: Truck Route API v3.

2026-10-27 Улучшение Plate Image Recognition API v4: опции запроса regions, camera_id, timestamp и config

Версия v4 plate-recognition (POST /api/v4/data/plate-recognition) принимает новые необязательные опции запроса. Без них вывод v4 не меняется.

  • regions: страны, которые вы ожидаете, как коды ISO (например, ["PL","DE"]). Определение страны и порядок вариантов чтения смещаются в сторону этих стран.
  • camera_id и timestamp: возвращаются без изменений в data.camera_id и data.timestamp. Они не хранятся дольше обычного журнала запросов.
  • config.threshold: результаты с оценкой ниже этого значения отбрасываются.
  • config.mode: fast пропускает обнаружение транспортного средства, для скорости, близкой к v2. region по-прежнему заполняется, а vehicle — null.

Отправляйте опции в теле JSON, как поля multipart или как параметры запроса. Новые коды ошибок 400: bad_regions, bad_camera_id, bad_timestamp, bad_config, bad_threshold, bad_mode. v2 не меняется и игнорирует опции.

Документация: Plate Image Recognition v4.

2026-10-27 Новое Plate Image Recognition API v4: страна номера и тип транспортного средства

Новая версия v4 для plate-recognition (POST /api/v4/data/plate-recognition). Заполняет два поля, которые v2 всегда возвращает как null:

  • results[].region: {code, score} с ISO-кодом страны номерного знака (например, UA) — определяется по формату номера. Если несколько стран используют одинаковый формат, score низкий.
  • results[].vehicle: {type, score, box} транспортного средства, несущего номерной знак. type принимает значение car, bus, truck или motorcycle.

Запрос, остальные поля и коды ошибок не меняются. v4 работает дольше, чем v2, из-за определения транспортного средства (обычно 0.5-1.5 s на изображение). v2 не меняется и по-прежнему возвращает null для обоих полей.

Документация: Plate Image Recognition v4.

2026-10-27 Новое Новое: Plate Image Recognition API — распознавание номерных знаков на фото транспорта

Новый продукт plate-recognition (POST /api/v2/data/plate-recognition). Он считывает номерные знаки на фото транспортного средства. Движок — наш собственный детектор и считыватель номеров, настроенный на европейских грузовиках и автобусах.

  • Вход: одно изображение (JPEG, PNG, WebP, BMP или TIFF, до 8 МБ) как JSON image_url или image_base64, как multipart-загрузка в поле image, или как сырые байты с image/* Content-Type.
  • Выход: results[] с plate, score, candidates[], region, box, dscore и vehicle, а также processing_time в мс.
  • Ошибки: 400 — изображение отсутствует или некорректно, 404 no_plate_detected, 413 — изображение больше 8 МБ, 500 engine_error.
  • Конфиденциальность: изображения обрабатываются в памяти и никогда не сохраняются. image_url должен быть публичным адресом; частные и внутренние адреса, а также перенаправления на них, отклоняются.

Стандартная аутентификация ключом, класс квоты heavy. Доступно с /api/v2/; ни один существующий эндпоинт не изменён.

2026-10-26 Новое Новое: Lane Cost Index API — индекс затрат грузового маршрута в EUR за км, с трендом за 3 месяца

Новый продукт lane-cost-index (GET /api/v2/data/lane-cost-index). Он возвращает индекс затрат одного гружёного рейса грузовика из A в B в Европе: топливо, платные дороги, время водителя и суточные.

  • Входные данные: from и to как "lat,lng" или id города, vehicle (например artic_40t), необязательно euro, co2_class и empty_return.
  • По странам: км, плата за дороги, литры дизеля и стоимость топлива (без НДС), а также класс транспортного средства, по которому рассчитана плата.
  • Время водителя: вождение, перерывы и отдых соответствуют правилам ЕС 561/2006. Стоимость водителя и суточные рассчитываются по ставке страны отправления. Для Испании и Италии теперь есть ставка водителя и суточные из коллективных договоров.
  • Тренд: trend показывает индекс затрат за текущий и два предыдущих месяца.
  • Неполные данные: если для страны на маршруте нет данных о плате за дороги или топливе, или для страны отправления нет ставки водителя, incomplete равно true, а сумма является нижней границей. missing_countries и missing_components показывают, чего не хватает.

Это индекс затрат, а не цена перевозки: стоимость транспортного средства, страхование, накладные расходы и маржа не учитываются.

Квота: один запрос считается как 1 единица класса route, как и truck-route.

Документация: Lane Cost Index.

2026-10-26 Улучшение Truck Toll Cost API: тарифы операторов во Франции и Испании, больше классов грузовиков в Италии

Продукт toll-cost теперь точнее считает Францию, Испанию и Италию.

  • Франция и Испания: участок автомагистрали между двумя пунктами оплаты на маршруте считается по тарифу оператора автомагистрали на въезд и выезд. Он показан как новый тип элемента motorway_section с оператором или дорогой, двумя пунктами, toll_km и cost_eur. Остальные платные км страны, как и раньше, считаются по среднему тарифу за км.
  • Класс транспортного средства: Франция: класс 3 для 2 осей и класс 4 для 3 и более осей. Испания: Pesados 1 для 2 или 3 осей и Pesados 2 для 4 и более осей.
  • Италия: грузовики с 2 и 3 осями теперь имеют собственные тарифы за км.
  • Класс Euro и CO2: тарифы Франции, Италии и Испании не зависят от этих классов. Если вы передаёте euro или co2_class, class_fallback для этих стран равен false, а class_note объясняет причину.
  • Нет платных дорог: маршрут по Испании без платных дорог (например, Сарагоса — Барселона) возвращает Испанию с cost_eur 0 и scheme not_tolled.

Другие страны не меняются. Документация: Truck Toll Cost.

2026-10-26 Новое Новое: Truck Toll Cost API — стоимость платных дорог для грузовика по маршруту, по странам, с мостами и концессиями

Новый продукт toll-cost (POST /api/v2/data/toll-cost, тело JSON). Он возвращает стоимость платных дорог для грузовика на маршруте по Европе.

  • Входные данные: линия маршрута как coordinates (например, геометрия из truck-route) или waypoints, по которым мы строим маршрут нашей грузовой маршрутизацией.
  • Транспортное средство: axles, gross_weight_t, euro и co2_class. Необязательно: date для тарифов и currency для итоговой суммы.
  • По странам: платные км, фактическая ставка EUR за км, стоимость, тарифицированный класс транспортного средства и дата тарифа. Ставки для конкретного класса Euro и CO2 используются там, где есть официальный тариф для этого класса. Иначе используется ставка класса по умолчанию, и class_fallback равно true.
  • Отдельные позиции: концессионные участки автомагистралей, а также тоннели и мосты с отдельной платой для грузовиков (например, Калафат-Видин).

Квота: один запрос считается как 1 единица класса route, так же как truck-route.

Документация: Truck Toll Cost.

2026-10-26 Новое Новое: Bus Sun Side API — солнечная и теневая сторона автобуса, лучшие места, с учётом погоды

Два новых продукта в /api/v2. Для поездки на автобусе они показывают, с какой стороны солнце, а с какой тень, и какие места лучше для тени или для вида.

  • bus-sun-side (/api/v2/data/bus-sun-side), GET: маршрут из нашего реестра автобусных маршрутов (route_id, dir, date) или произвольная поездка (from, to, depart).
  • bus-sun-side, POST: отправьте свой маршрут как список остановок, линию GeoJSON или закодированную полилинию. Добавьте параметры автобуса (ряды, схема сидений, сторона дверей, окна, этаж) или выберите модель из каталога через bus_model.
  • Погода: для поездок в ближайшие 3 дня используется почасовой прогноз вдоль маршрута. Более поздние поездки рассчитываются для ясного неба. Отправьте weather=0, чтобы всегда получать результат для ясного неба.
  • Изображения (POST): схема мест, карта маршрута и хронология в виде URL в формате PNG, WebP или JPG. Изображения хранятся 12 часов. Вы также получаете embed_html, чтобы показать результат на своей странице. URL изображений начинаются с https://api.nakordoni.dev/images/.
  • Анимация: блок animation содержит кадр каждые 5 минут с позицией автобуса, направлением движения, азимутом и высотой солнца и солнечной стороной, с подписями на вашем языке, итогами по сторонам и легендой. Отправьте animation=0, чтобы его не включать.
  • Виджет: показывайте результат на любом сайте, включая WordPress, через тег script или iframe. Виджет использует публичный ключ, который работает только на разрешённых вами доменах (origins), и наши собственные тайлы карты. Доступен плагин WordPress (zip).
  • bus-sun-catalog (/api/v2/data/bus-sun-catalog): модели автобусов, которые принимает bus-sun-side, со схемой сидений и окнами.

Квота: запрос POST с изображениями считается как 2 единицы. Все остальные запросы — 1 единица.

Документация: Bus Sun Side.

2026-10-26 Улучшение Fleet Compliance API v1.1 — исключение по ст. 12, возврат раз в 4 недели, 12-дневное отступление, национальные ночные периоды

fleet-compliance-validate теперь охватывает больше положений Регламента ЕС 561/2006 в редакции Регламента (ЕС) 2020/1054. Существующие поля ответа не меняются; добавлены новые поля.

  • Исключение по ст. 12: помечайте операции управления с помощью art12_exceed: true. В исключительных случаях водитель может превысить дневной и недельный лимиты управления не более чем на 1 ч, чтобы добраться до операционного центра или домой для еженедельного отдыха, либо не более чем на 2 ч после перерыва в 30 мин, если за ним следует регулярный еженедельный отдых. Валидатор принимает это и возвращает причитающуюся компенсацию и срок её предоставления (конец третьей недели после превышения) в remaining.driving.art12_compensation и exceptions.art12.
  • Ст. 8(8a), возвращение на базу: передавайте location (residence, operational_centre или elsewhere) для еженедельных отдыхов. Вы получите предупреждение, если в течение 4 недель подряд не было регулярного еженедельного отдыха дома или в операционном центре.
  • Ст. 8(6a), 12-дневное отступление: passenger_12day: true для одной разовой международной автобусной перевозки. Тогда еженедельный отдых может наступить через срок до двенадцати 24-часовых периодов после регулярного еженедельного отдыха. Проверяются последующие отдыхи и ночное вождение (22:00-06:00). Ст. 8(6)(b) AETR применяется так же.
  • Национальные ночные периоды (Директива 2002/15/EC, ст. 3(h)): используйте country или wtd.country, чтобы применить национальный ночной период. Проверены: AT, IE (пассажирские перевозки отдельно) и SE. Другие страны ЕС/ЕЭП используют 00:00-04:00 и возвращают night_window_verified: false.
  • fleet-compliance-limits: AETR теперь перечисляет проверенные поправки после 2010 года. Они меняют только статью 14, но не правила управления и отдыха.

Документация: Fleet Compliance.

2026-10-26 Новое Новое: Holiday Calendar API — праздники, рабочие дни, страны и влияние на бизнес для 51 страны

Четыре новых продукта, доступных через /api/v2 и рассчитываемых нашим собственным движком правил праздников для 51 страны (Европа и страны Персидского залива: SA, AE, QA, KW, BH, OM), 2020–2035:

  • holiday-calendar-holidays (/api/v2/data/holiday-calendar/holidays) — государственные, банковские, региональные, религиозные праздники и памятные дни для до 10 стран за год или за диапазон дат. Для каждого праздника указано, является ли он выходным днём, банковским праздником или попадает ли на школьные каникулы, был ли праздник выходного дня перенесён на другой день, является ли дата по исламскому календарю всё ещё приблизительной, а также действует ли в этот день запрет на движение грузовиков (truck_ban). Фильтрация по региону (region=DE-BY), типу, языку и названию; school=1 добавляет школьные каникулы.
  • holiday-calendar-business-days (/api/v2/data/holiday-calendar/business-days) — подсчёт рабочих дней между двумя датами, прибавление или вычитание рабочих дней, проверка даты, а также поиск следующего или предыдущего рабочего дня. Учитываются выходные дни страны (суббота–воскресенье, а в странах Персидского залива — пятница–суббота и другие варианты), национальные и региональные выходные, а также переносы дней по постановлению.
  • holiday-calendar-countries (/api/v2/data/holiday-calendar/countries) — охваченные страны с выходными днями, часовым поясом, регионами и типами праздников; при указании country= также рабочие дни по годам и следующие пять праздников.
  • holiday-calendar-impact (/api/v2/data/holiday-calendar/impact, план Pro и выше) — модельная оценка влияния на бизнес: индекс влияния 0–100 для каждого праздника, вероятность закрытия магазинов, категории спроса, положение в длинных выходных и «мостах», а также окна всплеска спроса. В holiday-calendar-holidays планы Pro и выше также получают этот блок с include=impact и могут фильтровать по min_impact.

Существующий продукт holiday-calendar не изменяется. Документация: Holiday Calendar.

2026-10-26 Новое Новое: Fleet Compliance API — проверка времени вождения и работы, отображение лимитов, проверка планов до отправки в рейс

Три новых продукта для соблюдения норм времени вождения, доступных через /api/v2:

  • fleet-compliance-validate (POST /api/v2/data/fleet/compliance/validate, тело JSON) — проверяет зарегистрированную активность водителя на соответствие EU 561/2006 или AETR и нормам рабочего времени Directive 2002/15/EC. Возвращает каждое нарушение с указанием статьи правила и категории тяжести, а также остаток у водителя на текущий момент: суточное вождение, скользящие лимиты 56 ч за неделю и 90 ч за две недели, следующий перерыв, суточный и еженедельный отдых. Поддерживаются разделённые перерывы, сокращённые и удлинённые рабочие дни, компенсация сокращённого еженедельного отдыха, ночная работа, двойной экипаж и прерванный отдых на пароме или в поезде.
  • fleet-compliance-limits (/api/v2/data/fleet/compliance/limits) — параметры правил EU 561, AETR (с отличиями от 561) и 2002/15, а также категории тяжести нарушений по Regulation (EU) 2016/403.
  • fleet-compliance-plan-check (POST /api/v2/data/fleet/compliance/plan-check, тело JSON) — проверяет запланированные смены до отправки в рейс на соответствие запретам на движение грузовиков, государственным праздникам и выходным дням в странах маршрута, а также правилам EU 561, AETR и 2002/15. Для каждой смены определяется самое раннее допустимое время начала.

Документация: Fleet Compliance.

2026-10-24 Улучшение Route Planner и Truck Route API: остановки по ст. 8(8) EU 561 — регулярный еженедельный отдых не в кабине (v3, дополнительные поля)

С v3 остановки ежедневного и еженедельного отдыха имеют поля in_vehicle_allowed, accommodation_required и rule (route-plan с rest_rules=eu561 и truck-route). Регламент (ЕС) 2020/1054 изменил ст. 8(8) EU 561/2006: регулярный еженедельный отдых и любой еженедельный отдых дольше 45 ч нельзя проводить в транспортном средстве. Для таких остановок in_vehicle_allowed = false. Сокращённый еженедельный отдых (от 24 до менее 45 ч) и ежедневный отдых можно проводить в неподвижном транспортном средстве со спальным местом.

Остановки еженедельного отдыха также имеют accommodation[] — стоянки с комнатами на месте рядом с остановкой, а стоянка остановки имеет has_accommodation. Это только информация: остановка, её время и стоянка для грузовиков не меняются. Если место с комнатами неизвестно, у остановки есть warning = no_accommodation_found. Ответы v1 и v2 не меняются.

2026-10-24 Улучшение Топливо: цены АЗС старше 90 дней больше не возвращаются

Цены АЗС в /api/v2/data/fuel-stations, /api/v2/data/fuel-cheapest, /api/v2/data/fuel-local и /api/v2/data/fuel с mode=nearest теперь имеют максимальный возраст 90 дней. Цена, которую мы в последний раз подтвердили более 90 дней назад, больше не возвращается. Раньше такая цена возвращалась с stale = true.

Что меняется в ответах: вид топлива, у которого есть только более старая цена, отсутствует в prices; АЗС без единой цены не попадает в список или имеет пустой объект prices там, где показываются АЗС без цен; ответ может быть пустым там, где раньше были старые цены. Пустой ответ, как и раньше, содержит empty_reason. fuel-local тогда может ответить с уровня региона или страны. Флаг stale не изменился: он true, когда цену в последний раз подтвердили более 7 дней назад. История цен сохраняется. Для fuel-cities, fuel-cost, средних цен по стране и fuel-grades практических изменений нет. Подробнее: Возраст цены.

2026-10-22 Улучшение Route Planner API: места остановок, состояние водителя по EU 561, регистрация eCherha (v2 — дополнение, v3 — новые значения по умолчанию)

GET /api/v2/data/route-plan получает расширенную модель остановок в v2 (только дополнения: ничего не удалено и не переименовано) и новые значения по умолчанию в v3 (/api/v3/data/route-plan).

v2, дополнение. С stop_places=1 каждая остановка (перерыв, обед, ночёвка, недельный отдых) содержит places[]: кандидаты-парковки в окне времени движения вокруг остановки, у каждой поля name, type, country, lat, lon, at_km, at_drive_s, offset_min, off_route_km, detour_km, exceeds_4h30 и type_rank. Настройте поиск через places_before_min, places_after_min, places_radius_km и rest_radius_km; радиус свыше 25 км ограничивается и сообщается предупреждением radius_clamped. rest_rules=legacy|eu561 выбирает модель отдыха, а с eu561 можно передать состояние водителя: driven_since_break_min, driven_today_min, duty_started_min_ago, driven_week_min, driven_fortnight_min, extended_days_used, reduced_rests_used и allow_reduced. Новые типы остановок: ban_wait (с ban: name, country, from, until) и weekly_rest; ожидание, заменяющее перерыв или отдых, помечается counts_as. Пункты пропуска на выезде из Украины для грузовиков с электронной очередью добавляют registration_required, registration_wait_minutes, registration_wait_source, registration_wait_at, registration_note и registration_url, а также предупреждения echerha_registration и echerha_wait_unverified.

v3, новые значения по умолчанию. rest_rules по умолчанию имеет значение eu561; названия мест строгие (только настоящие парковки и зоны отдыха); опубликованное eCherha время ожидания (свежие данные, без ограничения) используется как ожидание на границе, а ожидание на границе засчитывается как перерыв или отдых, который был положен. v2 сохраняет прежнюю модель отдыха и исходный фильтр мест, поэтому существующие интеграции не меняются. Подробнее: Route Planner API.

2026-10-22 Улучшение Truck Route API v3: ожидание на границе из eCherha и поля регистрации

GET /api/v3/data/truck-route теперь использует ожидание на границе из eCherha. В v3 border_crossings[] для грузовых полос на выезде из Украины с электронной очередью берут wait_min из опубликованного eCherha времени ожидания (только свежие данные, без ограничения; если данные устарели, wait_min равно null и добавляется предупреждение echerha_wait_unverified) и содержат registration_required, registration_wait_minutes, registration_wait_source, registration_wait_at, registration_note и registration_url, с предупреждением echerha_registration.

План отдыха рассматривает ожидание на границе как время, проведённое на границе: долгая очередь засчитывается как перерыв, суточный или недельный отдых, который был положен (counts_as в строке waits[]), а не добавляется сверху. v2 без изменений. Подробнее: Truck Route API.

2026-10-14 Улучшение Топливо: пустые ответы теперь объясняют причину

Когда /api/v2/data/fuel-stations или /api/v2/data/fuel-cheapest не находит ни одной АЗС, ответ по-прежнему имеет HTTP 200 с пустым списком, но теперь объясняет причину. Только в пустом ответе data содержит empty_reason (no_station_in_radius, no_price_for_fuel_type, fuel_type_not_priced_in_country, unknown_fuel_type или no_fresh_price_in_radius), nearest_station_km (ближайшая АЗС с вашим видом топлива; поиск до nearest_search_km = 50 км; null, если нет), country и suggestion — одно короткое предложение на языке lang, например: Нет АЗС в пределах 5 км — ближайшая в 6,4 км; попробуйте radius_km=10.

Стройте логику кода на empty_reason и nearest_station_km. suggestion — совет для людей, его формулировка может меняться. Мы никогда не увеличиваем радиус за вас. Если вы опрашиваете территорию или маршрут по сетке, используйте radius_km 10–15. Ответы со станциями не изменились. Подробнее: Пустые ответы.

2026-10-14 Исправление АЗС: дробный радиус поиска учитывается; названия брендов унифицированы

Радиус поиска. radius_km в /api/v2/data/fuel-stations теперь сохраняет один десятичный знак. Радиус вроде 4.8 раньше молча обрезался до 4, поэтому каждый поиск охватывал до трети меньшую площадь, чем запрошено, и мог вернуть меньше АЗС или ни одной. anchor.radius_km показывает фактически применённый радиус; целые числа возвращаются как прежде.

Названия брендов. Один и тот же бренд теперь всегда пишется одинаково в brand — например, ORLEN и orlen возвращаются как Orlen, а CircleK — как Circle K. АЗС, цены, идентификаторы и поля не изменились. Если вы сопоставляете бренды по точному написанию (для логотипов или фильтров), проверьте свой список на соответствие новым названиям.

2026-10-03 Улучшение Truck Route API v2: новый параметр traffic (forecast, live или off)

GET /api/v2/data/truck-route принимает новый необязательный параметр traffic. Он задаёт, как трафик учитывается в ETA, плане отдыха, времени прибытия на границы и времени у запретов для грузовиков:

  • forecast (по умолчанию): повторяющиеся заторы в час, когда грузовик проходит каждый участок, текущие заторы, рассасывающиеся по мере приближения времени прибытия, дорожные работы и перекрытия на маршруте, а также погода, где она нам доступна. Ответ содержит блок traffic_forecast с задержкой в разбивке по причинам.
  • live: только текущий трафик, без повторяющихся заторов.
  • off: без поправки на трафик; время — это время грузового движка при свободном движении. Тогда traffic_forecast содержит только model и mode.

Любое другое значение возвращает 400 bad_request с сообщением Invalid traffic: forecast, live or off. Запросы без параметра получают значение по умолчанию — forecast.

Запреты для грузовиков по прогнозному времени прибытия: при forecast или live truck_bans[].active теперь оценивается на момент, когда грузовик по прогнозу достигнет каждого запрета (от depart_at или от текущего момента, если он не передан), до какого-либо ожидания у этого запрета. Новое поле truck_bans[].active_at содержит оценённый момент по местному времени страны запрета. bans_summary, restriction_hits и legal опираются на те же вердикты, а запрет, в который прогнозная задержка впервые попадает (например, в другой день или в другой стране), также включается в truck_bans. При traffic=off active оценивается по временной шкале без заторов, а active_at равно eta_at_ban.

2026-10-03 Новое Новый продукт: Truck Route API — маршрутизация для грузовиков с топливом, парковками, пунктами взвешивания, оплатой дорог и планом отдыха по Регламенту ЕС 561/2006

Новый продукт: Truck Route API (GET /api/v2/data/truck-route, только v2). Один вызов возвращает маршрут, разрешённый для грузовика, и всё, что нужно диспетчеру вдоль него. Маршрут рассчитывает то же ядро маршрутизации, что и в нашем навигационном приложении для грузовиков TruckTurn, на наших собственных картографических данных.

  • Транспортное средство: height, width, length, weight, axle_load, axles, trailers, emission_class, hazmat (классы ADR) и adr_tunnel (B–E). Запреты движения грузовиков и зоны ограничений проверяются на возвращённой линии.
  • Вдоль маршрута: АЗС с актуальными ценами, парковки для грузовиков и пункты взвешивания, каждый с km_from_start и объездом.
  • План отдыха водителя по Регламенту ЕС 561/2006: перерывы (включая разделённые 15+30), ежедневный и еженедельный отдых (включая сокращённый), один водитель или экипаж из двух (crew=2), начиная с текущего состояния водителя, если вы его передадите. Каждая остановка размещается на реальной парковке вдоль маршрута. Это вспомогательное средство планирования, а не запись тахографа.
  • ETA с учётом отдыха, запретов движения грузовиков и ожидания на границах. Планирование по depart_at или arrive_at.
  • Оценка стоимости проезда по странам (EUR, по количеству осей и классу выбросов); страны без тарифов перечислены в tolls.coverage_note. Также avoid (платные дороги, паромы, автомагистрали, границы, тоннели, грунтовые дороги, зоны низких выбросов), до 2 альтернатив, разбивка по странам и geometry в формате polyline5, polyline6 или GeoJSON.

Квота: отдельная квота на маршруты для грузовиков: 10 вызовов в день для каждого аккаунта, больше на платных тарифах, а также дополнение Дополнительные вызовы маршрутов для грузовиков. В песочнице можно выполнять 10 маршрутов для грузовиков в день, видеть результат на карте с полным планом маршрута и экспортировать его в GPX, KML, GeoJSON, CSV, календарь (.ics) или ITN. См. страницу продукта и справочник.

2026-09-22 Улучшение Продукты с координатами будут возвращать данные только из одобренных для вас стран (с 13 октября 2026)

Согласно Условиям использования API, Рынок (Market) — это страна, данные которой вы используете, а ваш ключ охватывает страны, одобренные для вашего аккаунта. До сих пор продукты с координатами (lat/lon — напр. Nearby Shops, Truck Parkings, Fuel Stations) отвечали для любой точки в Европе. С 13 октября 2026, это проверяется при обработке запроса:

  • Запрос, у которого lat/lon находится в стране, не одобренной для вашего аккаунта, возвращает 403 с error.code market_not_allowed. В сообщении указывается страна и ваш список одобренных стран.
  • Если радиус пересекает границу, результаты, чей country_code вне одобренных стран, удаляются. Ответ тогда содержит markets_filtered (сколько было удалено) и markets_notice, а total_found учитывает только полученное.

Это касается аккаунтов, страны которых прошли проверку (статус approved или partial). В запросе ничего не меняется — ни нового параметра, ни новой версии. Если вашему приложению нужна ещё одна страна, добавьте её в портале разработчика до 13 октября. market_not_allowed указан вместе с другими кодами ошибок в справочнике.

2026-09-14 Улучшение Отправка новостей и флот NakBus теперь также в панели партнёра

Аккаунты разработчиков, связанные с аккаунтом Nakordoni Partners по тому же адресу электронной почты, теперь могут отправлять новости и управлять своим флотом NakBus (NakDriver / NakManager) на partners.nakordoni.eu, с ролями команды (Owner, Manager, Viewer) и входом в один клик между двумя порталами. Страницы портала разработчиков, ключи API, конечные точки флота и приложения остаются без изменений.

2026-09-08 Исправление Цены на топливо: второе, честное поле свежести и две ошибки языка

В Fuel Prices поле updated_at и собственный флаг age_hours/stale в ответе работали по разным часам: updated_at меняется только тогда, когда цена действительно изменилась, а устаревание вычислялось так, будто оно меняется при каждом подтверждении. 46.7% индекса цен показывали age_hours ≤48 и stale:false, хотя updated_at на самом деле был старше 48 часов, а 12,620 станций — старше недели. Теперь каждая цена также содержит confirmed_at — время последнего подтверждения цены, округлённое вниз до часа и не раньше updated_at, — а age_hours/stale вычисляются из него. Смысл updated_at не изменился: используйте его, когда хотите знать, когда цена последний раз менялась, а confirmed_at — когда хотите знать, насколько она актуальна сейчас. В замороженном контракте v1 отсутствует.

Две языковые ошибки, обе незаметные: если передать канонический код сорта как lang=pl (или любой из остальных 24 языков сайта), fuel_type_local возвращался на английском независимо от запроса — по таблице названий проверялись только 10 языков, поэтому всё вне этого списка получало словарь интерфейса по умолчанию вместо запрошенного языка. Отдельно, lang=tr (или ещё несколько корректных кодов) возвращал списки станций на украинском, потому что внутреннее значение по умолчанию uk срабатывало всякий раз, когда запрошенного языка не было в том же списке из 10 языков. Обе ошибки исправлены: теперь вы получаете тот язык, который передали, для всех 25.

Также: brand в Nearby Fuel Stations больше не возвращает сырое служебное значение OTHER для ~330 станций, бренд которых нам неизвестен, — теперь это null, как и для любого другого неизвестного поля в ответе.

2026-09-08 Исправление Пограничный AI-ассистент: повторный вопрос возвращал 503 вместо ответа

Пограничный AI-ассистент (/api/v1/data/assistant) отвечал 503 internal_error — «Ассистент временно недоступен» — когда один и тот же ключ задавал один и тот же вопрос дважды в течение пяти минут. Ничего недоступного при этом не было: в большинстве таких случаев ответ уже был вычислен и готов к выдаче. Теперь он возвращается штатно, с ok: true и HTTP 200.

Если повтор приходит, пока первый ответ ещё формируется, вызов теперь возвращает 429 с error.code = duplicate_request вместо 503, чтобы политика повторов отличала «спросите ещё раз через мгновение» от настоящего сбоя. Оба случая также засчитывались в уровень ошибок вашего аккаунта как серверные; больше нет. В самом запросе ничего не меняется — ни параметра, ни версии. duplicate_request перечислен вместе с остальными кодами ошибок в справочнике.

2026-09-08 Исправление Стоянки для грузовиков возвращают только именованные локации, а стоянки, названные собственными координатами, получили настоящие названия

Стоянки для грузовиков (/api/v2/data/truck-parkings) возвращали записи с name = null и пустым address — возле Бенсхайма 20 из 50. Это места, которые есть у нас только в виде координаты: нечего показать и не с чем сопоставить ваш набор POI. Они больше не входят в этот продукт: теперь он отдаёт только именованные локации, сейчас более 22 000 по Европе. Если вы сами отфильтровывали записи без названия, этот код теперь избыточен, но безвреден. Ответы при тех же radius и limit становятся короче, и каждая возвращённая запись пригодна к использованию.

Отдельно: около 10 000 стоянок содержали в поле name сырую пару координат, например 51.927301,10.14112, тогда как настоящее название находилось в address. Теперь они несут именно это название — Ionity, Seesen, Rest Area A5 E35 Kaelberpfad, Bensheim — везде, где встречаются, в том числе в /api/v1/data/pois. id каждого места не изменился, поэтому сохранённое сопоставление остаётся верным; меняется только name.

2026-09-08 Новое Снимок очереди теперь содержит собственный часовой пояс пункта пропуска

snapshot.updated_at в /api/v1/data/queue и /api/v1/data/multi — это местное время в поясе самого пункта пропуска (например, Europe/Istanbul, Europe/Sofia, Europe/Budapest, Europe/Warsaw, Europe/Kyiv), и до сих пор в ответе нигде не указывалось, какой это пояс, поэтому клиент не мог свести значение к конкретному моменту времени. snapshot получает дополнительное поле timezone (имя IANA) рядом с updated_at. Ни параметра, ни версии, ни изменений в других полях.

2026-09-08 Улучшение Покрытие по топливу измеряется по живому индексу станций, а не берётся из фиксированного списка стран

Раньше каждый топливный эндпоинт описывал собственное покрытие списком, составленным вручную: AT, DE, DK, ES, FR, HR, IT, LU, PL, PT, SI, причём Польша сводилась в нём к району Труймясто. Оба утверждения давно устарели. Теперь покрытие измеряется по живому индексу станций и пересчитывается каждые шесть часов: 39 стран сегодня имеют станции с ценами, и Польша среди них по всей стране, а не в трёх городах. В самом запросе не меняется ничего: ни параметра, ни версии.

Ближайшие АЗС и Самое дешёвое топливо: когда поиск ничего не возвращает, блок coverage теперь содержит измеренные station_countries, station_counts, sparse_coverage и measured_at, суженные до запрошенного сорта топлива, а не до топлива вообще. Страна попадает в sparse_coverage, если у нас в ней 25 станций с ценами или меньше — это подсчёт, а не оценка.

Появилось новое пояснение для сорта, который мы распознаём, но который никто не оценивает там, где вы спрашиваете. До сих пор coverage.fuel_type_note возникало только тогда, когда само название на колонке было нам незнакомо. Теперь оно появляется и тогда, когда название распознано верно, а цены на него в этой стране просто нет; в нём названы страны, где этот сорт оценивается, и сорта, которые мы оцениваем рядом с вами. Чешское название Natural 100 — чистый пример: оно распознаётся, но ни один источник не даёт на него цену в Чехии. Пустой ответ перестаёт выглядеть как сломанный запрос.

Сорта топлива (/api/v2/data/fuel-grades) получает priced_countries и priced_station_counts для каждого сорта, а также priced_here, если вы передаёте ?country=. Эти списки означают разное: страна в countries — это страна, где мы принимаем такое название на колонке, а priced_countries — это там, где источник действительно даёт цену, поэтому priced_here со значением 0 — настоящий ответ, а не пробел в ответе. Вместе с ними передаются coverage_measured_at и coverage_note, а Cache-Control снижен с 24 часов до 6, чтобы соответствовать частоте пересчёта.

Распознаётся и больше местных названий с колонок, среди них Klimadiesel 90 (HVO100) и HVO Diesel, Erdgas и Metano, Autogas и Autogaz, DEF для AdBlue, а также ряд брендовых названий премиальных дизелей и бензинов. Порядок распознавания не изменился, сопоставление остаётся точным, поэтому ни одно работавшее раньше название сегодня не значит ничего другого, а новое название может лишь превратить пустой ответ в ответ с ценами. Одновременно исправлены справочная документация и описания эндпоинтов на всех 25 языках сайта.

2026-09-07 Исправление API «Самое дешёвое топливо» снова сортирует по цене; поля ответа с данными о топливе задокументированы так, как они фактически возвращаются

«Самое дешёвое топливо» (/api/v2/data/fuel-cheapest) возвращал ближайшие заправки в порядке расстояния, а не самые дешёвые. Поскольку сортировка применялась до того, как результат обрезался до вашего limit, самые дешёвые заправки в радиусе поиска могли полностью отсутствовать в ответе. Сортировка снова работает правильно: сначала самая низкая цена для запрошенной марки топлива, при равенстве цены побеждает более близкая заправка, а заправка без цены на эту марку оказывается последней. В самом запросе ничего не меняется — ни параметра, ни версии.

Ответы v2 по топливу также задокументированы такими, какими они фактически возвращаются: заправки приходят в data.stations[], по одной записи на физическую заправку, а каждая марка топлива вложена в объект prices (price, currency, local_name, updated_at, age_hours, stale), а также station_ref, grades, total_found и notices. Справка по «Ближайшим заправкам» и «Самому дешёвому топливу» по-прежнему описывала старый плоский список строк data.data[].

2026-09-07 Новое Дополнения «Дополнительные страны» и «Дополнительные вызовы прогнозов»; количество стран в тарифе — с 10 ноября 2026

На странице оплаты (вкладка «Ежемесячно») доступны два дополнения к любому тарифу, без его смены: Дополнительные вызовы прогнозов — +100 вызовов прогнозов и статистики в сутки за блок, €2 в месяц за блок, до 10 блоков; и Дополнительные страны — +1 страна для декларирования за единицу, €2 в месяц за каждую. При изменении количества вы увидите точный пропорциональный расчёт ещё до списания средств.

С 10 ноября 2026 каждый тариф включает определённое количество задекларированных стран: Explorer и Student — 4, Starter — 10, Pro и выше — без ограничений. С этой даты декларацию, превышающую тариф плюс купленные дополнительные страны, сохранить не получится; вкладка «Аккаунт» уже показывает ваш лимит, а аккаунты, которые его превышают, видят подсказку на дашборде. До 10 ноября ничего не меняется.

2026-09-07 Улучшение Песочница теперь показывает стоимость в квоте до и после каждого вызова

Песочница API теперь помечает каждый эндпоинт в списке его классом квоты (Тяжёлый / Стандарт), показывает стоимость в квоте для выбранной версии ещё до запуска, а после вызова показывает, во сколько тот же вызов обошёлся бы вашей рабочей квоте, — включая формулу ceil(N ppids × M sub-products / 2), которая применяется к вызовам вида /multi.

Это предварительный просмотр только для чтения: сами вызовы в песочнице списываются с отдельного тестового бюджета песочницы, а не с вашей рабочей квоты.

2026-09-07 Несовместимое Объявленные выводы версий закрыты для аккаунтов, созданных после объявления

С сегодняшнего дня всё, что мы публично объявили выводимым из эксплуатации, закрыто для аккаунтов разработчиков, созданных в день объявления или позже. Если ваш аккаунт существовал до объявления, ничего не меняется — за вами сохраняется полный переходный период вплоть до даты вывода, указанной в записи, которая его объявила.

Зачем это правило. 24 августа 2026 года мы объявили, что truck-bans v1 выводится из эксплуатации 8 сентября 2026 года. Два аккаунта зарегистрировались через несколько дней после того объявления, построили интеграцию на v1 и оказались в нескольких часах от 410, хотя ни одно наше письмо до них не дошло: и объявление, и рассылка уведомлений были раньше их регистрации. Ничто в API не помешало им взять версию, об уходе которой мы уже сказали. Это была наша ошибка, и это — её исправление: нельзя заново взять в работу то, что уже назначено к удалению.

Как это выглядит. Такой вызов отклоняется с 410 Gone и кодом ошибки version_closed_to_new_accounts. В сообщении указаны дата вывода, дата объявления и версия, которую следует использовать вместо неё. Это намеренно другой код, чем version_sunset, который получает любой аккаунт после наступления самой даты вывода — поддержка отличит «вы пришли слишком поздно, чтобы начинать» от «это исчезло для всех», не читая логи.

Сохранение прав определяется датой создания аккаунта, а не первым вызовом. Если вы зарегистрировались до объявления, но начинаете интеграцию только сейчас, полный переходный период всё равно ваш: вполне возможно, что вы всё это время на неё и рассчитывали.

Действует уже сейчас для truck-bans v1 (объявлено 24 августа 2026 года, вывод 8 сентября 2026 года) и автоматически для каждого вывода, который мы объявим в дальнейшем. От вас ничего нового не требуется: каждый ответ на выводимой версии уже несёт заголовки Deprecation, Sunset и Link: rel="successor-version", поэтому новая интеграция увидит приближающийся вывод, не читая эту страницу.

2026-09-07 Несовместимое Списки destination через запятую в v1/v2 отключаются одновременно с destination=all; пример v4 в документации исправлен

Продолжение вчерашнего изменения в v4 (тикет разработчиков #105). Списки destination через запятую в v1 и v2 продолжают работать, но теперь подпадают под тот же срок, что и destination=all: оба прекращают работу 2026-10-06 (до этого — заголовки Deprecation/Sunset, после — 400 destination_list_removed с указанием /api/v4/ как замены). Существующая проверка лимита в 10 элементов для списков через запятую до этой даты не меняется.

v4 по-прежнему принимает одну destination на вызов — сегодня это не менялось. Изменилась только формулировка для v1/v2: ошибка 400 для destination=all больше не предлагает список через запятую как путь миграции (он умер бы в ту же дату), а сразу указывает на v4.

Исправление в документации: пример v4 на этом сайте раньше выглядел как /api/v4/data/border/1/2,3,4/9 — это список через запятую, который v4 отклоняет. Теперь там /api/v4/data/border/1/2/9. Тот, кто скопировал старый пример, получил бы 400 на первом же вызове; извините.

Новый переведённый ключ product_border_v4_p_destination доступен на всех 25 языках сайта и прямо описывает правило «одна destination» в v4, вместо подстановки формулировки из v1/v2.

2026-09-06 Несовместимое Border Queue v4: одна страна назначения на запрос, а destination=all выводится из эксплуатации 2026-10-06

/api/v4/data/border/{origin}/{destination}/{crossing_type} работает с сегодняшнего дня. По сравнению с v2 меняются три вещи — и вместе они объясняют, почему это новая версия, а не правка.

1. Больше никакого destination=all. Наши данные лицензируются отдельно по странам (Developer API Terms, раздел 7), а шаблон, который разворачивается во «все соседние страны, по которым у нас есть данные», возвращает страны, на которые у вашего аккаунта может не быть разрешения, — и в самом запросе этого никак не видно. В v4 страну вы указываете сами.

2. Одна страна назначения на запрос. /api/v4/data/border/1/2/9 запрашивает одну границу. Списки через запятую не принимаются: отправляйте 1/2/9, 1/3/9 и 1/4/9 отдельными запросами. Список через запятую или all получает в ответ 400 и перечень точных запросов, которые нужно отправить, — так что ничего не ломается молча.

3. Один код для грузовиков. v1 и v2 делили грузовой транспорт на 8 (Freight Transport) и 9 (Freight Transport up to 7.5 t). На самом пункте пропуска это разделение реально, но ни один интегратор не может на него опереться: запрос 9 к v2 на границе UA-PL возвращал 21 из 70 грузовых пунктов пропуска, и нигде об этом не говорилось. v4 в ответ на 9 отдаёт все грузовые полосы, а 8 принимает как синоним 9. Каждая строка несёт собственный crossing_type, поэтому объединённый ответ по-прежнему можно разобрать.

В v1 и v2 destination=all работает до 2026-10-06 и до этого момента отдаёт заголовки Deprecation / Sunset. С этой даты эти версии тоже отвечают 400 на all — остальное в v1 и v2 не меняется и остаётся доступным. Та же дата касается других сокращений «все страны»: travel-matrix без ?dest=, bus-carriers с ?ppid=all и fuel-grades без ?country=.

v3, объявленную сегодня ранее, заменяет v4. v3 отличалась от v4 только тем, что всё ещё принимала список через запятую, и ни одна интеграция такую форму не использует. URL v3 продолжают отвечать, так что ничто написанное под них не сломается, но v3 не документируется и дальше развиваться не будет — переходите на v4.

Всё остальное в v4 — как в v2: направленный порядок сегментов пути, direction{from,to}, stale и ?max_age_min=.

2026-09-06 Исправление Идентификаторы стран и коды типов транспорта теперь задокументированы — а 8/9 были перепутаны местами

Числовые идентификаторы в /border/{origin}/{destination}/{crossing_type} никогда не публиковались таблицей, поэтому интеграторы восстанавливали их по часовым поясам и примерам URL. Теперь они есть в документации, в разделе Country and vehicle-type codes, и формируются из тех же таблиц, по которым API выполняет проверку, — идентификаторы стран вместе с границами, в которые каждый разворачивается, и каждый crossing_type с меткой, которую возвращает API.

Публикуя их, мы обнаружили, что песочница и метаданные эндпоинтов описывают 8 как «truck<7.5t», а 9 — как «truck». Это наоборот: API помечает 8 как Freight Transport, а 9 — как Freight Transport up to 7.5 tons, и так было всегда. Если вы брали код грузовика из подсказки к параметру, то фильтровали полосу, противоположную нужной. Исправлено везде, а v3 убирает этот выбор совсем.

2026-09-06 Улучшение Developer API Terms v1.1 — что означает «рынок» и два изменения в вашу пользу

API Terms v1.1 заменяют v1.0 ещё до её вступления в силу и действуют с 2026-10-06. Примите их в своей панели.

Раздел 7 теперь определяет, что такое Рынок: это страна, чьи данные вы используете, — та, где находится запрашиваемый пункт пропуска или граница, — а не страна, где живут ваши пользователи. Наша панель в разных местах говорила и то, и другое; на практике применялось всегда первое.

Два изменения в вашу пользу. Страны, уже одобренные для вашего аккаунта, остаются доступными, пока рассматривается более позднее изменение (добавление страны больше не приостанавливает те, что у вас уже есть). И если мы не ответили на декларацию рынка в течение 5 рабочих дней, до момента ответа действуют полные лимиты вашего тарифа.

Раздел 10.3 теперь соответствует тому, что на самом деле запрашивает панель, а раздел 13.2 фиксирует основу доступности, которую мы измеряем и можем вам показать.

2026-09-05 Улучшение Новое: флаг data_quality в Queue, Live Queue & Freshness и Multi-Checkpoint

Три продукта теперь несут дополнительное поле data_quality (high или low), показывающее, является ли показание реальным наблюдением или модельной оценкой при отсутствии живого источника подсчёта на этом пункте пропуска: queue (в верхнеуровневом snapshot и в каждой исторической строке в data[] — на прогнозных строках его нет), update-info (в оболочке) и multi (в обоих подобъектах, queue и update_info, по каждому пункту пропуска). Это не новый сигнал — сам флаг уже существовал внутри, — но наружу он никогда не отдавался, поэтому полностью смоделированный пункт пропуска выглядел так же, как измеренный напрямую. is_realtime намеренно не изменён: для модельных строк он по-прежнему равен true, а изменение этого смысла было бы ломающим изменением уровня v2, которое мы здесь не делаем.

Также в этом релизе: продукт queue-advanced больше не распространяет сырые погодные данные от поставщика. weather_main, temperature и wind_speed заменены производными condition_code (шкала опасности 0–5, null, когда погодных данных нет), condition и severity.

2026-08-25 Устарело Multi-Checkpoint API: 5 пунктов пропуска на один запрос с 2026-08-30

С 2026-08-30 один запрос /api/v1/data/multi обрабатывается максимум для 5 пунктов пропуска. Вызов, в котором перечислено больше PPID, не отклоняется: он по-прежнему возвращает 200, но ответ даётся только по первым 5 ID в ?ppids=. Остальные ID игнорируются, возвращаются в meta.ppid_cap.ignored и не списываются с вашей квоты — оплачивается то, что вызов действительно вернул.

Пока вызов превышает лимит, в ответе присутствует заголовок X-Devapi-Warning: multi_ppid_cap и блок meta.ppid_cap с полями cap, enforced_from, enforced, ppids_asked, ppids_answered и ignored[]. До 2026-08-30 эти поля появляются со значением enforced: false и полным набором результатов, так что предстоящее изменение вы увидите в собственных логах.

Скидка на квоту в размере половины не изменилась. Разделите пункты пропуска на группы по 5 и отправляйте по одному вызову на группу в обычном цикле обновления; для частого опроса только длины очереди и свежести данных более дешёвым продуктом стандартного класса остаётся update-info.

2026-08-25 Улучшение Запрет из-за жары в Украине теперь учитывает ваш период дат (v2)

Рассчитываемый запрет из-за жары в Украине — возвращается с include_ua_heat, а для country=UA автоматически — теперь отвечает за тот период дат, который вы запрашиваете. Раньше он возвращал ближайшие семь дней независимо от date_from и date_to, поэтому для декабрьского окна тихо приходили строки этой недели. Запрет вычисляется из прогноза погоды, а не читается из календаря запретов, поэтому у него две границы, которых нет у календаря: он не смотрит назад и заканчивается там, где заканчивается прогноз. Теперь ваш период пересекается с тем, что реально охватывает прогноз, а новое поле ua_heat_ban.forecast_horizon указывает последнюю доступную дату. Период за этой границей возвращает пустой список и объясняет причину в summary — это не то же самое, что «запрета нет». Ответы v1 не изменились.

2026-08-25 Улучшение Каждый продукт теперь описывает поля своего ответа

Форма ответа раньше нигде не была описана — единственным способом узнать, что возвращает продукт, был его вызов. Теперь на странице каждого продукта под таблицей параметров есть таблица Поля ответа с кратким описанием каждого поля; поля элементов списка показаны как items[].name, а поля уровня конверта (usage, meta, snapshot, resolved_location) — без префикса. Описано 40 продуктов из 42: два ещё не запущенных (weather, road-quality) намеренно остались без описания. Та же таблица публикуется в нашем открытом зеркале документации на GitHub.

2026-08-25 Новое Локальные названия марок топлива в API

Теперь каждый топливный продукт принимает локальное название марки, а не только наше внутреннее написание: ON в Польше, Nafta в Чехии, Gázolaj в Венгрии, Motorină в Румынии, ДП в Украине, Motorin в Турции, Gasóleo в Португалии и Испании. Название распознаётся прежде всего по стране — «95» это E10 на датской колонке и E5 на польской — поэтому отправляйте country вместе с локальным названием или координаты, по которым точку можно определить. В ответе возвращаются fuel_type (каноническое), fuel_type_requested (как вы написали) и fuel_type_local. Название, которое мы не смогли определить, мы никогда не подменяем маркой по умолчанию: ответ приходит пустым и прямо об этом сообщает.

Вся таблица теперь отдельный продукт — GET /api/v2/data/fuel-grades[?country=PL][&fuel_type=ON] — наши канонические марки и их локальные названия в 41 стране Европы, включая рынки, для которых мы не даём цен. Кроме того, страновой и региональный уровни fuel и fuel-local получили объект grades, сопоставляющий каждый ключ цены с маркой и её названием на заправке.

2026-08-25 Улучшение Truck Bans API v2: запрос на конкретную дату или диапазон дат

Продукт truck-bans теперь отвечает на запрос о конкретной дате или диапазоне дат по адресу /api/v2/data/truck-bans. До сих пор он всегда возвращал ближайшие 7 дней и игнорировал переданную дату, поэтому для составления календаря приходилось делать по одному запросу на каждый день — а на тарифе с двумя запросами в секунду большинство из них отклоняется с 429 qps_exceeded.

Используйте ?date=YYYY-MM-DD для одного дня или ?date_from= и ?date_to= для диапазона. Обе границы включительно, любую можно не указывать: начало по умолчанию — сегодня, конец — начало плюс 7 дней. Окно может охватывать не более 92 дней — более длинное отклоняется с 400 date_range_too_long, а не обрезается молча. Это календарь, направленный в будущее: окно может начинаться не ранее чем 7 дней назад, а более старые даты отклоняются, а не выдаются — покрытие простирается вперёд до 31 декабря 2028 года в 23 странах.

Каждый ответ теперь содержит объект window, называющий точный охваченный диапазон. Это дополнительное поле, оно отправляется и в v1, причём v1 сохраняет своё неизменное 7-дневное окно. Обратите внимание: include_ua_heat всегда охватывает ближайшие 7 дней, какое бы окно вы ни запросили, — он рассчитывается по прогнозу погоды, а не по календарю запретов. Напоминаем, что v1 этого продукта прекращает работу 8 сентября 2026 года.

Два связанных улучшения во всём API: любой параметр, который продукт не принимает, теперь перечислен в поле ignored_params в ответе, а не отбрасывается молча; а ошибки проверки от сервиса данных доходят до вас в исходной формулировке, с машиночитаемым кодом в error.reason.

2026-08-25 Улучшение Заголовок X-API-Key принимается, понятнее ошибка об отсутствующем ключе, has_day_stats в справочнике checkpoints

Три исправления качества ответов по итогам аудита шлюза (тикет #43).

Заголовок X-API-Key теперь принимается наряду с Authorization: Bearer и ?key=. Если ваш HTTP-клиент отправляет ключи в заголовке с именем X-API-Key, теперь это работает — раньше он молча игнорировался, а вызов отклонялся как missing_api_key. Authorization: Bearer остаётся документированной рекомендуемой формой.

Сообщение об отсутствующем ключе теперь перечисляет все три способа аутентификации (заголовок Bearer, заголовок X-API-Key или ?key=) вместо одной лишь ссылки на страницу регистрации.

Справочник checkpoints теперь содержит has_day_stats в каждой строке — дополнительное булево поле, показывающее, есть ли у API «Лучшее время для пересечения» (day-stats) данные по этому пункту пропуска. Day-stats существует только для части отслеживаемых пунктов пропуска; проверяйте этот флаг перед опросом, чтобы избежать предсказуемых 404. Существующие поля не изменились.

Также исправлено в документации: продукт road-conditions всегда учитывал параметр lang для локализации подписей — он просто не был указан.

2026-08-24 Улучшение Truck Bans API: страны через запятую, поля полноты и v2 с обязательной привязкой к стране

Два исправления и одна новая версия продукта truck-bans.

Перечисление стран через запятую теперь работает. ?country= принимает список до 3 кодов ISO-2, например ?country=DE,RO. Более длинный список отклоняется с 400 too_many_countries, а не молча обрезается — это календарь запретов по отдельной стране, а не массовая выгрузка. Раньше это не работало: разделитель удалялся, поэтому DE,RO читалось как единый токен DERO, ничему не соответствовало и возвращало success: true с total_bans: 0 — уверенное «запретов нет» для двух стран, у которых суммарно их было 22. Если вы обходили это отдельным запросом на каждую страну, теперь один запрос покрывает их все и стоит один вызов вместо нескольких.

Ответы теперь сообщают о собственной полноте. Три дополнительных поля — returned, total_available и truncated — показывают, был ли ответ урезан. В частности, запрос без привязки к стране возвращает урезанный срез, и до сих пор ничто в теле ответа об этом не говорило. total_bans сохраняет прежнее значение (строки в этом ответе), так что то, что вы уже разбираете, не меняется.

v2 ограничена одной страной. В /api/v2/data/truck-bans параметр ?country= обязателен, а запрос без привязки отклоняется с 400 scope_required — этот продукт является календарём запретов по отдельной стране, а не массовой выгрузкой. v1 сегодня не меняется — она по-прежнему принимает запрос без привязки и по-прежнему возвращает те же урезанные 50 строк, что и всегда, так что ничего из работающего у вас сейчас не ломается. v1 этого продукта выводится из эксплуатации 8 сентября 2026 года. Она работает штатно по 7 сентября включительно; с 8 сентября запрос к v1 отклоняется с 410 Gone и сообщением, указывающим на v2. До этого каждый ответ v1 содержит Deprecation: true, заголовок Sunset с этой датой и заголовок Link с указанием версии-преемника, так что клиентская библиотека может показать срок без чтения этой страницы. Для миграции: измените сегмент версии на /api/v2/data/truck-bans и передайте ?country=.

Одно исправление в документации: параметр date удалён. Он долго значился в списке, но сервис его никогда не читал, поэтому любой запрос, отправлявший его, молча получал стандартное окно в 7 дней вместо запрошенного дня. Чтобы выбрать день, фильтруйте массив upcoming_bans по его полю date. Код ISO-3, такой как DEU, также больше не преобразуется в название страны в сводке, где он давал вводящее в заблуждение «No truck ban data for: Germany.»

2026-08-24 Улучшение Truck Bans API: пять новых стран и покрытие, продлённое до 2027 года

Продукт truck-bans теперь возвращает общенациональные ограничения движения ещё для пяти стран: Бельгии (BE), Беларуси (BY), Черногории (ME), Северной Македонии (MK) и Швеции (SE). Существующее покрытие Болгарии, Греции и Португалии расширено и обновлено — греческие ограничения теперь доходят до сентября 2027 года, а Португалия снова наполнена данными.

Структура ответа не изменилась. Новые строки содержат те же ключи, что и любой другой запрет: date, time_from, time_until, restriction_type, restriction_details, min_weight_tons и details_url. Если ограничение действует только при определённом условии — например, белорусские летние запреты действуют при температуре выше 25 °C — это условие указано в restriction_details, поэтому читайте это поле, прежде чем предупреждать водителя. min_weight_tons равно null, когда правило касается класса перевозок (опасные грузы), а не тоннажа.

2026-08-24 Улучшение АЗС: цены по отдельным станциям в Польше и флаг sparse_coverage

Продукты fuel-stations и fuel-cheapest теперь возвращают цены по отдельным АЗС в Польше. Покрытие частичное — агломерация Труймясто (Гданьск, Гдыня, Сопот), — поэтому Польша указана в новом дополнительном массиве coverage.sparse_coverage рядом с существующим списком coverage.station_countries. Страна из списка sparse_coverage имеет данные по станциям лишь для части своей территории; запрос в другом месте этой страны возвращает пустой список вместе с примечанием о покрытии, как и раньше. Польские цены указаны в PLN.

Ошибка массового запроса тоже стала понятнее: если lat отсутствует, сообщение scope_required теперь указывает на продукт fuel (?country=XX) для средних цен по стране.

2026-08-22 Улучшение API локальных цен на топливо: новый уровень region для Украины

GET /api/v2/data/fuel-local?lat=&lon= теперь определяет цену по трём уровням вместо двух: station, затем region, затем country. Новый промежуточный уровень существует для Украины, где данных по отдельным АЗС нет нигде: точка в Украине теперь получает среднюю цену по своей области вместо средней по стране и возвращается к средней по стране только тогда, когда для области нет котировок.

Ответ уровня region содержит код области (значение ISO 3166-2, например UA-46), region_name и region_center_dist_km, а также те же ценовые ключи, что и уровень страны. Продолжайте ветвить код по resolution, а не по форме ответа; ответы station и country не изменились.

2026-08-22 Новое Новый продукт: API локальных цен на топливо

Новый эндпоинт GET /api/v2/data/fuel-local?lat=&lon= возвращает лучшую доступную цену на топливо для любой точки Европы. Там, где есть данные по отдельным АЗС, он отвечает ценами ближайших станций, иначе — средней ценой по стране, в которой находится точка, включая Украину, где данных по отдельным АЗС нет нигде.

В каждом ответе есть поле resolution, указывающее уровень, который ответил: station (список станций с distance_km, каждая в своей валюте) или country (один объект со средними ценами по стране). Ветвите код по resolution, а не по форме ответа. Доступно начиная с /api/v2/; fuel, fuel-stations и fuel-cheapest не изменились.

2026-08-19 Улучшение АЗС: 13 видов топлива и более свежие данные по Германии

Продукты fuel-stations и fuel-cheapest теперь охватывают значительно больше АЗС в Германии, а цены обновляются в течение всего дня — включая сельскую местность. Параметр fuel_type принимает 13 видов топлива: diesel, e5, e10, superplus, super100, premdiesel, truckdiesel, hvo, lpg, cng, adblue, e85 и lng. Если ни одна АЗС не подходит под запрос, в ответ добавляется объект coverage со списком стран, по которым есть данные о заправках.

2026-08-19 Улучшение Исправления качества данных: алиас radius=, примечания о покрытии по топливу, точность планирования маршрута для грузовиков

Параметр radius= теперь принимается как совместимый алиас для radius_km во всех продуктах, где он задокументирован. Продукты fuel-stations и fuel-cheapest возвращают дополнительный объект coverage (список стран с АЗС и примечание) вместо молчаливого пустого результата, когда подходящих станций нет. Объекты пунктов пропуска в route-plan теперь содержат дополнительный ключ wait_basis (car_lane или vehicle_lane), чтобы клиент видел, когда время ожидания для грузовиков взято из легковой полосы. Сопоставление грузовых пунктов пропуска вдоль маршрута стало заметно точнее: запасной вариант по легковой полосе для пар пунктов без данных по грузовой полосе, защита от неверного направления, более строгий порог расстояния и удаление дублей переходов с одинаковыми координатами. Все изменения аддитивные, обратная совместимость сохранена.

2026-08-13 Улучшение Обновлён дизайн лендинга портала: якоря разделов, мобильные приложения, полная локализация

На странице для разработчиков теперь есть разделы с якорями (#products, #plans, #quickstart, #integrations, #datasets, #apps, #companies, #showcase) и навигацией по переходам, а каждая карточка продукта ведёт на собственную страницу документации. Новый раздел Mobile apps представляет Kordon Online и Truck Bans со ссылками на Google Play. Дополнение переводов: история платежей, ошибки входа, ссылки на песочницу и кнопка выбора тарифа теперь локализованы на всех 25 языках.

2026-08-12 Новое NakBus Live: двусторонний обмен сообщениями с водителем

Ответ маяка автопарка (POST /api/v1/fleet_position.php) теперь включает массив messages, доставляющий ожидающие сообщения от владельца к водителю. Новый JSON-поток в реальном времени только для владельца (?ajax=live) и карточка «Сообщения водителям» на панели автопарка. Новая страница приглашения водителя /{lang}/get-nakbus (25 языков).

2026-08-12 Новое Документация Fleet API переведена на 25 языков

Локализованы название, описание и параметры product_fleet_vehicles/live/history, а также параметры истории автопарка для всех 25 языков портала разработчиков.

2026-08-12 Улучшение Truck Bans API: унифицированные ключи ответа во всех ветках

/api/v1/data/truck-bans теперь возвращает одинаковый набор полей верхнего уровня независимо от того, какой запрос вызвал ответ. Раньше запрос для страны без календарных запретов, нераспознанный ppid или обычное совпадение в базе данных могли по-разному пропускать поля (например, country, covered_countries, ppid). Теперь каждый ответ последовательно включает as_of, bans_by_country, countries_not_covered, country, covered_countries, current_bans, is_ban_active, lang, page_url, ppid, relevant_countries, source, success, summary, total_bans и upcoming_bans (null или пусто, если не применимо), что упрощает разбор данных на стороне клиента.

2026-08-12 Новое 9 новых API для водителей: стоянки для грузовиков, магазины, душевые, рестораны, промышленные зоны, заправки, самое дешёвое топливо, интернет-точки, виньетки

Девять новых продуктов для отдельных сервисов. Те, что связаны с местоположением, принимают lat/lon или city + country (мы сами геокодируем город за вас): /api/v2/data/truck-parkings, /api/v2/data/shops, /api/v2/data/showers, /api/v2/data/restaurants, /api/v2/data/industrial, /api/v2/data/fuel-stations, /api/v2/data/fuel-cheapest (станции, ранжированные по цене для типа топлива) и /api/v2/data/internet-points; результаты содержат distance_km и ограничены radius. /api/v2/data/vignettes отвечает, требует ли страна виньетку, с актуальными ценами. Существующий продукт pois теперь поддерживает lon и radius, как задокументировано, а режим mode=nearest продукта fuel тоже принимает lon. Все девять доступны в песочнице.

2026-08-12 Улучшение Truck Bans API: детали ограничений, ссылки на собственном домене, параметр lang

Каждый запрет в /api/v1/data/truck-bans теперь содержит restriction_type (General / Local / Sunday / Holiday / Seasonal), restriction_details (точную зону действия или список дорог) и min_weight_tons. details_url теперь ведёт на страницы по отдельным странам на nakordoni.eu. Новый необязательный параметр lang задаёт язык названий стран и сводки; по умолчанию теперь английский.

2026-08-09 Улучшение Понятные ошибки ppid и документация

Некорректный ?ppid= теперь возвращает настоящую причину вместо короткого "Request failed": ошибка называет параметр, ожидаемый формат id_<number> и указывает на /api/v1/data/checkpoints. Таблицы параметров для stats, forecast, update-info, weather и bus-carriers теперь показывают пример id_13 на всех 25 языках.

2026-08-08 Новое Дизайн портала V2 теперь используется по умолчанию

Обновлённая оболочка портала (верхняя панель, боковое меню со значками, панель KPI, карточные макеты) теперь применяется по умолчанию для всех авторизованных аккаунтов разработчиков — раньше запланированного запуска 10 августа. Чтобы в любой момент вернуться к классическому виду, используйте ?v=1 для возврата к классическому виду.

2026-08-08 Улучшение Портал разработчика теперь без рекламы

Все страницы портала разработчика — главная, документация, панель управления, AI Studio, песочница, тикеты, заявки, экспорт, автопарк, новости, журнал изменений и страницы аккаунта — больше не загружают рекламные скрипты и рекламные блоки. Это действует на всём портале, а не только на входе и регистрации, как раньше.

2026-08-05 Новое Новый продукт: API планировщика маршрута (v2)

Спланируйте всю приграничную поездку одним запросом: /api/v2/data/route-plan возвращает маршрут, пункты пропуска, действительно лежащие на нём, с текущей очередью или прогнозом на время вашего прибытия, и остановки, которые водитель реально делает — перерывы на отдых, еду, заправку — на одной шкале времени.

Граница — часть этой шкалы. Долгая очередь засчитывается как назревший перерыв и обнуляет счётчик времени за рулём, поэтому трёхчасовое ожидание никогда не подаётся как три часа плюс полный набор перерывов, которых никто не делал. Для легковых действует модель безопасного вождения; автобусы и грузовики получают обязательный отдых по ЕС 561/2006, а сервисные издержки автобусов откалиброваны более чем на 1000 лицензированных международных расписаний. Добавьте stop_places=1, чтобы для каждой остановки назвать реальную зону отдыха или заправку, и via=lat,lon, чтобы проложить путь через другой пункт пропуска.

2026-08-05 Новое Партнёрская презентация — живые данные под ваш рынок

Новое в меню портала: Презентация — живая, всегда актуальная презентация дата-платформы nakordoni, персонализированная под ваш рынок (страхование, туризм, логистика, перевозчики, медиа, навигация, топливо, финтех, госсектор или личные проекты). Она показывает реальные объёмы платформы за 30 дней, ваше собственное использование API, статистику времени ответа и лимитов, а также рекомендацию тарифа, когда ваши вызовы упираются в границы бесплатного уровня. Выберите или подтвердите свой рынок (или несколько) на странице, в профиле — либо при регистрации. Она открывается автоматически при первом посещении; автооткрытие можно отключить на самой странице.

2026-08-01 Исправление AI Studio: ленты без нужного контекста пропускаются, а не тарифицируются

Если у ассистента включена лента, но вызов не несёт нужный ей контекст — например, queue без ppid— лента теперь пропускается до отправки любого запроса и не тарифицируется. Раньше её всё равно вызывали, она завершалась ошибкой и всё равно стоила единицу. Студия показывает, что нужно каждой ленте, пересчитывает цену по мере заполнения контекста и отмечает результаты ✓ выполнено / ⊘ пропущено, без оплаты / ✕ ошибка; API возвращает data.feeds_skipped , где точно указано, какой параметр передать.

Ответы больше не упоминают ленты, источники данных и вообще ничего технического: отсутствующая лента — это максимум одно обычное предложение для конечного пользователя, но не внутреннее название. Ленты только с необязательными фильтрами (например, fuel , суженная до страны, по которой у нас нет данных) теперь возвращаются к широкому набору данных вместо пустого ответа.

2026-08-01 Новое AI Studio: создайте своего ассистента на ваших материалах + наших живых данных

Новое: /{lang}/developers/studio. Создайте AI-ассистента, который отвечает на основе ваших материалов и наших живых пограничных данных. Передайте нам свой markdown или просто назовите страницы — мы их загрузим и проиндексируем; вы поддерживаете только собственные файлы. Выберите, какие из наших лент он может использовать (очередь, прогноз, альтернативы, дневная статистика, топливо, запреты для грузовиков, торговые воскресенья, праздники, состояние дорог, автобусные перевозчики, POI, валюта), выберите уровень модели (быстрый / сбалансированный / профессиональный — именно он задаёт цену), напишите свои инструкции с подстановками {{feed.slug}} , точно указывающими, куда в ответе попадут наши данные, и добавьте собственное заключительное предложение, которое добавляется к каждому ответу. Готовые шаблоны: персональный туристический ассистент, рабочий/грузовой ассистент, ассистент по продаже страховок и Зелёной карты.

Протестируйте его в студии (30 ответов в день, отдельно от вашей квоты API), затем вызывайте в продакшене через GET /api/v2/data/assistant-custom?assistant_id=N&q=…. Цена за ответ = единицы уровня модели + 1 единица за каждую включённую ленту; возвращается в X-Devapi-Units. Продукт доступен только в v2 — URL v1 возвращает unsupported_version. Существующий продукт assistant не изменился.

Каждый ассистент работает по политике контента платформы, которая имеет приоритет над вашими инструкциями: никакого выдавания себя за должностных лиц, никакой помощи в обходе пограничного или таможенного контроля, никаких выдуманных цифр, никакой брани. Проверяются и инструкции, и ответы; заблокированные вызовы журналируются.

2026-07-26 Новое MCP-сервер (Streamable HTTP)

Новое: настоящий MCP-сервер по адресу https://nakordoni.eu/mcp, предоставляющий безопасное подмножество API только для чтения (status, checkpoints, border queue, live queue, forecast) в виде MCP-инструментов. Тот же API-ключ и квота, что и в REST API. Карточка сервера по адресу /.well-known/mcp/server-card.json. См. раздел MCP-сервер в документации.

2026-07-21 Исправление Страница документации всё ещё показывала «Data Freshness API» после переименования — исправлено на всех 25 языках

Описанное ниже переименование в «Live Queue & Freshness API» фактически не дошло до страницы документации . Страница выводит название каждого продукта через поиск перевода, который обращается к заголовку эндпойнта только при отсутствии перевода — а перевод уже существовал, зафиксированный на старом названии, на всех 25 языках интерфейса. Теперь он имеет приоритет над любым будущим обновлением базового заголовка, пока не будет обновлён сам.

Ключ перевода переименован на всех 25 языках, так что страница документации теперь совпадает. Никаких изменений эндпойнта, параметров или ответа — только текст заголовка.

2026-07-21 Новое Data Freshness API — это ещё и ваш эндпойнт живой очереди в рамках стандартной квоты

Если вы часто опрашиваете данные живой очереди, вы, возможно, тратите тяжёлую квоту без необходимости. /update-info относится к стандартному классу и уже возвращает актуальное значение:

GET /api/v1/data/update-info?ppid=id_13

Он возвращает queue_now, freshness, age_minutes, is_realtime, status, timestamp и timezone. Используйте его для частого обновления в рамках стандартной дневной квоты, а /queue, /multi и /forecast (все тяжёлого класса) оставьте на случаи, когда нужны wait_min, поля тренда или история.

В самом эндпойнте ничего не изменилось — только в его документации. Он значился как «Data Freshness API», а его описание упоминало лишь оценку свежести и ни разу queue_now, так что его легко было пропустить. Теперь он называется «Live Queue & Freshness API», и возвращаемые поля перечислены явно. Спасибо разработчику, который на это указал.

2026-07-20 Исправление Неудачные вызовы теперь корректно возвращают ok:false

Некоторые неудачные запросы возвращали HTTP 200 с ok: true и ошибкой, спрятанной внутри data — из-за чего задокументированный шаблон if (!ok) throw не мог их обнаружить, а вызов всё равно тарифицировался. Такие вызовы теперь возвращают HTTP 400 с ok: false и корректными error.code / error.message, как задокументировано. Замечено на fuel-cities с неподдерживаемой страной и на travel-matrix с некорректными координатами.

Отдельно: отсутствующий обязательный параметр возвращал 500 internal_error вместо 400 bad_request (тело ответа 4xx от внутреннего сервиса отбрасывалось до того, как читался его статус). Теперь возвращается 400 bad_request с сообщением внутреннего сервиса — например, search без ?name=.

Успешные ответы не изменились ни на байт — те же поля, те же параметры, та же стоимость квоты. Если ваш клиент уже ветвится по ok, менять ничего не нужно. Если же он игнорировал ok и читал data напрямую, он теперь увидит конверты ошибок на вызовах, которые и так всегда были неудачными.

2026-07-20 Исправление Multi-Checkpoint API: точные данные очереди при холодном кэше

Исправлена ошибка, из-за которой /multi мог возвращать неверное количество в очереди для части пунктов пропуска — в основном балканских и на границе Венгрия–Сербия — всякий раз, когда его кэш был холодным. Резервный путь читал таблицу, которая для этих пунктов не содержит данных об очереди, и выдавал посторонние значения как число автомобилей. Измеренные примеры: пункт с 12 автомобилями показывал 6, а несколько пунктов с реальными очередями показывали 0.

Три изменения, которые вы можете заметить:

  • found: false теперь означает, что свежих данных об очереди действительно нет. Раньше вы могли получить found: true с выдуманным queue_now: 0.
  • wait_status, trend_percent и trend_direction теперь возвращаются при «холодных» запросах — раньше они были null .
  • Эндпойнт также переходит на резервный путь, когда его кэшированный снимок устарел (старше 24 ч), а не только когда он отсутствует.

Никаких изменений в параметрах запроса, стоимости квоты или структуре ответа.

2026-07-20 Исправление Multi-Checkpoint API: исправлено двойное списание квоты

Исправлена ошибка, из-за которой каждый вызов /multi тарифицировался дважды — сначала общей проверкой на 1 единицу, а затем собственной формулой переменной стоимости эндпоинта (N PPID × подпродукты). Теперь вызов стоит ровно ⌈(N×M)/2⌉ единиц, как и задокументировано, без дополнительного начисления.

Также на странице документации добавлен значок класса квоты (Standard/Heavy) для каждого продукта, чтобы сразу было видно, какую дневную квоту расходует эндпоинт.

2026-07-15 Новое Holiday Calendar: объединение country/countries, compare_to, несколько языков

country и countries объединены в один параметр (1-15 кодов через запятую). Новый параметр compare_to: сравнение одинаковых и разных праздников между странами, сочетается с upcoming+days. lang теперь принимает несколько языков (добавляет объект names). days=0 или отсутствие значения теперь означает без ограничения в режиме upcoming.

2026-07-15 Новое Новый продукт: Holiday Calendar API

Официальные государственные праздники для каждой европейской страны — даты, местные названия и тип. Работает на том же сервисе Nager.Date / OpenHolidaysAPI (с локально вычисляемым календарем Косово), что и страница календаря праздников nakordoni.eu и календарные факторы системы прогнозирования.

  • ?country=PL&year=2026 — полный годовой список праздников для одной страны
  • ?upcoming=1&days=30 — плоский список ближайших праздников по странам
  • Без параметров — индекс базового набора стран с ближайшим праздником для каждой
2026-07-13 Новое Новый продукт: Currency Exchange Rates API

Добавлен продукт currency — курсы обмена на основе EUR для PLN, CZK, HUF, USD, GBP, CHF, NOK и UAH, из источника Frankfurter (ECB), кешируются на 6 часов. Без параметров, всегда возвращает полную таблицу курсов. См. документацию.

2026-07-12 Новое Бесплатный встраиваемый виджет запретов для грузовиков

Встройте актуальные европейские запреты движения грузовиков на свой сайт — бесплатный iframe-виджет с 3 дизайнами (light, dark, board), 5 языками (en, uk, pl, de, ru), необязательным фильтром по странам и живым статусом «действует сейчас». Ключ API не нужен. Настройте и скопируйте код на nakordoni.eu/en/for_truck_drivers/traffic_bans/widget. Нужны сырые данные? Продукт API truck-bans и публичный JSON-фид остаются доступными.

2026-07-11 Новое API v2 (версионирование на уровне эндпоинтов), направленный border и интерактивный Sandbox

Три дополнения, все обратно совместимы — v1 без изменений.

Версионирование на уровне эндпоинтов. Теперь есть базовый URL /api/v2/. Оно действует на уровне эндпоинтов: иначе ведут себя только те эндпоинты, которые действительно изменились; каждый другой эндпоинт прозрачно отдаёт свой ответ v1 (так что /api/v2/data/queue = те же данные, что и v1, только с "api_version":"v2"). Мигрировать работающие эндпоинты не нужно.

border v2 является направленным. Порядок в пути задаёт направление движения:

GET /api/v2/data/border/1/2/6   → buses UA→PL (Ukrainian-side crossings)
GET /api/v2/data/border/2/1/6   → buses PL→UA (Polish-side crossings)

Каждый пункт пропуска также получает объект direction {from,to} и булево значение stale, а ?max_age_min=N возвращает только недавно обновлённые пункты. (v1 border по-прежнему возвращает обе стороны границы независимо от порядка — без изменений.)

Интерактивный Sandbox. Авторизованные разработчики теперь могут попробовать любой эндпоинт из браузера на Developers → Sandbox — выберите эндпоинт, версию и один из своих ключей, измените параметры и посмотрите живой ответ. Тестирование в Sandbox имеет собственный отдельный суточный лимит (50 calls/day) и никогда не затрагивает вашу рабочую квоту API.

Документация теперь разделена по эндпоинтам (Developers → API Docs) с переключателем версий на эндпоинтах, у которых больше одной версии.

2026-07-10 Улучшение queue-advanced: два новых корректирующих фактора

Два новых фактора добавлены в формулу времени ожидания, наряду с существующими корректировками section_mode и погодой:

  • service_rate — измеренное число авто/мин, обрабатываемых сейчас, по сравнению с настроенной базовой скоростью пункта пропуска. Мультипликативный, в пределах 0.5x-1.5x.
  • shift_change — влияние собственной локальной пересменки пограничников в 08:00/20:00 на пункте пропуска. Аддитивный (минуты), а не мультипликативный — применяется только в пределах +/-60 минут от пересменки, требует минимальной истории выборки, ограничен до +/-120 минут.

advanced_wait_min теперь равен round(base_wait × section_mode × weather × service_rate) + shift_change.adjustment_min. Оба фактора также отражаются в driver_reported.prognosed_advanced_wait_min для исторических сравнений.

2026-07-09 Несовместимое Несколько сугубо внутренних полей удалены из queue, border, multi, update-info

В рамках проверки безопасности/приватности удалены следующие поля — они раскрывали внутренние детали реализации (нашу таксономию источников данных, идентификаторы строк БД, внутренние аннотации конвейера, неиспользуемые/мёртвые поля) без реальной продуктовой ценности:

  • id и corrected — удалены из объектов строк queue
  • source (сырая строка, напр. "line") — удалено из queue, multi и update-info. update-info и multi (его блок update_info) по-прежнему содержат source_category/source_label_en (небольшой публичный словарь); queue и multi (его блок queue) больше не содержат никакого поля источника
  • traffic_status — удалено из border; оно всегда было null и никогда не заполнялось ни одной частью системы

Если ваша интеграция читает любое из этих полей, обновите её — см. текущий перечень полей на странице документации соответствующего продукта.

2026-07-09 Несовместимое usage.used теперь может быть дробным числом

Суточное использование квоты (usage.used в каждом ответе) теперь может быть десятичным значением (напр. 67.5) вместо всегда целого числа. Это побочный эффект того, что queue-advanced тарифицируется по дробной ставке — см. ниже. usage.limit не затрагивается и всегда является целым числом. Если ваш клиент строго типизирует usage.used как целое число, расширьте его до приёма десятичного/дробного значения.

2026-07-09 Новое wait_status и trend_percent/trend_direction добавлены в border, multi и queue-advanced

Эти три продукта теперь возвращают те же поля живого статуса, что показывает сайт: wait_status (green/yellow/red, на основе собственной недавней истории этого пункта пропуска) и trend_percent/trend_direction (up/up-slight/down/down-slight/stable, сравнение последних 3 часов). Чисто аддитивно.

2026-07-09 Улучшение queue: wait_time теперь заполняется в каждой исторической строке

В /api/v1/data/queue строки data[] ранее имели wait_time: null для большинства источников — лишь несколько внешних фидов сообщают время ожидания напрямую. Строки без него теперь получают стандартную оценку , помеченную новым булевым значением wait_time_estimated, чтобы вы могли отличить реально сообщённое значение от вычисленного.

2026-07-09 Несовместимое queue-advanced: тарифицируется 1.5x, ответ сокращён

queue-advanced теперь стоит 1.5 единицы за вызов вместо 1 (отражая дополнительные запросы трафика/погоды/сообщений водителей, которые он выполняет) — см. usage.used выше. Ответ также больше не включает total_crossing_time, а driver_reported теперь просто {wait_min, ts, age_min} — прежние поля сравнения прогноза с реальностью (prognosed_wait_min, diff_min, historical_section_mode, historical_weather и т. д.) удалены. section_mode, weather, advanced_wait_min и exceeds_crossing_time без изменений.

2026-07-09 Улучшение Truck Bans API: живой статус для каждой страны (active_window / next_window)

/api/v1/data/truck-bans теперь возвращает для каждой страны в bans_by_country значение status (active/clear) плюс active_window, next_window, local_time и tz — вычисленные в собственном часовом поясе этой страны, так что вам больше не нужно самостоятельно сверять сырые окна запретов с часами. Ответ также добавляет список covered_countries верхнего уровня и UTC-метку времени as_of.

GET /api/v1/data/truck-bans?country=PL

Чисто аддитивно — существующие поля current_bans/upcoming_bans/bans_by_country без изменений. Неизвестный ?country= теперь возвращает пустой результат с countries_not_covered вместо запретов всех стран.

2026-07-08 Новое Новый продукт: Advanced Wait Time API (queue-advanced)

Новый подключаемый продукт, который корректирует стандартное время ожидания с учётом живого потока трафика и погоды. Возвращает полную разбивку каждой корректировки.

GET /api/v1/data/queue-advanced?ppid=id_13

Предоставляется по запросу — откройте тикет Data в своей панели, чтобы включить его.

2026-07-08 Улучшение Border Queue API: wait_min теперь заполняется для каждого пункта пропуска

/api/v1/data/border теперь корректно вычисляет wait_min для каждого пункта пропуска в ответе, как в продуктах queue и multi. Ранее это поле всегда было null.

2026-07-08 Улучшение Forecast API: более стабильная модель + работающий сигнал погоды

/api/v1/data/forecast теперь надёжно использует ансамблевую модель v4 для любого значения prediction_steps (ранее некоторые нестандартные горизонты могли тихо откатываться к более старой модели). Погодный фактор, питающий ансамбль, также исправлен и теперь действительно отражает живые условия (дождь, снег, ветер, туман) вместо того, чтобы всегда сообщать о недоступности.

2026-07-02 Новое Экспорт исторических данных (beta)

Одобренные разработчики теперь могут скачивать усреднённые за час исторические данные очередей на границе для до 5 пунктов пропуска (скользящее окно до 90 дней) в формате CSV или NDJSON из новой вкладки Data export. Данные только опубликованные и проверенные на качество; метки времени в UTC. Нужен доступ? Откройте тикет Data.

2026-07-01 Улучшение Регистрация без рабочей страницы — опишите свою идею

Ещё нет сайта? Теперь вы можете создать аккаунт разработчика, описав, где и как планируете использовать наши данные, вместо обязательного ввода URL рабочей страницы. Добавьте настоящий URL позже из своей панели (Account & data → Your project), как только ваш сайт или приложение заработает — видимая обратная ссылка на nakordoni.eu на этой странице требуется нашими Условиями.

2026-06-22 Новое Отправьте приграничные новости за dofollow-ссылку

Разработчики теперь могут отправлять собственные приграничные новости в новостную ленту Nakordoni. Если наши редакторы их опубликуют, вы получите индексируемую dofollow-ссылку на ваш сервис (упоминание издателя + строка источника), и мы бесплатно переведём статью на все 24 языка.

Одна статья в неделю бесплатно; дополнительные статьи — платное дополнение. Выберите 'мы можем немного отредактировать + добавить внутренние ссылки' или 'опубликовать как есть'. Отправляйте и отслеживайте статус проверки в разделе Developers → Submit news.

2026-06-14 Улучшение Multi-Checkpoint API: скидка 50% на квоту

Multi-Checkpoint API (/api/v1/data/multi) теперь списывает квоту по формуле ⌈(N PPIDs × sub-products) / 2⌉ — половина стоимости эквивалентных отдельных вызовов. Запрос на 10 пунктов пропуска с обоими суб-продуктами теперь стоит 10 единиц вместо 20. Заголовок X-Devapi-Units и meta.units_consumed в ответе отражают сниженную сумму.

2026-06-14 Новое Новый продукт: Multi-Checkpoint API (multi)

Получайте живой статус очередей и свежесть данных для до 20 пунктов пропуска одним вызовом API — разработано для создателей дашбордов, которые сейчас опрашивают много PPIDs в цикле.

Квота честно считается как N PPIDs × sub-products запрошенных, так что общее использование идентично отдельным вызовам — но с одним обращением вместо многих. Паттерны в стиле GreenTravel уменьшаются с 24+ вызовов/час до 2.

GET /api/v1/data/multi?ppids=id_2,id_13,id_15,id_59&include=queue,update-info&lang=en
  • include=queue — текущие queue_now, оценённый wait_min, возраст данных и название пункта пропуска
  • include=update-info — свежесть данных, классификация источника, возраст в секундах/минутах
  • Максимум 20 PPIDs на запрос; объедините оба суб-продукта в одном вызове для полных данных дашборда
  • Ответ содержит meta.units_consumed, чтобы вы могли точно отслеживать использование квоты
2026-06-12 Новое Queue API: блок snapshot с прогнозируемым временем ожидания

Ответ продукта queue теперь включает объект snapshot верхнего уровня с самыми свежими данными в реальном времени и вычисленным прогнозируемым временем ожидания — та же формула, что используется в hero-секции nakordoni.eu:

snapshot.queue_now  — current cars in queue
snapshot.wait_min   — prognosed wait time (minutes)
snapshot.updated_at — when the queue data was recorded
snapshot.age_min    — minutes since last update
snapshot.source     — data source identifier

Массив data (исторические записи) без изменений — это чисто аддитивное дополнение. Клиенты, которые не читают snapshot, не затрагиваются.

2026-06-12 Новое Новый продукт: Border Queue API (border)

Запрашивайте все пункты пропуска на заданной границе + тип транспорта одним вызовом вместо того, чтобы делать отдельный запрос на каждый PPID.

GET /api/v1/data/border/{origin}/{destination}/{crossing_type}

  • Поддерживает одну страну назначения, список через запятую или all для разворачивания на всех отслеживаемых соседей сразу.
  • Результаты отсортированы по queue_now по возрастанию (сначала самая короткая очередь).
  • Полностью локализовано: добавьте ?lang=uk (или любой из наших 22 поддерживаемых языков), чтобы получить названия пунктов пропуска на этом языке.
2026-06-12 Новое Новый продукт: Checkpoint Search API (search)

Находите значения PPID пунктов пропуска по названию без просмотра всего каталога.

GET /api/v1/data/search?name=Krakovets,Shehyni&lang=en

  • Принимает одно название или список через запятую (до 20).
  • Ищет по всем 24 языкам перевода — передайте название на украинском, польском, немецком или любом поддерживаемом языке, и оно совпадёт.
  • Возвращает все PPIDs в этой локации, сгруппированные по типу транспорта (легковой / автобус / пешеход / грузовик).
2026-06-12 Улучшение Alternatives API: полная поддержка i18n + переопределение crossing_type

Продукт alternatives теперь принимает ?lang= на всех 22 поддерживаемых языках (было лишь 12).

Новый параметр crossing_type позволяет переопределить фильтр типа транспорта — напр. передайте crossing_type=4, чтобы получить альтернативы для легковых даже при запросе с автобусного PPID.

2026-06-12 Улучшение Checkpoints + Border + Search: локализованные подписи типа пересечения и названия стран

Поле crossing_type_label в ответах checkpoints, border и search теперь переводится на запрошенный язык на всех 22 поддерживаемых языках. Поля названий стран (origin_name, destination_name) следуют той же локали.

2026-06-05 Новое Портал для разработчиков запущен

Портал Nakordoni Developer API работает по адресу /en/developers. Зарегистрируйте бесплатный ключ Explorer (200 requests/day), чтобы получить доступ к данным очередей на границе, прогнозам, ценам на топливо, POI для водителей и не только.

Продукты, доступные на старте: checkpoints, queue, stats, day-stats, forecast, alternatives, update_info, fuel, pois, truck_bans, trading_sundays, bus_carriers, road_conditions, assistant.

Журнал охватывает изменения публичного API. Внутренние обновления не отображаются.

Обновлено