Calcul d'itinéraire — Démo interactive

Tracez un itinéraire routier entre deux points français. Chaque borne accepte une adresse libre (résolue via la chaîne /address/verify) ou un couple lat/lon WGS84. Carte, étapes détaillées et durée fournies par Valhalla sur les tuiles OpenStreetMap France.

Il vous reste 50 tests gratuits cette heure, aucun compte requis.
Clé API personnelle active — appels illimités selon votre plan.
Plan Business Cette démo utilise un endpoint réservé · voir les plans
154 ms
33,2 km Distance totale
32 min Durée estimée
23 étapes
62 km/h Vitesse moyenne
Adresse résolue 1 Place Sainte-Opportune, 75001 Paris 1er Arrondissement 48.859709, 2.346998
Coordonnées 49.009700, 2.547900

Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright

Étapes détaillées

Survolez une étape pour la mettre en évidence sur la carte.

  1. Conduisez vers le nord-ouest sur Rue des Halles.

    50 m 0 min

  2. Serrez à gauche pour rester sur Rue des Halles.

    2 m 0 min

  3. Serrez à gauche dans Rue des Déchargeurs.

    91 m 0 min

  4. Tournez à droite dans Rue de Rivoli.

    42 m 0 min

  5. Tournez à gauche dans Rue Bertin Poirée.

    184 m 0 min

  6. Tournez à gauche dans Quai de la Mégisserie.

    2,4 km 5 min

  7. Serrez à droite dans Quai de la Rapée.

    108 m 0 min

  8. Gardez la gauche pour rester sur Quai de la Rapée.

    2,0 km 2 min

  9. Serrez à droite vers A 3/A 6/Périphérique/Porte de Bercy.

    457 m 1 min

  10. Continuez tout droit pour prendre la bretelle.

    9 m 0 min

  11. Gardez la gauche pour prendre E 15/Boulevard Périphérique Extérieur vers A 3/A 1/Charles de Gaulle/Périphérique Extérieur.

    4,8 km 6 min

  12. Prenez la bretelle A 3 vers A 16/Lille - Bruxelles/Charles de Gaulle/Bobigny.

    6,8 km 5 min

  13. Gardez la gauche pour rester sur A 3/E 15.

    8,9 km 5 min

  14. Gardez la gauche pour rester sur A 3/E 15 vers A 16/A 15/A 1/Sarcelles.

    1,6 km 1 min

  15. Gardez la droite pour rester sur A 3 vers Charles de Gaulle.

    1,3 km 1 min

  16. Continuez vers Charles de Gaulle.

    656 m 0 min

  17. Gardez la droite vers Roissypole/Zone Technique/Zone Cargo/Longue Durée PR-PX.

    796 m 1 min

  18. Gardez la gauche à la fourche.

    609 m 1 min

  19. Gardez la droite à la fourche.

    280 m 0 min

  20. Serrez à droite dans Route de la Commune.

    221 m 0 min

  21. Gardez la droite pour rester sur Route de la Commune.

    1,5 km 1 min

  22. Gardez la gauche pour rester sur Route de la Commune.

    448 m 1 min

  23. Votre destination est sur la droite.

    0 m 0 min

Bounding box (WGS84)
min_lat
48.826572
min_lon
2.344384
max_lat
49.009305
max_lon
2.550256
curl -X POST "https://api.trustydata.app/services/v1/route/compute" \
  -H "Authorization: Bearer VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"destination": {"lat": 49.0097, "lon": 2.5479}, "origin": {"address": "1 Place du Trocad\u00e9ro, 75016 Paris"}}'
import requests

url = "https://api.trustydata.app/services/v1/route/compute"
headers = {"Authorization": "Bearer VOTRE_CLE_API"}
payload = {"destination": {"lat": 49.0097, "lon": 2.5479}, "origin": {"address": "1 Place du Trocad\u00e9ro, 75016 Paris"}}

response = requests.post(url, headers=headers, json=payload)
data = response.json()
print(f"{data['resume']['distance_km']} km · {data['resume']['duree_min']} min")
for etape in data["etapes"]:
    print(f"  {etape['distance_km']:>6.2f} km — {etape['consigne']}")
{
  "attribution": "Donn\u00e9es cartographiques \u00a9 les contributeurs OpenStreetMap, sous licence ODbL \u2014 https://www.openstreetmap.org/copyright",
  "destination": {
    "adresse": null,
    "lat": 49.0097,
    "lon": 2.5479,
    "source": "coordinates"
  },
  "etapes": [
    {
      "consigne": "Conduisez vers le nord-ouest sur Rue des Halles.",
      "distance_km": 0.05,
      "duree_s": 6.025,
      "index_debut": 0,
      "index_fin": 2,
      "type": 2
    },
    {
      "consigne": "Serrez \u00e0 gauche pour rester sur Rue des Halles.",
      "distance_km": 0.002,
      "duree_s": 0.644,
      "index_debut": 2,
      "index_fin": 3,
      "type": 16
    },
    {
      "consigne": "Serrez \u00e0 gauche dans Rue des D\u00e9chargeurs.",
      "distance_km": 0.091,
      "duree_s": 16.913,
      "index_debut": 3,
      "index_fin": 10,
      "type": 16
    },
    {
      "consigne": "Tournez \u00e0 droite dans Rue de Rivoli.",
      "distance_km": 0.042,
      "duree_s": 6.591,
      "index_debut": 10,
      "index_fin": 11,
      "type": 10
    },
    {
      "consigne": "Tournez \u00e0 gauche dans Rue Bertin Poir\u00e9e.",
      "distance_km": 0.184,
      "duree_s": 28.231,
      "index_debut": 11,
      "index_fin": 24,
      "type": 15
    },
    {
      "consigne": "Tournez \u00e0 gauche dans Quai de la M\u00e9gisserie.",
      "distance_km": 2.387,
      "duree_s": 286.524,
      "index_debut": 24,
      "index_fin": 140,
      "type": 15
    },
    {
      "consigne": "Serrez \u00e0 droite dans Quai de la Rap\u00e9e.",
      "distance_km": 0.108,
      "duree_s": 7.798,
      "index_debut": 140,
      "index_fin": 146,
      "type": 9
    },
    {
      "consigne": "Gardez la gauche pour rester sur Quai de la Rap\u00e9e.",
      "distance_km": 2.046,
      "duree_s": 147.509,
      "index_debut": 146,
      "index_fin": 179,
      "type": 24
    },
    {
      "consigne": "Serrez \u00e0 droite vers A 3/A 6/P\u00e9riph\u00e9rique/Porte de Bercy.",
      "distance_km": 0.457,
      "duree_s": 34.062,
      "index_debut": 179,
      "index_fin": 191,
      "type": 9
    },
    {
      "consigne": "Continuez tout droit pour prendre la bretelle.",
      "distance_km": 0.009,
      "duree_s": 0.657,
      "index_debut": 191,
      "index_fin": 192,
      "type": 17
    },
    {
      "consigne": "Gardez la gauche pour prendre E 15/Boulevard P\u00e9riph\u00e9rique Ext\u00e9rieur vers A 3/A 1/Charles de Gaulle/P\u00e9riph\u00e9rique Ext\u00e9rieur.",
      "distance_km": 4.817,
      "duree_s": 352.291,
      "index_debut": 192,
      "index_fin": 270,
      "type": 24
    },
    {
      "consigne": "Prenez la bretelle A 3 vers A 16/Lille - Bruxelles/Charles de Gaulle/Bobigny.",
      "distance_km": 6.786,
      "duree_s": 329.267,
      "index_debut": 270,
      "index_fin": 401,
      "type": 18
    },
    {
      "consigne": "Gardez la gauche pour rester sur A 3/E 15.",
      "distance_km": 8.86,
      "duree_s": 320.902,
      "index_debut": 401,
      "index_fin": 516,
      "type": 24
    },
    {
      "consigne": "Gardez la gauche pour rester sur A 3/E 15 vers A 16/A 15/A 1/Sarcelles.",
      "distance_km": 1.616,
      "duree_s": 64.727,
      "index_debut": 516,
      "index_fin": 533,
      "type": 24
    },
    {
      "consigne": "Gardez la droite pour rester sur A 3 vers Charles de Gaulle.",
      "distance_km": 1.256,
      "duree_s": 50.304,
      "index_debut": 533,
      "index_fin": 554,
      "type": 23
    },
    {
      "consigne": "Continuez vers Charles de Gaulle.",
      "distance_km": 0.656,
      "duree_s": 26.246,
      "index_debut": 554,
      "index_fin": 566,
      "type": 8
    },
    {
      "consigne": "Gardez la droite vers Roissypole/Zone Technique/Zone Cargo/Longue Dur\u00e9e PR-PX.",
      "distance_km": 0.796,
      "duree_s": 41.053,
      "index_debut": 566,
      "index_fin": 579,
      "type": 23
    },
    {
      "consigne": "Gardez la gauche \u00e0 la fourche.",
      "distance_km": 0.609,
      "duree_s": 35.547,
      "index_debut": 579,
      "index_fin": 591,
      "type": 24
    },
    {
      "consigne": "Gardez la droite \u00e0 la fourche.",
      "distance_km": 0.28,
      "duree_s": 20.178,
      "index_debut": 591,
      "index_fin": 606,
      "type": 23
    },
    {
      "consigne": "Serrez \u00e0 droite dans Route de la Commune.",
      "distance_km": 0.221,
      "duree_s": 15.939,
      "index_debut": 606,
      "index_fin": 613,
      "type": 9
    },
    {
      "consigne": "Gardez la droite pour rester sur Route de la Commune.",
      "distance_km": 1.466,
      "duree_s": 86.696,
      "index_debut": 613,
      "index_fin": 645,
      "type": 23
    },
    {
      "consigne": "Gardez la gauche pour rester sur Route de la Commune.",
      "distance_km": 0.448,
      "duree_s": 35.685,
      "index_debut": 645,
      "index_fin": 673,
      "type": 24
    },
    {
      "consigne": "Votre destination est sur la droite.",
      "distance_km": 0.0,
      "duree_s": 0.0,
      "index_debut": 673,
      "index_fin": 673,
      "type": 5
    }
  ],
  "origine": {
    "adresse": "1 Place Sainte-Opportune, 75001 Paris 1er Arrondissement",
    "lat": 48.859709,
    "lon": 2.346998,
    "source": "address"
  },
  "resume": {
    "bbox": {
      "max_lat": 49.009305,
      "max_lon": 2.550256,
      "min_lat": 48.826572,
      "min_lon": 2.344384
    },
    "distance_km": 33.191,
    "duree_min": 31.9,
    "duree_s": 1913.8,
    "geometrie": {
      "encodage": "polyline6",
      "polyline": "o~ce|A}sfnC{UxT[t@I|@R`BPXnNlPzRvR\\^\\ZrArAcI`_@z@`@~@Z|Al@nHpCxLrE|Bz@jL~ElGvB~NpEjA^zGtDtHbEbDhBjNsx@|@cFpBiKRcA|@{Eh@eCbFi[`E}URkAPgAhBmKdBeK`B_JfD{QVyA`FsXzAkINw@`B{IvDsRTmAt@_Ep@qDxGyV^uAnA{EjRmr@lCyJZkARu@xAuGdDmN`@_BlBkGdFoQfBgGpMef@`GiIVq@bDeKfCiIR{@f@uBrA}Fv@sDvJg]n^snA^sAnAeElB{Gt@gC|GoU~C{LrReu@pAiF`R{u@n@iC`@eBhAcE~B}Ih@qBnRgt@t@mC~Q}t@pJk^zAcGlAgD^gAXq@^}@lHcQzIgMrAwAbCwBtEuC|DiAlBi@|c@o@r@A~ACtEMpC?nC?lIA~d@c@nBKhD]lD{@hFmCxCiC~EoIjEoHzRy\\dBuCbDwFha@mq@fZog@vBmDhPeX`BoCzBeD\\c@h@o@x@gA~BeCjTuSpFaG`FwDzWeU~NsPtGeI~QeUxD{EdLePvC_Fz]yi@hRq\\`EaI~@{B|BuFxAgFdBcK|@gJ~@qFlAqFbCqHdDyGxZod@r\\qf@da@wm@rg@ar@ffAsqApf@al@~p@{t@rH_JfIeJ~[mb@vYw_@bQeSn`@_]ja@{i@rpAycBvGgKnGkLvIgRdEqI~AsChBqCxs@oaAbYe`@tp@e|@f~@ooAvz@wlAdSgXzNwOdWmN~a@iWxBkAbSsM`HsHrQaTrGqKrF}LnBkE`^oh@hYab@pQmZ~BiDhDiYLcLOyJo@gGwA}HkEqNeIkW}Pwi@eT_v@oIk`@wAmWgC_]mBoSaCiRan@upEoDkVwDkS_FsSwFyRmGmQwJiUoZmh@sLgT{_@cp@s]ql@inAmkCuY{l@uRgd@yQon@g}@udDgJ{SsMaUeSyV{PkPcYuQwUqJuIeCgK}B_B[e]yIuoAmZwsAkVyKmB{K_B}E}@ua@sCwbAcEcoAkDec@mE{UkCoz@gKg[kDeVeDsRaC{|@qKkfCc[st@kLo\\eB{\\r@ac@fJkJfEoSbJea@hS_QbIyJtDsCnAiVjGuEdAi`@pGe@JmU\\}QAat@wD}}@iFgnAkE{k@Es~@|FomApKsT}Ao`A_@qf@s@oScAoHaC_LkFgJkIkJaQaIaT_Li`@eO{f@sDmQqCyQ}B{VmAaXOy^o@i_@eAw]}Eqg@wN{bA{BwHuJmr@wu@{yEcBkHqGg\\oMuc@gJoYiEoMeKiTaXeb@c]yc@yl@cs@cUmXes@ahAcY_h@wPg]mUaa@yPm]_b@i~@_Win@yRoh@q]m}@gv@wsBcGuPoqBuhFu[yu@eNa_@uPue@i`@skAwGcS_IkTgAmDe_AkvC{]adAeV_s@{qAo|D{p@qrByT}m@}GqSuDsK}Rqk@oVew@yGgXgHw_@}BuPoDab@{A}Xo@o`@D__@nAu_AJkEh@{XlCgsAx@qb@l@}`@\\wOl@yj@Ckp@cCkt@mEmc@{Hee@yG{XkJcZ}IcUqMyWai@_{@uVi_@mIqKaEcF_EcEmFqEyCaCyEsDmFsDuEiCuEgCuEoBuEuB}E}A_FsAaFeAcFcAsFy@eFa@_FWmFSaFBmFHcFN_Fd@mFn@cFv@gDr@kHdBsRjF}o@dOiU~DiJvAcLxAeo@`KgJiA_]lHi[lK{b@vRaXtN_R`LsiAlv@qh@x^w[tRui@xUcc@vM}GrD_E`AsItAuQdBqP|@mOf@wTImTaAmMaA_VmDq[gHe^qL{g@iWqr@q\\mU_ImK_Eyg@aPalCyq@}@We@MwBk@qt@_T{_@mOgIoDyWyO{PmMugA}|@{]kXea@eXqN_J}d@_ZiaAmg@g\\eOuYuLe]wLk[{KkIaCwY{GqZwGaU_F}f@eJagAcSuUsEwc@yI_fAmXgq@_TcwCoaAoR_Ged@{MiSmEkHkB}]gHgPwCka@aGw_@kDmg@uCq\\y@u_@`@yr@hAag@|Ayi@jD{y@`GqdBpN}\\dAsvA|JwSbBgs@fFs^hEeMhA{mAjQqKrBocAzS}aBxa@ctAdf@gWfImSxGud@`PeiCv~@}FhBkn@pSawDxrAkfA|[}RbGy{@rTmlA`Uer@rKinAdM_bAfGqQ\\{kAxDaa@@qf@aAkMMgKm@aXyAsYuAysAqJ_h@wI_@Keb@sJao@ySck@sXiYcQsUkScOqL{VuWsTwVc]mb@y_@kk@_RkXcYgd@c]_m@iy@utAeDyLiqEe}H{ImKwtAqaC_d@}w@eoAuuBgcAifBcj@kaAsVad@_EiLwxAogCa`AsbBkO}YsFuKiZcr@yS_h@gMo]eL{[uMu`@eBsKaDyJcUst@gSaj@gQua@iP{\\cYgh@yUi_@}Uc[qS}TqRcSuWeVoZqUqGmCwq@}i@}l@ag@unAecA{`@q[aXgVyX{Xc^s`@md@kf@eTwX_MuTeJiSk\\_w@sO}ZyVc]eQsQiWiVqg@{i@cHsGie@ec@qGuNwK}LgVmb@iQsd@cTyw@c[soAmOih@}Wow@mYot@sN{XiXib@g[ua@q^c`@qOaKuVaRkOoHaa@eOmG]uRgAsVxCa`@~Mkh@pTsQfH_kAvi@eKxDcPhDaRvByJNwHE{LgAiO_EaF_Cq@[_FeCsFkEiEcFaDqEgCuFsD_KsEuNgD}WuEmb@}Fck@wDoZu@eG{BaVcBgQc@_V_@qWRkTd@uQnAgXfDoa@vUyyAfDmTnE_UvHcXtHqQdKeVjIiPdDoIhCwGrFoP`EuN|BwNbAeJjAeK~@eXH_Zq@i[{@ub@_@iPWwJm@oU_C{hAeK{lFeEsmB_C}bAwC_yAwBsRaAeQ}A_N}A_IiA{F_AuDyBeEmAuAeBu@eCSsENmC`@qG|@uAPgKrA{LzCui@fR_CdBqElEgJzMeDtHg@bBs@zBm@pCqChSk@vMi@fQTtM",
      "precision": 6
    }
  }
}
Il vous reste 50 tests gratuits cette heure, aucun compte requis.

Comprendre la réponse

L'API /route/compute calcule un itinéraire routier entre deux bornes (adresses libres ou coordonnées WGS84). Lorsqu'une borne est fournie en adresse, elle est résolue via la même chaîne que /address/verify — Meilisearch + déduplication parser — pour récupérer les coordonnées géographiques avant le calcul. Le routage est exécuté par Valhalla sur les données OpenStreetMap France.

  • Réponse principale — un résumé (distance_km, duree_s, bbox), une géométrie polyline6 (à décoder côté client pour le tracé carto), et la liste détaillée des étapes (consigne en français, distance, durée, indices de segments dans la polyline).
  • Mode adresse vs coordonnées — l'adresse est résolue automatiquement (premier doublon_certain ou doublon_probable) ; les coordonnées sont utilisées telles quelles. Si une adresse n'est pas résolvable, l'API renvoie un 422.
  • Plan Business uniquement — pour les autres plans, l'API renvoie un 403. Cette démo utilise une clé Business pré-configurée. Vous pouvez aussi coller votre propre clé pour tester avec votre quota.

Cas d'usage : préparation de tournées commerciales, optimisation de livraison last-mile, calcul d'éligibilité géographique (« combien de temps pour vous livrer ? »), estimation de temps de trajet domicile-travail pour un calcul de prime, etc.

Les autres démos