Журнал изменений API
Все важные изменения API. Новые — вверху. Следуем стабильности v1 — без Breaking changes без новой версии.
Продукт 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.
Версия 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.
Версия 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.
Новая версия 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.
Новый продукт 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 МБ, 500engine_error. - Конфиденциальность: изображения обрабатываются в памяти и никогда не сохраняются.
image_urlдолжен быть публичным адресом; частные и внутренние адреса, а также перенаправления на них, отклоняются.
Стандартная аутентификация ключом, класс квоты heavy. Доступно с /api/v2/; ни один существующий эндпоинт не изменён.
Новый продукт 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.
Продукт 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_eur0 иschemenot_tolled.
Другие страны не меняются. Документация: Truck Toll Cost.
Новый продукт 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.
Два новых продукта в /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.
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.
Четыре новых продукта, доступных через /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.
Три новых продукта для соблюдения норм времени вождения, доступных через /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.
С 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 не меняются.
Цены АЗС в /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 практических изменений нет. Подробнее: Возраст цены.
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.
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.
Когда /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. Ответы со станциями не изменились. Подробнее: Пустые ответы.
Радиус поиска. radius_km в /api/v2/data/fuel-stations теперь сохраняет один десятичный знак. Радиус вроде 4.8 раньше молча обрезался до 4, поэтому каждый поиск охватывал до трети меньшую площадь, чем запрошено, и мог вернуть меньше АЗС или ни одной. anchor.radius_km показывает фактически применённый радиус; целые числа возвращаются как прежде.
Названия брендов. Один и тот же бренд теперь всегда пишется одинаково в brand — например, ORLEN и orlen возвращаются как Orlen, а CircleK — как Circle K. АЗС, цены, идентификаторы и поля не изменились. Если вы сопоставляете бренды по точному написанию (для логотипов или фильтров), проверьте свой список на соответствие новым названиям.
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.
Новый продукт: 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. См. страницу продукта и справочник.
Согласно Условиям использования API, Рынок (Market) — это страна, данные которой вы используете, а ваш ключ охватывает страны, одобренные для вашего аккаунта. До сих пор продукты с координатами (lat/lon — напр. Nearby Shops, Truck Parkings, Fuel Stations) отвечали для любой точки в Европе. С 13 октября 2026, это проверяется при обработке запроса:
- Запрос, у которого
lat/lonнаходится в стране, не одобренной для вашего аккаунта, возвращает 403 сerror.codemarket_not_allowed. В сообщении указывается страна и ваш список одобренных стран. - Если радиус пересекает границу, результаты, чей
country_codeвне одобренных стран, удаляются. Ответ тогда содержитmarkets_filtered(сколько было удалено) иmarkets_notice, аtotal_foundучитывает только полученное.
Это касается аккаунтов, страны которых прошли проверку (статус approved или partial). В запросе ничего не меняется — ни нового параметра, ни новой версии. Если вашему приложению нужна ещё одна страна, добавьте её в портале разработчика до 13 октября. market_not_allowed указан вместе с другими кодами ошибок в справочнике.
Аккаунты разработчиков, связанные с аккаунтом Nakordoni Partners по тому же адресу электронной почты, теперь могут отправлять новости и управлять своим флотом NakBus (NakDriver / NakManager) на partners.nakordoni.eu, с ролями команды (Owner, Manager, Viewer) и входом в один клик между двумя порталами. Страницы портала разработчиков, ключи API, конечные точки флота и приложения остаются без изменений.
В 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, как и для любого другого неизвестного поля в ответе.
Пограничный AI-ассистент (/api/v1/data/assistant) отвечал 503 internal_error — «Ассистент временно недоступен» — когда один и тот же ключ задавал один и тот же вопрос дважды в течение пяти минут. Ничего недоступного при этом не было: в большинстве таких случаев ответ уже был вычислен и готов к выдаче. Теперь он возвращается штатно, с ok: true и HTTP 200.
Если повтор приходит, пока первый ответ ещё формируется, вызов теперь возвращает 429 с error.code = duplicate_request вместо 503, чтобы политика повторов отличала «спросите ещё раз через мгновение» от настоящего сбоя. Оба случая также засчитывались в уровень ошибок вашего аккаунта как серверные; больше нет. В самом запросе ничего не меняется — ни параметра, ни версии. duplicate_request перечислен вместе с остальными кодами ошибок в справочнике.
Стоянки для грузовиков (/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.
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. Ни параметра, ни версии, ни изменений в других полях.
Раньше каждый топливный эндпоинт описывал собственное покрытие списком, составленным вручную: 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 языках сайта.
«Самое дешёвое топливо» (/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[].
На странице оплаты (вкладка «Ежемесячно») доступны два дополнения к любому тарифу, без его смены: Дополнительные вызовы прогнозов — +100 вызовов прогнозов и статистики в сутки за блок, €2 в месяц за блок, до 10 блоков; и Дополнительные страны — +1 страна для декларирования за единицу, €2 в месяц за каждую. При изменении количества вы увидите точный пропорциональный расчёт ещё до списания средств.
С 10 ноября 2026 каждый тариф включает определённое количество задекларированных стран: Explorer и Student — 4, Starter — 10, Pro и выше — без ограничений. С этой даты декларацию, превышающую тариф плюс купленные дополнительные страны, сохранить не получится; вкладка «Аккаунт» уже показывает ваш лимит, а аккаунты, которые его превышают, видят подсказку на дашборде. До 10 ноября ничего не меняется.
Песочница API теперь помечает каждый эндпоинт в списке его классом квоты (Тяжёлый / Стандарт), показывает стоимость в квоте для выбранной версии ещё до запуска, а после вызова показывает, во сколько тот же вызов обошёлся бы вашей рабочей квоте, — включая формулу ceil(N ppids × M sub-products / 2), которая применяется к вызовам вида /multi.
Это предварительный просмотр только для чтения: сами вызовы в песочнице списываются с отдельного тестового бюджета песочницы, а не с вашей рабочей квоты.
С сегодняшнего дня всё, что мы публично объявили выводимым из эксплуатации, закрыто для аккаунтов разработчиков, созданных в день объявления или позже. Если ваш аккаунт существовал до объявления, ничего не меняется — за вами сохраняется полный переходный период вплоть до даты вывода, указанной в записи, которая его объявила.
Зачем это правило. 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", поэтому новая интеграция увидит приближающийся вывод, не читая эту страницу.
Продолжение вчерашнего изменения в 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.
/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=.
Числовые идентификаторы в /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 убирает этот выбор совсем.
API Terms v1.1 заменяют v1.0 ещё до её вступления в силу и действуют с 2026-10-06. Примите их в своей панели.
Раздел 7 теперь определяет, что такое Рынок: это страна, чьи данные вы используете, — та, где находится запрашиваемый пункт пропуска или граница, — а не страна, где живут ваши пользователи. Наша панель в разных местах говорила и то, и другое; на практике применялось всегда первое.
Два изменения в вашу пользу. Страны, уже одобренные для вашего аккаунта, остаются доступными, пока рассматривается более позднее изменение (добавление страны больше не приостанавливает те, что у вас уже есть). И если мы не ответили на декларацию рынка в течение 5 рабочих дней, до момента ответа действуют полные лимиты вашего тарифа.
Раздел 10.3 теперь соответствует тому, что на самом деле запрашивает панель, а раздел 13.2 фиксирует основу доступности, которую мы измеряем и можем вам показать.
Три продукта теперь несут дополнительное поле 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-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.
Рассчитываемый запрет из-за жары в Украине — возвращается с include_ua_heat, а для country=UA автоматически — теперь отвечает за тот период дат, который вы запрашиваете. Раньше он возвращал ближайшие семь дней независимо от date_from и date_to, поэтому для декабрьского окна тихо приходили строки этой недели. Запрет вычисляется из прогноза погоды, а не читается из календаря запретов, поэтому у него две границы, которых нет у календаря: он не смотрит назад и заканчивается там, где заканчивается прогноз. Теперь ваш период пересекается с тем, что реально охватывает прогноз, а новое поле ua_heat_ban.forecast_horizon указывает последнюю доступную дату. Период за этой границей возвращает пустой список и объясняет причину в summary — это не то же самое, что «запрета нет». Ответы v1 не изменились.
Форма ответа раньше нигде не была описана — единственным способом узнать, что возвращает продукт, был его вызов. Теперь на странице каждого продукта под таблицей параметров есть таблица Поля ответа с кратким описанием каждого поля; поля элементов списка показаны как items[].name, а поля уровня конверта (usage, meta, snapshot, resolved_location) — без префикса. Описано 40 продуктов из 42: два ещё не запущенных (weather, road-quality) намеренно остались без описания. Та же таблица публикуется в нашем открытом зеркале документации на GitHub.
Теперь каждый топливный продукт принимает локальное название марки, а не только наше внутреннее написание: 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, сопоставляющий каждый ключ цены с маркой и её названием на заправке.
Продукт 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.
Три исправления качества ответов по итогам аудита шлюза (тикет #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 для локализации подписей — он просто не был указан.
Два исправления и одна новая версия продукта 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.»
Продукт 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, когда правило касается класса перевозок (опасные грузы), а не тоннажа.
Продукты fuel-stations и fuel-cheapest теперь возвращают цены по отдельным АЗС в Польше. Покрытие частичное — агломерация Труймясто (Гданьск, Гдыня, Сопот), — поэтому Польша указана в новом дополнительном массиве coverage.sparse_coverage рядом с существующим списком coverage.station_countries. Страна из списка sparse_coverage имеет данные по станциям лишь для части своей территории; запрос в другом месте этой страны возвращает пустой список вместе с примечанием о покрытии, как и раньше. Польские цены указаны в PLN.
Ошибка массового запроса тоже стала понятнее: если lat отсутствует, сообщение scope_required теперь указывает на продукт fuel (?country=XX) для средних цен по стране.
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 не изменились.
Новый эндпоинт GET /api/v2/data/fuel-local?lat=&lon= возвращает лучшую доступную цену на топливо для любой точки Европы. Там, где есть данные по отдельным АЗС, он отвечает ценами ближайших станций, иначе — средней ценой по стране, в которой находится точка, включая Украину, где данных по отдельным АЗС нет нигде.
В каждом ответе есть поле resolution, указывающее уровень, который ответил: station (список станций с distance_km, каждая в своей валюте) или country (один объект со средними ценами по стране). Ветвите код по resolution, а не по форме ответа. Доступно начиная с /api/v2/; fuel, fuel-stations и fuel-cheapest не изменились.
Продукты fuel-stations и fuel-cheapest теперь охватывают значительно больше АЗС в Германии, а цены обновляются в течение всего дня — включая сельскую местность. Параметр fuel_type принимает 13 видов топлива: diesel, e5, e10, superplus, super100, premdiesel, truckdiesel, hvo, lpg, cng, adblue, e85 и lng. Если ни одна АЗС не подходит под запрос, в ответ добавляется объект coverage со списком стран, по которым есть данные о заправках.
Параметр radius= теперь принимается как совместимый алиас для radius_km во всех продуктах, где он задокументирован. Продукты fuel-stations и fuel-cheapest возвращают дополнительный объект coverage (список стран с АЗС и примечание) вместо молчаливого пустого результата, когда подходящих станций нет. Объекты пунктов пропуска в route-plan теперь содержат дополнительный ключ wait_basis (car_lane или vehicle_lane), чтобы клиент видел, когда время ожидания для грузовиков взято из легковой полосы. Сопоставление грузовых пунктов пропуска вдоль маршрута стало заметно точнее: запасной вариант по легковой полосе для пар пунктов без данных по грузовой полосе, защита от неверного направления, более строгий порог расстояния и удаление дублей переходов с одинаковыми координатами. Все изменения аддитивные, обратная совместимость сохранена.
На странице для разработчиков теперь есть разделы с якорями (#products, #plans, #quickstart, #integrations, #datasets, #apps, #companies, #showcase) и навигацией по переходам, а каждая карточка продукта ведёт на собственную страницу документации. Новый раздел Mobile apps представляет Kordon Online и Truck Bans со ссылками на Google Play. Дополнение переводов: история платежей, ошибки входа, ссылки на песочницу и кнопка выбора тарифа теперь локализованы на всех 25 языках.
Ответ маяка автопарка (POST /api/v1/fleet_position.php) теперь включает массив messages, доставляющий ожидающие сообщения от владельца к водителю. Новый JSON-поток в реальном времени только для владельца (?ajax=live) и карточка «Сообщения водителям» на панели автопарка. Новая страница приглашения водителя /{lang}/get-nakbus (25 языков).
Локализованы название, описание и параметры product_fleet_vehicles/live/history, а также параметры истории автопарка для всех 25 языков портала разработчиков.
/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 или пусто, если не применимо), что упрощает разбор данных на стороне клиента.
Девять новых продуктов для отдельных сервисов. Те, что связаны с местоположением, принимают 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. Все девять доступны в песочнице.
Каждый запрет в /api/v1/data/truck-bans теперь содержит restriction_type (General / Local / Sunday / Holiday / Seasonal), restriction_details (точную зону действия или список дорог) и min_weight_tons. details_url теперь ведёт на страницы по отдельным странам на nakordoni.eu. Новый необязательный параметр lang задаёт язык названий стран и сводки; по умолчанию теперь английский.
Некорректный ?ppid= теперь возвращает настоящую причину вместо короткого "Request failed": ошибка называет параметр, ожидаемый формат id_<number> и указывает на /api/v1/data/checkpoints. Таблицы параметров для stats, forecast, update-info, weather и bus-carriers теперь показывают пример id_13 на всех 25 языках.
Обновлённая оболочка портала (верхняя панель, боковое меню со значками, панель KPI, карточные макеты) теперь применяется по умолчанию для всех авторизованных аккаунтов разработчиков — раньше запланированного запуска 10 августа. Чтобы в любой момент вернуться к классическому виду, используйте ?v=1 для возврата к классическому виду.
Все страницы портала разработчика — главная, документация, панель управления, AI Studio, песочница, тикеты, заявки, экспорт, автопарк, новости, журнал изменений и страницы аккаунта — больше не загружают рекламные скрипты и рекламные блоки. Это действует на всём портале, а не только на входе и регистрации, как раньше.
Спланируйте всю приграничную поездку одним запросом: /api/v2/data/route-plan возвращает маршрут, пункты пропуска, действительно лежащие на нём, с текущей очередью или прогнозом на время вашего прибытия, и остановки, которые водитель реально делает — перерывы на отдых, еду, заправку — на одной шкале времени.
Граница — часть этой шкалы. Долгая очередь засчитывается как назревший перерыв и обнуляет счётчик времени за рулём, поэтому трёхчасовое ожидание никогда не подаётся как три часа плюс полный набор перерывов, которых никто не делал. Для легковых действует модель безопасного вождения; автобусы и грузовики получают обязательный отдых по ЕС 561/2006, а сервисные издержки автобусов откалиброваны более чем на 1000 лицензированных международных расписаний. Добавьте stop_places=1, чтобы для каждой остановки назвать реальную зону отдыха или заправку, и via=lat,lon, чтобы проложить путь через другой пункт пропуска.
Новое в меню портала: Презентация — живая, всегда актуальная презентация дата-платформы nakordoni, персонализированная под ваш рынок (страхование, туризм, логистика, перевозчики, медиа, навигация, топливо, финтех, госсектор или личные проекты). Она показывает реальные объёмы платформы за 30 дней, ваше собственное использование API, статистику времени ответа и лимитов, а также рекомендацию тарифа, когда ваши вызовы упираются в границы бесплатного уровня. Выберите или подтвердите свой рынок (или несколько) на странице, в профиле — либо при регистрации. Она открывается автоматически при первом посещении; автооткрытие можно отключить на самой странице.
Если у ассистента включена лента, но вызов не несёт нужный ей контекст — например, queue без ppid— лента теперь пропускается до отправки любого запроса и не тарифицируется. Раньше её всё равно вызывали, она завершалась ошибкой и всё равно стоила единицу. Студия показывает, что нужно каждой ленте, пересчитывает цену по мере заполнения контекста и отмечает результаты ✓ выполнено / ⊘ пропущено, без оплаты / ✕ ошибка; API возвращает data.feeds_skipped , где точно указано, какой параметр передать.
Ответы больше не упоминают ленты, источники данных и вообще ничего технического: отсутствующая лента — это максимум одно обычное предложение для конечного пользователя, но не внутреннее название. Ленты только с необязательными фильтрами (например, fuel , суженная до страны, по которой у нас нет данных) теперь возвращаются к широкому набору данных вместо пустого ответа.
Новое: /{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 не изменился.
Каждый ассистент работает по политике контента платформы, которая имеет приоритет над вашими инструкциями: никакого выдавания себя за должностных лиц, никакой помощи в обходе пограничного или таможенного контроля, никаких выдуманных цифр, никакой брани. Проверяются и инструкции, и ответы; заблокированные вызовы журналируются.
Новое: настоящий MCP-сервер по адресу https://nakordoni.eu/mcp, предоставляющий безопасное подмножество API только для чтения (status, checkpoints, border queue, live queue, forecast) в виде MCP-инструментов. Тот же API-ключ и квота, что и в REST API. Карточка сервера по адресу /.well-known/mcp/server-card.json. См. раздел MCP-сервер в документации.
Описанное ниже переименование в «Live Queue & Freshness API» фактически не дошло до страницы документации . Страница выводит название каждого продукта через поиск перевода, который обращается к заголовку эндпойнта только при отсутствии перевода — а перевод уже существовал, зафиксированный на старом названии, на всех 25 языках интерфейса. Теперь он имеет приоритет над любым будущим обновлением базового заголовка, пока не будет обновлён сам.
Ключ перевода переименован на всех 25 языках, так что страница документации теперь совпадает. Никаких изменений эндпойнта, параметров или ответа — только текст заголовка.
Если вы часто опрашиваете данные живой очереди, вы, возможно, тратите тяжёлую квоту без необходимости. /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», и возвращаемые поля перечислены явно. Спасибо разработчику, который на это указал.
Некоторые неудачные запросы возвращали 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 напрямую, он теперь увидит конверты ошибок на вызовах, которые и так всегда были неудачными.
Исправлена ошибка, из-за которой /multi мог возвращать неверное количество в очереди для части пунктов пропуска — в основном балканских и на границе Венгрия–Сербия — всякий раз, когда его кэш был холодным. Резервный путь читал таблицу, которая для этих пунктов не содержит данных об очереди, и выдавал посторонние значения как число автомобилей. Измеренные примеры: пункт с 12 автомобилями показывал 6, а несколько пунктов с реальными очередями показывали 0.
Три изменения, которые вы можете заметить:
found: falseтеперь означает, что свежих данных об очереди действительно нет. Раньше вы могли получитьfound: trueс выдуманнымqueue_now: 0.wait_status,trend_percentиtrend_directionтеперь возвращаются при «холодных» запросах — раньше они былиnull.- Эндпойнт также переходит на резервный путь, когда его кэшированный снимок устарел (старше 24 ч), а не только когда он отсутствует.
Никаких изменений в параметрах запроса, стоимости квоты или структуре ответа.
Исправлена ошибка, из-за которой каждый вызов /multi тарифицировался дважды — сначала общей проверкой на 1 единицу, а затем собственной формулой переменной стоимости эндпоинта (N PPID × подпродукты). Теперь вызов стоит ровно ⌈(N×M)/2⌉ единиц, как и задокументировано, без дополнительного начисления.
Также на странице документации добавлен значок класса квоты (Standard/Heavy) для каждого продукта, чтобы сразу было видно, какую дневную квоту расходует эндпоинт.
country и countries объединены в один параметр (1-15 кодов через запятую). Новый параметр compare_to: сравнение одинаковых и разных праздников между странами, сочетается с upcoming+days. lang теперь принимает несколько языков (добавляет объект names). days=0 или отсутствие значения теперь означает без ограничения в режиме upcoming.
Официальные государственные праздники для каждой европейской страны — даты, местные названия и тип. Работает на том же сервисе Nager.Date / OpenHolidaysAPI (с локально вычисляемым календарем Косово), что и страница календаря праздников nakordoni.eu и календарные факторы системы прогнозирования.
?country=PL&year=2026— полный годовой список праздников для одной страны?upcoming=1&days=30— плоский список ближайших праздников по странам- Без параметров — индекс базового набора стран с ближайшим праздником для каждой
Добавлен продукт currency — курсы обмена на основе EUR для PLN, CZK, HUF, USD, GBP, CHF, NOK и UAH, из источника Frankfurter (ECB), кешируются на 6 часов. Без параметров, всегда возвращает полную таблицу курсов. См. документацию.
Встройте актуальные европейские запреты движения грузовиков на свой сайт — бесплатный 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-фид остаются доступными.
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) с переключателем версий на эндпоинтах, у которых больше одной версии.
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 для исторических сравнений.
queue, border, multi, update-info
В рамках проверки безопасности/приватности удалены следующие поля — они раскрывали внутренние детали реализации (нашу таксономию источников данных, идентификаторы строк БД, внутренние аннотации конвейера, неиспользуемые/мёртвые поля) без реальной продуктовой ценности:
idиcorrected— удалены из объектов строкqueuesource(сырая строка, напр."line") — удалено изqueue,multiиupdate-info.update-infoиmulti(его блокupdate_info) по-прежнему содержатsource_category/source_label_en(небольшой публичный словарь);queueиmulti(его блокqueue) больше не содержат никакого поля источникаtraffic_status— удалено изborder; оно всегда былоnullи никогда не заполнялось ни одной частью системы
Если ваша интеграция читает любое из этих полей, обновите её — см. текущий перечень полей на странице документации соответствующего продукта.
usage.used теперь может быть дробным числом
Суточное использование квоты (usage.used в каждом ответе) теперь может быть десятичным значением (напр. 67.5) вместо всегда целого числа. Это побочный эффект того, что queue-advanced тарифицируется по дробной ставке — см. ниже. usage.limit не затрагивается и всегда является целым числом. Если ваш клиент строго типизирует usage.used как целое число, расширьте его до приёма десятичного/дробного значения.
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 часов). Чисто аддитивно.
queue: wait_time теперь заполняется в каждой исторической строке
В /api/v1/data/queue строки data[] ранее имели wait_time: null для большинства источников — лишь несколько внешних фидов сообщают время ожидания напрямую. Строки без него теперь получают стандартную оценку , помеченную новым булевым значением wait_time_estimated, чтобы вы могли отличить реально сообщённое значение от вычисленного.
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 без изменений.
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 вместо запретов всех стран.
queue-advanced)
Новый подключаемый продукт, который корректирует стандартное время ожидания с учётом живого потока трафика и погоды. Возвращает полную разбивку каждой корректировки.
GET /api/v1/data/queue-advanced?ppid=id_13
Предоставляется по запросу — откройте тикет Data в своей панели, чтобы включить его.
/api/v1/data/border теперь корректно вычисляет wait_min для каждого пункта пропуска в ответе, как в продуктах queue и multi. Ранее это поле всегда было null.
/api/v1/data/forecast теперь надёжно использует ансамблевую модель v4 для любого значения prediction_steps (ранее некоторые нестандартные горизонты могли тихо откатываться к более старой модели). Погодный фактор, питающий ансамбль, также исправлен и теперь действительно отражает живые условия (дождь, снег, ветер, туман) вместо того, чтобы всегда сообщать о недоступности.
Одобренные разработчики теперь могут скачивать усреднённые за час исторические данные очередей на границе для до 5 пунктов пропуска (скользящее окно до 90 дней) в формате CSV или NDJSON из новой вкладки Data export. Данные только опубликованные и проверенные на качество; метки времени в UTC. Нужен доступ? Откройте тикет Data.
Ещё нет сайта? Теперь вы можете создать аккаунт разработчика, описав, где и как планируете использовать наши данные, вместо обязательного ввода URL рабочей страницы. Добавьте настоящий URL позже из своей панели (Account & data → Your project), как только ваш сайт или приложение заработает — видимая обратная ссылка на nakordoni.eu на этой странице требуется нашими Условиями.
Разработчики теперь могут отправлять собственные приграничные новости в новостную ленту Nakordoni. Если наши редакторы их опубликуют, вы получите индексируемую dofollow-ссылку на ваш сервис (упоминание издателя + строка источника), и мы бесплатно переведём статью на все 24 языка.
Одна статья в неделю бесплатно; дополнительные статьи — платное дополнение. Выберите 'мы можем немного отредактировать + добавить внутренние ссылки' или 'опубликовать как есть'. Отправляйте и отслеживайте статус проверки в разделе Developers → Submit news.
Multi-Checkpoint API (/api/v1/data/multi) теперь списывает квоту по формуле ⌈(N PPIDs × sub-products) / 2⌉ — половина стоимости эквивалентных отдельных вызовов. Запрос на 10 пунктов пропуска с обоими суб-продуктами теперь стоит 10 единиц вместо 20. Заголовок X-Devapi-Units и meta.units_consumed в ответе отражают сниженную сумму.
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, чтобы вы могли точно отслеживать использование квоты
Ответ продукта 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, не затрагиваются.
border)
Запрашивайте все пункты пропуска на заданной границе + тип транспорта одним вызовом вместо того, чтобы делать отдельный запрос на каждый PPID.
GET /api/v1/data/border/{origin}/{destination}/{crossing_type}
- Поддерживает одну страну назначения, список через запятую или
allдля разворачивания на всех отслеживаемых соседей сразу. - Результаты отсортированы по
queue_nowпо возрастанию (сначала самая короткая очередь). - Полностью локализовано: добавьте
?lang=uk(или любой из наших 22 поддерживаемых языков), чтобы получить названия пунктов пропуска на этом языке.
search)
Находите значения PPID пунктов пропуска по названию без просмотра всего каталога.
GET /api/v1/data/search?name=Krakovets,Shehyni&lang=en
- Принимает одно название или список через запятую (до 20).
- Ищет по всем 24 языкам перевода — передайте название на украинском, польском, немецком или любом поддерживаемом языке, и оно совпадёт.
- Возвращает все PPIDs в этой локации, сгруппированные по типу транспорта (легковой / автобус / пешеход / грузовик).
crossing_type
Продукт alternatives теперь принимает ?lang= на всех 22 поддерживаемых языках (было лишь 12).
Новый параметр crossing_type позволяет переопределить фильтр типа транспорта — напр. передайте crossing_type=4, чтобы получить альтернативы для легковых даже при запросе с автобусного PPID.
Поле crossing_type_label в ответах checkpoints, border и search теперь переводится на запрошенный язык на всех 22 поддерживаемых языках. Поля названий стран (origin_name, destination_name) следуют той же локали.
Портал 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. Внутренние обновления не отображаются.
Обновлено