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

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

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

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

2026-09-08 Исправление Fuel prices: a second, honest freshness field, and two language bugs

On Fuel Prices, updated_at and the response's own age_hours/stale flag were running on different clocks: updated_at moves only when a price actually changes, but staleness was computed as if it moved on every confirmation. 46.7% of the priced index showed age_hours ≤48 and stale:false while updated_at was in fact more than 48 hours old, 12,620 stations over a week old. Each price now also carries confirmed_at — the last time we confirmed the price, hour-floored, never earlier than updated_at — and age_hours/stale are computed from it. updated_at's meaning is unchanged: use it when you want to know when the price last moved, use confirmed_at when you want to know how current it is right now. Not present on the frozen v1 contract.

Two language bugs, both silent: sending the canonical grade code as lang=pl (or any of the other 24 site languages) got fuel_type_local back in English regardless — only 10 languages were ever checked against the label table, so anything outside that list fell through to the default UI vocabulary rather than the language you asked for. Separately, lang=tr (or several other valid codes) answered station listings in Ukrainian, because an internal default of uk fired whenever the requested language did not sit in that same 10-language list. Both are fixed: the language you send is now the language you get, across all 25.

Also: brand on Nearby Fuel Stations no longer returns the raw ingest sentinel OTHER for the ~330 stations where we do not know the brand — it is null, consistent with every other unknown field in the response.

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. Внутренние обновления не отображаются.

Обновлено