Документация API
REST + JSON через HTTPS. Один базовый URL, один ключ, предсказуемые конверты.
| Базовый URL | https://nakordoni.eu/api/v1/data/ |
|---|---|
| Формат | JSON, UTF-8 |
| Аутентификация | Authorization: Bearer NKD-DEV-… |
| Версионирование | Версия в пути и отдельно для каждого эндпоинта: /api/v1/… стабилен; /api/v2/… отдаёт новое поведение только для изменившихся эндпоинтов, а для остальных прозрачно возвращается к v1. Ответы v1 никогда не меняются. |
На этой странице
Аутентификация
Каждый запрос требует вашего ключа API в заголовке Authorization (рекомендуется) или как параметр ?key=.
curl "https://nakordoni.eu/api/v1/data/queue?ppid=id_13" \ -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
Формат ответа
{
"ok": true,
"api_version": "v1",
"product": "queue",
"attribution": "Data by nakordoni.eu",
"data": { ... },
"usage": { "limit": 1000, "used": 42, "reset": "2026-06-06T00:00:00Z" }
}
Ошибки возвращают ok:false с error.code (missing_api_key, invalid_api_key, qps_exceeded, quota_exceeded, unknown_product, product_unavailable, bad_request, internal_error) и HTTP-статусом 401/403/404/429/500. Заголовки ограничения частоты X-Devapi-Limit и X-Devapi-Remaining отправляются в каждом тарифицируемом ответе.
Квоты
| Explorer | Pay As You Grow | |
|---|---|---|
| вызовов/день для стандартных API данных | 1,000 | 50,000 |
| вызовов/день для API прогнозов и статистики | 200 | 10,000 |
| QPS | 2 | 20 |
Дневные счётчики сбрасываются в полночь по UTC. Вы получаете email при достижении 80% и 100% квоты.
Примеры кода
curl
curl "https://nakordoni.eu/api/v1/data/queue?ppid=id_13" \ -H "Authorization: Bearer $NKD_API_KEY"
JavaScript (fetch)
const res = await fetch('https://nakordoni.eu/api/v1/data/forecast?ppid=id_13&prediction_steps=24', {
headers: { Authorization: `Bearer ${process.env.NKD_API_KEY}` }
});
const { ok, data, error, usage } = await res.json();
if (!ok) throw new Error(error?.code ?? res.status);
console.log(`forecast points: ${data.length}, calls left today: ${usage.limit - usage.used}`);
Python (requests)
import os, requests
r = requests.get(
"https://nakordoni.eu/api/v1/data/stats",
params={"ppid": "id_15", "compare": 1},
headers={"Authorization": f"Bearer {os.environ['NKD_API_KEY']}"},
timeout=15,
)
payload = r.json()
print(payload["data"]["daily"], payload["usage"])
Excel (Power Query)
Получайте данные об очередях, прогнозах и запретах для грузовиков прямо в таблицу с помощью встроенного JSON-коннектора Power Query — без кода, с обновлением по расписанию. Та же схема заголовков (Headers) работает для любого продукта этого API — достаточно изменить URL.
Data → Get Data → From Other Sources → Blank Query, then Home → Advanced Editor and paste:
let
ApiKey = "NKD-DEV-XXXX-XXXX-XXXX",
Source = Json.Document(Web.Contents("https://nakordoni.eu/api/v1/data/queue",
[Query = [ppid = "id_13"], Headers = [Authorization = "Bearer " & ApiKey]])),
data = Source[data],
AsTable = Record.ToTable(data)
in
AsTable
Храните ключ API внутри M-запроса (Home → Advanced Editor), а не в ячейке листа — Power Query блокирует веб-запрос, построенный на основе другого запроса или ячейки ("Formula.Firewall"), если уровень конфиденциальности не установлен как Organizational.
Несколько пунктов пропуска в одной таблице (дашборды автопарка) — e.g. every truck crossing UA→EU (crossing_type=9):
let
ApiKey = "NKD-DEV-XXXX-XXXX-XXXX",
Source = Json.Document(Web.Contents("https://nakordoni.eu/api/v1/data/border/1/all/9",
[Headers = [Authorization = "Bearer " & ApiKey]])),
checkpoints = Source[data],
AsTable = Table.FromRecords(checkpoints)
in
AsTable
Data → Refresh All в Excel или запланированное обновление в Power BI / Excel Online поддерживает актуальность данных — без кода опроса (polling).
Интеграция с ERP (BAS / BAF и платформы семейства 1С)
BAS / BAF и другие платформы семейства 1С могут обращаться к этому API прямо из регламентного задания — HTTPConnection плюс ReadJSON, без промежуточного сервиса. Самый частый сценарий: поддерживать в актуальном состоянии регистр сведений с ценами на топливо в ЕС.
Обновление регистра сведений (цены на топливо, все страны одним запросом)
// Scheduled job — runs once a day
Connection = New HTTPConnection("nakordoni.eu", 443, , , , 30, New OpenSSLSecureConnection);
Headers = New Map;
Headers.Insert("Authorization", "Bearer NKD-DEV-XXXX-XXXX-XXXX");
Request = New HTTPRequest("/api/v1/data/fuel", Headers);
Response = Connection.Get(Request);
Reader = New JSONReader;
Reader.SetString(Response.GetBodyAsString("UTF-8"));
Answer = ReadJSON(Reader, True);
Reader.Close();
If Answer["ok"] <> True Then
// Answer["error"]["code"] says why; Answer["usage"] holds your quota state
Return;
EndIf;
For Each Row In Answer["data"] Do
Record = InformationRegisters.FuelPrices.CreateRecordManager();
Record.Period = CurrentSessionDate();
Record.Country = Row["country"]; // "PL", "DE", "SK", "RO", ...
Record.Diesel = Row["diesel"];
Record.Petrol = Row["petrol"];
Record.LPG = Row["lpg"];
Record.Currency = Row["currency"];
Record.Write();
EndDo;
Три вещи, которые важно сделать правильно: передайте New OpenSSLSecureConnection на порт 443, иначе запрос упадёт на TLS; вызывайте /api/v1/data/fuel без параметра country — один запрос вернёт все страны вместо отдельного вызова на каждую; и проверяйте ok, прежде чем читать data — ошибки приходят как ok:false с error.code, а не как исключение. В примере использован англоязычный набор ключевых слов платформы; локализованные аналоги (HTTPСоединение, ПрочитатьJSON, РегистрыСведений) работают идентично.
Цены на топливо в источниках меняются раз в сутки, поэтому регламентного задания раз или два в день достаточно — и это остаётся далеко внутри бесплатной квоты Explorer. Данные живых очередей (queue, multi, border) обновляются каждые несколько минут: опрашивайте их по своему графику и берите multi, чтобы прочитать до 20 пунктов пропуска одним запросом вместо цикла.
MCP-сервер
Предпочитаете вызов инструментов вместо REST? Мы запускаем настоящий MCP-сервер (транспорт Streamable HTTP), предоставляющий безопасное подмножество этого API только для чтения в виде MCP-инструментов — тот же API-ключ, та же квота, просто другой транспорт.
Endpoint: https://nakordoni.eu/mcp · Server card: /.well-known/mcp/server-card.json
get_api_status — no key required list_checkpoints — country, lang get_border_queue — origin, destination, crossing_type, lang get_live_queue — ppid, lang get_queue_forecast — ppid, prediction_steps
Настройка клиента (Claude Desktop / Claude Code):
{
"mcpServers": {
"nakordoni": {
"url": "https://nakordoni.eu/mcp",
"headers": { "Authorization": "Bearer NKD-DEV-XXXX-XXXX-XXXX" }
}
}
}
Продукты
Выберите эндпоинт, чтобы увидеть полный справочник, параметры, версии и живую песочницу.
Стандарт использует стандартную квоту данных · Тяжёлый использует квоту прогноза и статистики — см. Квоты
Очереди на границе
Текущее состояние каждого продукта Developer API: онлайн / деградирован / офлайн, задержка ответа и время последней проверки. Пуб…
Справочник всех отслеживаемых пограничных пунктов пропуска: ID, названия, страны, координаты и статус. Используйте его, чтобы пол…
Все КПП на заданной границе для одного типа транспорта в одном запросе — живая очередь, оценка времени и свежесть данных. Поддерж…
Найдите PPID КПП по названию на любом языке. Возвращает все PPID для этого места, сгруппированные по типу транспорта. До 20 назва…
Очереди в реальном времени, оценка времени ожидания и статус для любого КПП. Содержит блок snapshot: текущая очередь (queue_now),…
Получайте статус очереди и актуальность данных для до 20 контрольных точек в одном запросе. Квота рассчитывается как ⌈(N PPID × п…
Ближайшие альтернативные пункты пропуска на той же границе с текущими очередями и разницей в расстоянии.
Когда пункт пропуска обновлялся в последний раз, каким источником, и оценка свежести.
Прогнозы и статистика
Прогноз уровней очереди на основе ML-ансамбля: горизонты на 24 часа и 7 дней (168 ч) с доверительными границами. Та же модель, чт…
Почасовая историческая статистика очереди по пункту пропуска и дате: 24 почасовых значения, суточное среднее/минимум/максимум, пи…
Статистика типичной недели для КПП: матрица 7×24 «день недели × час» (медиана + диапазон p25/p75), самый тихий/загруженный день, …
Топливо и локации
Средние цены на бензин/дизель/LPG по странам ЕС, а также ближайшие заправки, агрегированные из официальных национальных источнико…
Цены на топливо по городам страны: самая дешёвая АЗС и среднее по 5 ближайшим станциям.
Стоянки для грузовиков (14 тыс.+), бесплатные душевые, сервисы и супермаркеты по всей Европе с координатами.
Обменные курсы на базе EUR для PLN, CZK, HUF, USD, GBP, CHF, NOK и UAH, источник Frankfurter (ECB), кеш 6 часов. Без параметров —…
Планирование маршрута
План поездки от двери до двери: маршрут, пункты пропуска на нём с текущей очередью или прогнозом на время вашего прибытия и остан…
Время в пути + очередь на границе для всех пунктов пропуска из заданной точки отправления.
Европейские ограничения движения грузовиков по стране и дате, включая сезонные и праздничные запреты.
Правила воскресной розничной торговли и ближайшие торговые воскресенья для каждой регулируемой страны ЕС.
Official public holidays per European country — dates, local names and type, each country's full holiday list included. Backed by…
Водители и дороги
Подтверждённые отчёты о состоянии дорог вблизи границ и на основных коридорах: ямы, дорожные работы, перекрытия, гололёд, опаснос…
Показатели пересечения границы по автобусному перевозчику: пересечения, среднее/медианное/мин/макс время ожидания в минутах — пос…
ИИ-ассистент
Задайте нашему продакшн AI-ассистенту любой вопрос о пересечении границы (очереди, прогнозы, правила, топливо, маршруты) и получи…
Ваш собственный AI-ассистент, отвечающий на основе ВАШЕГО контента и НАШИХ живых данных о границе. Дайте нам свои markdown-файлы …
Другое
Экспорт исторических данных
Одобренные разработчики могут скачать опубликованную историю очередей на границе, усреднённую по часам, для до 5 пунктов пропуска (скользящее окно до 90 дней) в формате gzip-CSV, NDJSON или JSON. Это возможность только в портале — НЕ эндпоинт API; экспорты вы формируете и скачиваете на вкладке «Экспорт данных» в своём аккаунте.
Доступ предоставляется по запросу: откройте тикет категории Data и укажите, какие пункты пропуска, за какой период и для чего они вам нужны. После одобрения в вашем аккаунте появится вкладка «Экспорт данных». Лимит по умолчанию: 1 экспорт в день, до 5 пунктов пропуска в каждом — попросите нас поднять его.
Поля — одна строка на пункт пропуска за каждый час UTC
| Параметр | Описание |
|---|---|
ppid | Идентификатор пункта пропуска |
checkpoint_name | Название пункта пропуска |
hour_utc | Час, ISO-8601 UTC |
direction | напр. UA->PL |
vehicle_type | легковой / автобус / грузовик / пешеход |
avg_queue_length | Средняя длина очереди за час |
avg_wait_minutes | Среднее время ожидания за час; null там, где у пункта пропуска нет официального источника времени ожидания |
sample_count | Количество наблюдений за час |
Данные только опубликованные, и перед экспортом они проходят наши проверки аномалий и качества (никаких сырых данных отдельных сообщений). Все метки времени — UTC. Файлы хранятся 10 дней.
Происхождение: каждый файл содержит в заголовке подписанный отпечаток (sha256 + HMAC), поэтому любую копию можно позже подтвердить как подлинные данные nakordoni.eu и проверить на изменения — даже после скачивания.
# sha256: 3f9c… # signature: e87b… ppid,checkpoint_name,hour_utc,direction,vehicle_type,avg_queue_length,avg_wait_minutes,sample_count id_10,Hrushiv,2026-06-12T02:00:00Z,UA->PL,car,11,,4
Что вы можете создать
Те же продукты данных формируют визуализации на nakordoni.eu — недельные графики прогнозов, почасовые профили очередей, карточки статуса в реальном времени. Небольшой пример того, что содержат API прогнозов и статистики:
Атрибуция
Интеграции плана Explorer должны показывать видимую ссылку "Data by nakordoni.eu" везде, где отображаются данные. Это сохраняет бесплатный план бесплатным.
Точный код
Скопируйте этот фрагмент как есть. Ссылка должна оставаться индексируемой: обычный HTML <a href>, по которому могут переходить поисковики — НЕ добавляйте rel="nofollow" или rel="sponsored", не рендерьте её только через JavaScript и не скрывайте через CSS.
<a href="https://nakordoni.eu/" title="Border queues, forecasts & statistics">Data by nakordoni.eu</a>
Компактный мелкий вариант (например, под графиком или виджетом):
<p style="font-size:12px;margin:4px 0"> Data by <a href="https://nakordoni.eu/">nakordoni.eu</a> </p>
Можно ссылаться на свою языковую версию, например https://nakordoni.eu/ru/ — засчитывается любая индексируемая ссылка на nakordoni.eu. Текст якоря "Data by nakordoni.eu" должен оставаться на английском.
Где размещать
- Непосредственно рядом или под блоком данных (таблица, график, виджет, ответ) — на том же экране, видимо без дополнительных кликов.
- На каждой странице или экране приложения, где отображаются наши данные — не только на странице "о нас".
- Читаемый размер и контраст: минимум ~11px, не скрыто, не свернуто, не цветом фона.
- Нативные мобильные приложения без HTML-ссылок: показывайте текст "Data by nakordoni.eu" на экране с данными и разместите кликабельную ссылку на экране "о приложении".
Мы периодически проверяем атрибуцию на "странице использования данных", указанной при регистрации. Отсутствие или деиндексация атрибуции на плане Explorer ведёт сначала к напоминанию, затем к приостановке ключа. Клиенты Pay As You Grow могут не указывать атрибуцию.