Documentación de la API
REST + JSON sobre HTTPS. Una URL base, una clave, envelopes predecibles.
| URL base | https://nakordoni.eu/api/v1/data/ |
|---|---|
| Formato | JSON, UTF-8 |
| Auth | Authorization: Bearer NKD-DEV-… |
| Versionado | Versionado en la ruta y por endpoint: /api/v1/… es estable; /api/v2/… sirve el comportamiento nuevo solo para los endpoints que han cambiado y recurre de forma transparente a v1 para el resto. Las respuestas de v1 no cambian nunca. |
En esta página
Autenticación
Cada solicitud necesita tu clave API en la cabecera Authorization (recomendado) o como parámetro ?key=.
curl "https://nakordoni.eu/api/v1/data/queue?ppid=id_13" \ -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
Envelope de respuesta
{
"ok": true,
"api_version": "v1",
"product": "queue",
"attribution": "Data by nakordoni.eu",
"data": { ... },
"usage": { "limit": 1000, "used": 42, "reset": "2026-06-06T00:00:00Z" }
}
Los errores devuelven ok:false con error.code (missing_api_key, invalid_api_key, qps_exceeded, quota_exceeded, unknown_product, product_unavailable, bad_request, internal_error) y estado HTTP 401/403/404/429/500. Las cabeceras de límite de tasa X-Devapi-Limit y X-Devapi-Remaining se envían en cada respuesta medida.
Cuotas
| Explorer | Pay As You Grow | |
|---|---|---|
| llamadas/día en las API de datos estándar | 1,000 | 50,000 |
| llamadas/día en las API de previsiones y estadísticas | 200 | 10,000 |
| QPS | 2 | 20 |
Los contadores diarios se reinician a medianoche UTC. Recibes un correo al 80% y al 100% de la cuota.
Ejemplos de código
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)
Trae datos en vivo de colas, previsiones o prohibiciones para camiones directamente a un libro con el conector JSON integrado de Power Query — sin código, con actualización programada. El mismo patrón de Headers funciona para cualquier producto de esta API — solo cambia la 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
Guarda la clave API dentro de la consulta M (Home → Advanced Editor), no en una celda de la hoja — Power Query bloquea una solicitud web construida a partir de otra consulta o celda ("Formula.Firewall") a menos que el nivel de privacidad esté establecido en Organizational.
Varios pasos fronterizos en una sola tabla (paneles de flota) — 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 en Excel, o una actualización programada en Power BI / Excel Online, mantiene los datos al día — sin código de sondeo (polling).
Integración con ERP (BAS / BAF y plataformas de la familia 1C)
BAS / BAF y las demás plataformas de la familia 1C pueden llamar a esta API directamente desde una tarea programada — HTTPConnection más ReadJSON, sin middleware ni servicios adicionales que alojar. El montaje más habitual mantiene al día un registro de información con los precios de los carburantes en la UE.
Actualizar un registro de información (precios de carburantes, todos los países en una llamada)
// 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;
Tres cosas que hay que acertar: pase New OpenSSLSecureConnection en el puerto 443 o la petición se caerá en TLS; llame a /api/v1/data/fuel sin el parámetro country para que una sola petición devuelva todos los países en lugar de una llamada por país; y compruebe ok antes de tocar data — los fallos vuelven como ok:false con un error.code, no como excepción. El ejemplo usa el juego de palabras clave en inglés de la plataforma; los equivalentes localizados (HTTPСоединение, ПрочитатьJSON, РегистрыСведений) se comportan igual.
Los precios de los carburantes cambian en origen una vez al día, así que una tarea programada una o dos veces al día basta y se queda muy por debajo de la cuota gratuita Explorer. Los datos de cola en directo (queue, multi, border) cambian cada pocos minutos: consúltelos a su propio ritmo y use multi para leer hasta 20 pasos fronterizos en una sola petición en vez de en un bucle.
Servidor MCP
¿Prefieres la llamada a herramientas en lugar de REST? Ejecutamos un servidor MCP real (transporte Streamable HTTP) que expone un subconjunto seguro, de solo lectura, de esta API como herramientas MCP — la misma clave API, la misma cuota, solo un transporte diferente.
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
Configuración del cliente (Claude Desktop / Claude Code):
{
"mcpServers": {
"nakordoni": {
"url": "https://nakordoni.eu/mcp",
"headers": { "Authorization": "Bearer NKD-DEV-XXXX-XXXX-XXXX" }
}
}
}
Productos
Elige un endpoint para ver su referencia completa, parámetros, versiones y un sandbox en vivo.
Estándar utiliza la cuota de datos estándar · Pesado utiliza la cuota de pronósticos y estadísticas — ver Cuotas
Colas en frontera
Estado en tiempo real de cada producto de la Developer API: en línea / degradado / sin conexión, latencia de respuesta y hora de …
Directorio de todos los puestos fronterizos monitorizados: ID, nombres, países, coordenadas y estado. Úsalo para descubrir los va…
Todos los pasos en una frontera dada + tipo de vehículo en una sola llamada. Soporta destino único, lista separada por comas o "a…
Encuentre los PPID de los pasos fronterizos por nombre en cualquier idioma. Devuelve todos los PPID de esa ubicación agrupados po…
Colas en tiempo real, estimación del tiempo de espera y estado para cualquier paso fronterizo monitoreado. Incluye un bloque snap…
Obtenga el estado de la cola y la actualización de datos para hasta 20 puntos de control en una única solicitud. La cuota se calc…
Puestos alternativos cercanos en la misma frontera con las colas actuales y las diferencias de distancia.
Cuándo se actualizó por última vez un puesto, por qué fuente, y una valoración de frescura.
Pronósticos y estadísticas
Pronóstico mediante ensemble de ML de los niveles de cola: horizontes de 24 horas y 7 días (168h) con intervalos de confianza. El…
Estadísticas históricas horarias de cola por puesto y fecha: 24 valores horarios, promedio/mín/máx diarios, horas pico y horas má…
Estadísticas de semana típica por puesto fronterizo: matriz 7×24 día-de-semana×hora (mediana + banda p25/p75), día más tranquilo/…
Combustible y ubicaciones
Precios medios de gasolina/diésel/GLP en los países de la UE más las estaciones más cercanas, agregados a partir de fuentes nacio…
Resumen de precios de combustible por ciudad: la estación más barata y media de las 5 más económicas.
Aparcamientos para camiones (14k+), duchas gratuitas, servicios y supermercados por toda Europa con coordenadas.
Tipos de cambio basados en EUR para PLN, CZK, HUF, USD, GBP, CHF, NOK y UAH, fuente Frankfurter (ECB), caché 6 horas. Sin parámet…
Planificación de viajes
Un plan puerta a puerta para un viaje fronterizo: la ruta, los pasos fronterizos que hay en ella con la cola en directo o una pre…
Tiempo de viaje + cola fronteriza para todos los pasos desde un punto de origen.
Restricciones europeas a la circulación de camiones por país y fecha, incluidas las prohibiciones estacionales y de días festivos.
Normativa sobre la apertura comercial dominical y próximos domingos comerciales por país regulado de la UE.
Official public holidays per European country — dates, local names and type, each country's full holiday list included. Backed by…
Conductores y carreteras
Informes aprobados sobre el estado de la carretera cerca de las fronteras y en los corredores principales: baches, obras, cierres…
Rendimiento de cruce de frontera por transportista de autobús: cruces, minutos de espera promedio/mediano/mín/máx — elaborados a …
Asistente de IA
Hazle a nuestro asistente de IA de producción cualquier pregunta sobre el cruce de fronteras (colas, pronósticos, normas, combust…
Tu propio asistente de IA, basado en TU contenido y en NUESTROS datos fronterizos en vivo. Danos tus archivos markdown o indícano…
Otros
Exportación de datos históricos
Los desarrolladores aprobados pueden descargar el histórico publicado de colas en frontera, promediado por hora, de hasta 5 pasos fronterizos (ventana móvil de hasta 90 días) en CSV, NDJSON o JSON comprimidos con gzip. Es una función solo del portal — NO un endpoint de la API; las exportaciones se crean y se descargan desde la pestaña «Exportación de datos» de tu cuenta.
El acceso se concede a petición: abre un ticket de Data indicándonos qué pasos fronterizos, el intervalo de fechas y el uso previsto. Una vez aprobado, la pestaña Exportación de datos aparece en tu cuenta. Límite por defecto: 1 exportación al día, con hasta 5 pasos cada una — pídenos ampliarlo.
Campos — una fila por paso fronterizo y hora UTC
| Parámetro | Descripción |
|---|---|
ppid | ID del paso fronterizo |
checkpoint_name | Nombre del paso fronterizo |
hour_utc | Franja horaria, ISO-8601 UTC |
direction | p. ej. UA->PL |
vehicle_type | car / bus / truck / pedestrian |
avg_queue_length | Longitud media horaria de la cola |
avg_wait_minutes | Espera media horaria; null cuando un paso no tiene un feed oficial de espera |
sample_count | Número de observaciones en la hora |
Solo se exportan datos publicados, que han pasado nuestros controles de anomalías y calidad (nada de datos brutos por reporte). Todas las marcas de tiempo están en UTC. Los archivos se conservan 10 días.
Procedencia: cada archivo incorpora en su cabecera una huella firmada (sha256 + HMAC), de modo que cualquier copia puede confirmarse después como datos auténticos de nakordoni.eu y comprobarse frente a manipulaciones — incluso tras la descarga.
# 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
Lo que puedes crear
Los mismos productos de datos generan los elementos visuales de nakordoni.eu — gráficos de previsión semanal, perfiles horarios de colas, tarjetas de estado en tiempo real. Una muestra de lo que contienen las API de previsiones y estadísticas:
Atribución
Las integraciones del plan Explorer deben mostrar un enlace visible "Data by nakordoni.eu" allí donde se muestren los datos. Es lo que mantiene gratis el plan gratuito.
El código exacto
Copie este fragmento tal cual. El enlace debe seguir siendo indexable: un <a href> HTML simple que los buscadores puedan seguir — NO añada rel="nofollow" ni rel="sponsored", no lo renderice solo con JavaScript ni lo oculte con CSS.
<a href="https://nakordoni.eu/" title="Border queues, forecasts & statistics">Data by nakordoni.eu</a>
Variante compacta en letra pequeña (p. ej., bajo un gráfico o widget):
<p style="font-size:12px;margin:4px 0"> Data by <a href="https://nakordoni.eu/">nakordoni.eu</a> </p>
Puede enlazar a su versión de idioma, p. ej. https://nakordoni.eu/es/ — cuenta cualquier enlace indexable a nakordoni.eu. El texto ancla "Data by nakordoni.eu" debe permanecer en inglés.
Dónde colocarlo
- Directamente junto o debajo del bloque de datos (tabla, gráfico, widget, respuesta) — en la misma pantalla, visible sin clics adicionales.
- En cada página o pantalla de la app donde aparezcan nuestros datos — no solo en una página "acerca de".
- Tamaño y contraste legibles: al menos ~11px, no oculto, no plegado, no del color del fondo.
- Apps móviles nativas sin enlaces HTML: muestre el texto "Data by nakordoni.eu" en la pantalla de datos y ponga el enlace pulsable en la pantalla de información.
Verificamos periódicamente la atribución en la "página de uso de datos" indicada al registrarse. La atribución ausente o desindexada en el plan Explorer conlleva primero un recordatorio y luego la suspensión de la clave. Los clientes de Pay As You Grow pueden omitirla.