Documentation de l'API
REST + JSON sur HTTPS. Une URL de base, une clé, des enveloppes prévisibles.
| URL de base | https://nakordoni.eu/api/v1/data/ |
|---|---|
| Format | JSON, UTF-8 |
| Auth | Authorization: Bearer NKD-DEV-… |
| Versionnage | Versionnage dans le chemin et par endpoint : /api/v1/… est stable et ses réponses ne changent jamais. Un chemin de version supérieur (/api/v2/…, /api/v4/…) sert le nouveau comportement uniquement pour les endpoints qui ont changé, et revient de façon transparente à la version inférieure pour les autres. Chaque produit affiche la version la plus élevée qu'il documente — visez celle-ci, pas cette note. Si une version plus récente remplace celle qu'appelle votre clé, nous vous envoyons un e-mail et affichons un avis dans le portail développeur — vous n'avez pas à le découvrir dans le journal des modifications. |
Sur cette page
Authentification
Chaque requête nécessite votre clé API dans l'en-tête Authorization (recommandé) ou en tant que paramètre ?key=.
curl "https://nakordoni.eu/api/v1/data/queue?ppid=id_13" \ -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
Enveloppe de réponse
{
"ok": true,
"api_version": "v1",
"product": "queue",
"attribution": "Data by nakordoni.eu",
"terms": "https://nakordoni.eu/en/p/developer_api_terms",
"data": { ... },
"usage": { "limit": 1000, "used": 42, "reset": "2026-06-06T00:00:00Z" }
}
Les erreurs renvoient ok:false avec error.code (missing_api_key, invalid_api_key, qps_exceeded, quota_exceeded, unknown_product, product_unavailable, not_approved, bad_request, duplicate_request, internal_error, status_unavailable, timeout) et un statut HTTP 400/401/403/404/429/500/503/504. Les en-têtes de limitation de débit X-Devapi-Limit et X-Devapi-Remaining sont envoyés à chaque réponse facturée. ok:false fait foi — n'exploitez jamais data lors d'un appel en échec. L'objet usage est présent dans chaque produit facturé ; /status est public et non facturé, il ne renvoie donc pas usage.
Quotas
| Explorer | |
|---|---|
| appels/jour sur les API de données standard | 1,000 |
| appels/jour sur les API de prévisions et de statistiques | 200 |
| QPS | 2 |
Les compteurs quotidiens sont réinitialisés à minuit UTC. Vous recevez un e-mail à 80 % et à 100 % du quota.
Les forfaits payants relèvent chacune de ces limites. Forfaits actuels et leurs quotas : Forfaits
Exemples de code
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)
Récupérez les données de files d'attente, de prévisions ou d'interdictions pour poids lourds directement dans un classeur grâce au connecteur JSON intégré de Power Query — sans code, avec actualisation programmée. Le même schéma d'en-têtes (Headers) fonctionne pour tous les produits de cette API — il suffit de changer l'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
Conservez la clé API à l'intérieur de la requête M (Home → Advanced Editor), pas dans une cellule de feuille — Power Query bloque une requête web construite à partir d'une autre requête ou cellule ("Formula.Firewall"), sauf si le niveau de confidentialité est défini sur Organizational.
Plusieurs postes-frontières dans un seul tableau (tableaux de bord de flotte) — e.g. every truck crossing UA→PL (crossing_type=9; in v3 that one code covers both freight lanes):
let
ApiKey = "NKD-DEV-XXXX-XXXX-XXXX",
Source = Json.Document(Web.Contents("https://nakordoni.eu/api/v4/data/border/1/2/9",
[Headers = [Authorization = "Bearer " & ApiKey]])),
checkpoints = Source[data],
AsTable = Table.FromRecords(checkpoints)
in
AsTable
Data → Refresh All dans Excel, ou une actualisation planifiée dans Power BI / Excel Online, garde les chiffres à jour — sans code d'interrogation (polling).
Intégration ERP (BAS / BAF et plateformes de la famille 1C)
BAS / BAF et les autres plateformes de la famille 1C peuvent appeler cette API directement depuis une tâche planifiée — HTTPConnection et ReadJSON, sans intergiciel ni service supplémentaire à héberger. Le montage le plus courant tient à jour un registre d’informations avec les prix des carburants dans l’UE.
Mettre à jour un registre d’informations (prix des carburants, tous les pays en un appel)
// 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;
Trois points à ne pas rater : passez New OpenSSLSecureConnection sur le port 443, sinon la requête échoue sur TLS ; appelez /api/v1/data/fuel sans paramètre country pour qu’une seule requête renvoie tous les pays au lieu d’un appel par pays ; et testez ok avant de toucher à data — les échecs reviennent en ok:false avec un error.code, pas sous forme d’exception. L’exemple utilise le jeu de mots-clés anglais de la plateforme ; les équivalents localisés (HTTPСоединение, ПрочитатьJSON, РегистрыСведений) se comportent à l’identique.
Les prix des carburants ne bougent qu’une fois par jour à la source : une tâche planifiée une ou deux fois par jour suffit et reste très en deçà du quota Explorer gratuit. Les files d’attente en direct (queue, multi, border) changent toutes les quelques minutes — interrogez-les à votre propre rythme et utilisez multi pour lire jusqu’à 5 points de passage en une seule requête plutôt qu’en boucle.
Serveur MCP
Vous préférez l'appel d'outils plutôt que REST ? Nous exploitons un véritable serveur MCP (transport Streamable HTTP) exposant un sous-ensemble sûr, en lecture seule, de cette API sous forme d'outils MCP — même clé API, même quota, juste un transport différent.
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
Configuration client (Claude Desktop / Claude Code):
{
"mcpServers": {
"nakordoni": {
"url": "https://nakordoni.eu/mcp",
"headers": { "Authorization": "Bearer NKD-DEV-XXXX-XXXX-XXXX" }
}
}
}
Country and vehicle-type codes
Border endpoints address countries and vehicle types by numeric id: /api/v1/data/border/{origin}/{destination}/{crossing_type}. destination also accepts a comma-separated list or the word all. The ids are stable and are the same in every product that takes an origin, a destination or a crossing_type.
Country ids
The border products accept the ids marked as origins below; the neighbours column is what destination=all expands to for that origin. Ids without neighbours are countries we name in responses but hold no crossings for yet. The Checkpoints Directory returns the origin, destination and crossing_type of every crossing we actually serve, so it stays the authoritative list.
| id | Country | Borders with (destination ids) |
|---|---|---|
1 |
Ukraine | 2, 3, 4, 5, 6, 7 |
2 |
Pologne | 1, 7, 18 |
3 |
Slovaquie | 1 |
4 |
Hongrie | 1, 5, 13 |
5 |
Roumanie | 1, 4, 6, 12, 13 |
6 |
Moldavie | 1, 5 |
7 |
Biélorussie | 1, 2, 8, 9 |
8 |
Lituanie | 7 |
9 |
Lettonie | 7 |
11 |
Slovénie | 16, 20 |
12 |
Bulgarie | 5, 13, 14, 15, 19 |
13 |
Serbie | 4, 5, 12, 15, 16, 17, 22, 23 |
14 |
Turquie | 12, 19 |
15 |
Macédoine du Nord | 12, 13, 19, 21, 23 |
16 |
Croatie | 11, 13, 17, 22 |
17 |
Bosnie-Herzégovine | 13, 16, 22 |
18 |
Allemagne | 2 |
19 |
Grèce | 12, 14, 15, 21 |
20 |
Italie | 11 |
21 |
Albanie | 15, 19, 22, 23 |
22 |
Monténégro | 13, 16, 17, 21, 23 |
23 |
Kosovo | 13, 15, 21, 22 |
24 |
Autriche | — |
25 |
Tchéquie | — |
26 |
France | — |
27 |
Espagne | — |
28 |
Royaume-Uni | — |
29 |
Pays-Bas | — |
30 |
Belgique | — |
31 |
Portugal | — |
33 |
Estonie | — |
34 |
Suisse | — |
35 |
Danemark | — |
36 |
Finlande | — |
37 |
Luxembourg | — |
38 |
Norvège | — |
39 |
Suède | — |
Vehicle types (crossing_type)
| id | Vehicle type | Accepted by /border/ |
|---|---|---|
4 |
Voiture | ✔ |
5 |
Voiture. Hors taxes | ✔ |
6 |
Bus | ✔ |
7 |
Piéton | ✔ |
8 |
Transport de marchandises | ✔ |
9 |
Transport jusqu'à 7,5 tonnes | ✔ |
10 |
Ferry - Voiture | — |
11 |
Ferry - Bus | — |
12 |
Ferry - Piéton | — |
13 |
Ferry - Marchandises | — |
14 |
Transport jusqu'à 3,5 tonnes | — |
The label in this table is the crossing_type_label the API returns with every response, in the language you request. Types outside the accepted list belong to crossings the directory carries but the border products do not answer for — ferry (10-13), freight up to 3.5 t (14) and rail (15) — and asking for one returns 400, not an empty result. Read crossing_type from the Checkpoints Directory rather than assuming: a crossing returns data only for the types it actually has.
Produits
Choisissez un endpoint pour sa référence complète, ses paramètres, ses versions et une sandbox en direct.
Standard utilise la quote-part standard de données · Lourd utilise le quota de prévisions et statistiques — voir Quotas
Files d'attente frontalières
État en temps réel de chaque produit Developer API : en ligne / dégradé / hors ligne, latence de réponse et heure de dernière vér…
Annuaire de tous les points de passage frontaliers surveillés : identifiants, noms, pays, coordonnées et statut. Utilisez-le pour…
Tous les postes sur une frontière donnée + type de véhicule en un seul appel. Supporte destination unique, liste séparée par virg…
Trouvez les PPID des postes frontières par nom dans n'importe quelle langue. Renvoie tous les PPID pour cet emplacement regroupés…
Files d'attente en temps réel, estimation du temps d'attente et statut pour tout poste-frontière surveillé. Comprend un bloc snap…
Wait time adjusted for live traffic flow and weather, with a full breakdown of each adjustment, plus the same wait_status/trend f…
Obtenez l'état des files d'attente et la fraîcheur des données pour jusqu'à 5 points de passage en une seule requête. Le quota es…
Points de passage alternatifs à proximité sur la même frontière avec les files actuelles et les écarts de distance.
Quand un point de passage a été mis à jour pour la dernière fois, par quelle source, et une évaluation de fraîcheur.
Prévisions et statistiques
Prévision par ensemble ML des niveaux de file : horizons de 24 heures et 7 jours (168h) avec intervalles de confiance. Le même mo…
Statistiques historiques horaires de file par point de passage et par date : 24 valeurs horaires, moyenne/min/max quotidiennes, h…
Statistiques semaine type par checkpoint : matrice 7×24 jour-de-semaine×heure (médiane + bande p25/p75), jour le plus calme/charg…
Carburant et emplacements
Prix du carburant dans les pays de l'EU — moyennes par country, stations les plus proches par coordonnées, ou stations près d'un …
Prix carburant par ville: station la moins chère et moyenne des 5 moins chères par grande ville.
Les stations-service les plus proches d'un point ou d'une ville, avec les prix actuels par type de carburant, triées par distance…
Les stations-service les moins chères autour d'un point ou d'une ville, classées par prix pour le type de carburant choisi (en ca…
Le meilleur prix de carburant disponible pour N'IMPORTE QUEL point en Europe, résolu selon une échelle de repli à trois niveaux, …
La table de nommage derrière chaque produit carburant : notre vocabulaire canonique de qualités (diesel, premdiesel, truckdiesel,…
Parkings pour poids lourds (14k+), douches gratuites, services et supermarchés à travers l'Europe avec coordonnées. Les résultats…
Les parkings pour poids lourds, Autohöfe et aires de repos les plus proches d'un point ou d'une city — triés par distance avec di…
Les supermarchés et épiceries les plus proches d'un point ou d'une city — triés par distance avec distance_km, nom, coordonnées e…
Les douches gratuites pour chauffeurs les plus proches d'un point ou d'une city — triées par distance avec distance_km, nom, coor…
Les restaurants adaptés aux chauffeurs les plus proches d'un point ou d'une city — triés par distance avec distance_km, nom, coor…
Les zones industrielles et logistiques les plus proches d'un point ou d'une city (plus de 3k+ à travers l'Europe) — triées par di…
Taux de change basés sur EUR pour PLN, CZK, HUF, USD, GBP, CHF, NOK et UAH, provenant de Frankfurter (ECB), mis en cache 6 heures…
Planification de voyage
Un plan porte-à-porte pour un trajet transfrontalier : l'itinéraire, les points de passage qui s'y trouvent avec la file en direc…
Temps de trajet + file d'attente frontalière pour tous les postes depuis un point d'origine.
Restrictions européennes de circulation pour poids lourds par country et par date, y compris les interdictions saisonnières et fé…
Réglementations sur l'ouverture des commerces le dimanche et prochains dimanches ouvrés par pays de l'UE réglementé.
Jours fériés officiels par pays européen — dates, noms locaux et type, liste complète des jours fériés de chaque pays incluse. Al…
Conducteurs et routes
Signalements approuvés d'état des routes près des frontières et sur les grands corridors : nids-de-poule, travaux, fermetures, ve…
Si un country exige une vignette pour circuler sur autoroute, les prix actuels par durée et où en savoir plus — par country ou po…
Boutiques d'opérateurs mobiles et points WiFi utiles aux chauffeurs sur la route, du plus proche par rapport à un point ou une ci…
Performance de franchissement de frontière par transporteur en bus : passages, minutes d'attente moyenne/médiane/min/max — établi…
Le danger routier à un poste-frontière sur une seule échelle 0–5 : route dégagée, brouillard, neige, pluie, verglas ou vent fort …
Air-raid alerts and airborne objects near ONE border crossing. Anchor on a checkpoint (ppid), a coordinate pair or a city and get…
Your Fleet (NakBus Live)
Votre propre flotte NakBus Live : chaque véhicule enregistré au nom de votre entreprise avec sa plaque, son libellé, sa ligne att…
Où se trouvent vos bus en ce moment — une ligne par véhicule actif avec lat/lon, horodatage et son ancienneté, vitesse, cap et re…
Trace GPS enregistrée de vos propres véhicules : chaque point de position stocké dans une fenêtre temporelle, par ordre chronolog…
Assistant IA
Posez à notre assistant IA de production toute question sur le franchissement des frontières (files, prévisions, règles, carburan…
Votre propre assistant IA, fondé sur VOS contenus et NOS données frontalières en direct. Donnez-nous vos fichiers markdown ou ind…
Export des données historiques
Les développeurs approuvés peuvent télécharger l'historique publié des files aux frontières, moyenné à l'heure, pour jusqu'à 5 postes-frontières (fenêtre glissante jusqu'à 90 jours) en CSV, NDJSON ou JSON compressés en gzip. C'est une fonction du portail uniquement — PAS un endpoint d'API ; vous construisez et téléchargez les exports depuis l'onglet « Export de données » de votre compte.
L'accès est accordé sur demande : ouvrez un ticket Data en nous indiquant quels postes-frontières, la période et l'usage prévu. Une fois approuvé, l'onglet Export de données apparaît dans votre compte. Limite par défaut : 1 export/jour, jusqu'à 5 postes chacun — demandez-nous de l'augmenter.
Champs — une ligne par poste-frontière et par heure UTC
| Paramètre | Description |
|---|---|
ppid | Identifiant du poste-frontière |
checkpoint_name | Nom du poste-frontière |
hour_utc | Tranche horaire, ISO-8601 UTC |
direction | p. ex. UA->PL |
vehicle_type | car / bus / truck / pedestrian |
avg_queue_length | Longueur moyenne horaire de la file |
avg_wait_minutes | Attente moyenne horaire ; null lorsqu'un poste n'a pas de flux d'attente officiel |
sample_count | Nombre d'observations dans l'heure |
Seules des données publiées sont exportées, après nos contrôles d'anomalies et de qualité (aucune donnée brute par signalement). Tous les horodatages sont en UTC. Les fichiers sont conservés 10 jours.
Provenance : chaque fichier intègre dans son en-tête une empreinte signée (sha256 + HMAC), de sorte que toute copie peut être confirmée plus tard comme d'authentiques données nakordoni.eu et vérifiée contre toute altération — même après téléchargement.
# 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
Ce que vous pouvez créer
Les mêmes produits de données génèrent les visuels de nakordoni.eu — graphiques de prévisions hebdomadaires, profils horaires des files, cartes de statut en temps réel. Un aperçu de ce que contiennent les API de prévisions et de statistiques :
Attribution
Les intégrations du forfait Explorer doivent afficher un lien visible « Data by nakordoni.eu » partout où les données sont présentées. C'est ce qui maintient le forfait gratuit gratuit.
Le code exact
Copiez ce fragment tel quel. Le lien doit être un <a href> HTML visible et ordinaire, placé à côté des données : il ne doit pas être généré uniquement par JavaScript ni masqué en CSS. Depuis les Conditions de la Developer API v1.0 (section 8.1), vous pouvez ajouter rel="nofollow" ou rel="sponsored" si la politique de votre site l'exige.
<a href="https://nakordoni.eu/" title="Border queues, forecasts & statistics">Data by nakordoni.eu</a>
Variante compacte en petits caractères (p. ex. sous un graphique ou un widget) :
<p style="font-size:12px;margin:4px 0"> Data by <a href="https://nakordoni.eu/">nakordoni.eu</a> </p>
Vous pouvez aussi pointer vers votre version linguistique, par exemple https://nakordoni.eu/fr/ — tout lien HTML visible et ordinaire vers nakordoni.eu est accepté. Le texte d'ancrage "Data by nakordoni.eu" doit rester en anglais.
Où le placer
- Directement à côté ou sous le bloc de données (tableau, graphique, widget, réponse) — sur le même écran, visible sans clic supplémentaire.
- Sur chaque page ou écran d'application où nos données apparaissent — pas seulement sur une page "à propos".
- Taille et contraste lisibles : au moins ~11px, non masqué, non replié, pas de la couleur du fond.
- Applications mobiles natives sans liens HTML : affichez le texte "Data by nakordoni.eu" sur l'écran des données et placez le lien cliquable sur l'écran d'informations.
Nous vérifions régulièrement l'attribution sur la « page où les données sont utilisées » que vous avez indiquée à l'inscription. Une attribution absente ou masquée sur l'offre gratuite Explorer entraîne d'abord un rappel, puis la suspension de la clé. Les clients d'une offre payante peuvent omettre l'attribution.
Licence de données et marchés
Your API key grants a licence to use our data in the countries you declared when you signed up, and only in those countries. We review every declaration before granting full access, because our data is our own product and we do not license it into markets without knowing where it will be published.
- Declare every country your site, app or product serves. You can change the list from your dashboard at any time; a change puts your account back into review.
- Until your markets are approved your key runs on reduced limits - half of the Starter plan allowance. This applies whatever plan you are on.
- Nous pouvons n'approuver que certains des pays que vous avez demandés. C'est la liste approuvée, et non la liste demandée, qui détermine les pays couverts par votre licence.
- Publishing or redistributing our data in a market you did not declare, or reselling it as a competing data feed, is a breach of these terms and can suspend your key without notice.
- Some plans are offered only in selected regions. Availability depends on the markets you declare.
- L'accord complet, ce sont les Conditions de la Developer API. Elles priment sur ce résumé ; la version anglaise fait foi.
Actualité des données
La fraîcheur de vos données dépend de votre forfait. Aucun marqueur n'apparaît dans la réponse — tous les forfaits renvoient les mêmes champs, les mêmes types et la même structure de réponse.
- Forfaits payants — Student, Starter, Pro et Pro MAX : télémétrie en direct, sans délai.
- Forfait gratuit Explorer : un instantané des 15 à 30 dernières minutes. Le décalage exact varie d'une requête à l'autre.
Une réponse différée n'est jamais une erreur ni un problème de quota : c'est une réponse complète et valide, avec des chiffres plus anciens. Réessayer ne renvoie pas de données plus récentes.
Si votre application a besoin de données actuelles, tout forfait payant renvoie de la télémétrie en temps réel.