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 | Versionné par chemin et par endpoint : /api/v1/… est stable ; /api/v2/… ne sert le nouveau comportement que pour les endpoints qui ont changé, et retombe de façon transparente sur v1 pour les autres. Les réponses v1 ne changent jamais. |
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",
"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, bad_request, internal_error) et un statut HTTP 401/403/404/429/500. Les en-têtes de limitation de débit X-Devapi-Limit et X-Devapi-Remaining sont envoyés à chaque réponse facturée.
Quotas
| Explorer | Pay As You Grow | |
|---|---|---|
| appels/jour sur les API de données standard | 1,000 | 50,000 |
| appels/jour sur les API de prévisions et de statistiques | 200 | 10,000 |
| QPS | 2 | 20 |
Les compteurs quotidiens sont réinitialisés à minuit UTC. Vous recevez un e-mail à 80 % et à 100 % du quota.
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→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 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’à 20 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" }
}
}
}
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…
Récupérez le statut de la file d'attente et la fraîcheur des données pour jusqu'à 20 points de contrôle en une seule demande. Le …
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 moyens de l'essence/du diesel/du GPL dans les pays de l'UE ainsi que les stations les plus proches, agrégés à partir de sour…
Prix carburant par ville: station la moins chère et moyenne des 5 moins chères par grande ville.
Parkings poids lourds (14k+), douches gratuites, services et supermarchés à travers l'Europe avec coordonnées.
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 des poids lourds par pays et par date, y compris les interdictions saisonnières et de jou…
Réglementations sur l'ouverture des commerces le dimanche et prochains dimanches ouvrés par pays de l'UE réglementé.
Official public holidays per European country — dates, local names and type, each country's full holiday list included. Backed by…
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…
Performance de franchissement de frontière par transporteur en bus : passages, minutes d'attente moyenne/médiane/min/max — établi…
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…
Autres
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 rester indexable : un simple <a href> HTML que les moteurs de recherche peuvent suivre — n'ajoutez PAS rel="nofollow" ni rel="sponsored", ne le générez pas uniquement via JavaScript et ne le masquez pas en CSS.
<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 pointer vers votre version linguistique, p. ex. https://nakordoni.eu/fr/ — tout lien indexable vers nakordoni.eu compte. Le texte d'ancre "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 périodiquement l'attribution sur la "page d'utilisation des données" indiquée à l'inscription. Une attribution manquante ou désindexée sur le plan Explorer entraîne d'abord un rappel, puis la suspension de la clé. Les clients Pay As You Grow peuvent omettre l'attribution.