Calcul d'itinéraire — Démo interactive

Calculez la distance et la durée routière entre deux points français — adresse libre (résolue via la chaîne /address/verify) ou couple lat/lon WGS84. Plan Growth : métriques distance + durée. Plan Business : carte interactive et étapes turn-by-turn. Routage Valhalla sur les données OpenStreetMap France.

Il vous reste 50 tests gratuits cette heure, aucun compte requis.
Clé API personnelle active — appels illimités selon votre plan.

Voir le résultat en plan :

Plan Growth : distance et durée routière entre deux points (endpoint /route/summary). Carte et étapes turn-by-turn non incluses. Plan Business : itinéraire complet avec carte interactive et étapes turn-by-turn (endpoint /route/compute).

147 ms
30,8 km Distance totale
28 min Durée estimée
20 étapes
65 km/h Vitesse moyenne
Adresse résolue 1 Place du Trocadéro et du Onze Novembre, 75016 Paris 16e Arrondissement 48.862905, 2.288342
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.

    17 m 0 min

  2. Tournez à droite dans Avenue du Président Wilson.

    419 m 1 min

  3. Entrez dans Place d'Iéna et prenez la 4ème sortie dans Avenue d'Iéna.

    67 m 0 min

  4. Quittez le rond-point dans Avenue d'Iéna.

    947 m 2 min

  5. Entrez dans Place Charles de Gaulle et prenez la 7ème sortie dans Avenue de la Grande Armée.

    285 m 1 min

  6. Quittez le rond-point dans Avenue de la Grande Armée.

    1,1 km 2 min

  7. Tournez à droite vers A 1/A 13/Périphérique/Porte Maillot.

    96 m 0 min

  8. Serrez à gauche dans Voie BG/17.

    64 m 0 min

  9. Continuez tout droit pour prendre la bretelle vers A 1/A 1/Périphérique intérieur/Porte de Champerret.

    6,3 km 8 min

  10. Prenez la bretelle A 1 vers Lille/Charles de Gaulle/Saint-Denis.

    145 m 0 min

  11. Gardez la gauche pour prendre A1 vers Lille/Charles de Gaulle/Saint-Denis.

    15,6 km 10 min

  12. Prenez la sortie 6 vers Charles de Gaulle/Roissy-en-France/Z.A. Paris Nord 2/Goussainville.

    1,3 km 1 min

  13. Continuez vers Charles de Gaulle/Centre commercial régional.

    656 m 0 min

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

    796 m 1 min

  15. Gardez la gauche à la fourche.

    609 m 1 min

  16. Gardez la droite à la fourche.

    280 m 0 min

  17. Serrez à droite dans Route de la Commune.

    221 m 0 min

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

    1,5 km 1 min

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

    448 m 1 min

  20. Votre destination est sur la droite.

    0 m 0 min

Bounding box (WGS84)
min_lat
48.863069
min_lon
2.281167
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.",
      "distance_km": 0.017,
      "duree_s": 4.145,
      "index_debut": 0,
      "index_fin": 2,
      "type": 3
    },
    {
      "consigne": "Tournez \u00e0 droite dans Avenue du Pr\u00e9sident Wilson.",
      "distance_km": 0.419,
      "duree_s": 57.748,
      "index_debut": 2,
      "index_fin": 12,
      "type": 10
    },
    {
      "consigne": "Entrez dans Place d\u0027I\u00e9na et prenez la 4\u00e8me sortie dans Avenue d\u0027I\u00e9na.",
      "distance_km": 0.067,
      "duree_s": 10.312,
      "index_debut": 12,
      "index_fin": 22,
      "type": 26
    },
    {
      "consigne": "Quittez le rond-point dans Avenue d\u0027I\u00e9na.",
      "distance_km": 0.947,
      "duree_s": 116.818,
      "index_debut": 22,
      "index_fin": 56,
      "type": 27
    },
    {
      "consigne": "Entrez dans Place Charles de Gaulle et prenez la 7\u00e8me sortie dans Avenue de la Grande Arm\u00e9e.",
      "distance_km": 0.285,
      "duree_s": 35.998,
      "index_debut": 56,
      "index_fin": 90,
      "type": 26
    },
    {
      "consigne": "Quittez le rond-point dans Avenue de la Grande Arm\u00e9e.",
      "distance_km": 1.067,
      "duree_s": 95.755,
      "index_debut": 90,
      "index_fin": 158,
      "type": 27
    },
    {
      "consigne": "Tournez \u00e0 droite vers A 1/A 13/P\u00e9riph\u00e9rique/Porte Maillot.",
      "distance_km": 0.096,
      "duree_s": 13.777,
      "index_debut": 158,
      "index_fin": 166,
      "type": 10
    },
    {
      "consigne": "Serrez \u00e0 gauche dans Voie BG/17.",
      "distance_km": 0.064,
      "duree_s": 7.728,
      "index_debut": 166,
      "index_fin": 169,
      "type": 16
    },
    {
      "consigne": "Continuez tout droit pour prendre la bretelle vers A 1/A 1/P\u00e9riph\u00e9rique int\u00e9rieur/Porte de Champerret.",
      "distance_km": 6.304,
      "duree_s": 459.775,
      "index_debut": 169,
      "index_fin": 255,
      "type": 17
    },
    {
      "consigne": "Prenez la bretelle A 1 vers Lille/Charles de Gaulle/Saint-Denis.",
      "distance_km": 0.145,
      "duree_s": 10.461,
      "index_debut": 255,
      "index_fin": 259,
      "type": 18
    },
    {
      "consigne": "Gardez la gauche pour prendre A1 vers Lille/Charles de Gaulle/Saint-Denis.",
      "distance_km": 15.61,
      "duree_s": 581.065,
      "index_debut": 259,
      "index_fin": 458,
      "type": 24
    },
    {
      "consigne": "Prenez la sortie 6 vers Charles de Gaulle/Roissy-en-France/Z.A. Paris Nord 2/Goussainville.",
      "distance_km": 1.34,
      "duree_s": 53.652,
      "index_debut": 458,
      "index_fin": 480,
      "type": 20
    },
    {
      "consigne": "Continuez vers Charles de Gaulle/Centre commercial r\u00e9gional.",
      "distance_km": 0.656,
      "duree_s": 26.246,
      "index_debut": 480,
      "index_fin": 492,
      "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": 492,
      "index_fin": 505,
      "type": 23
    },
    {
      "consigne": "Gardez la gauche \u00e0 la fourche.",
      "distance_km": 0.609,
      "duree_s": 35.547,
      "index_debut": 505,
      "index_fin": 517,
      "type": 24
    },
    {
      "consigne": "Gardez la droite \u00e0 la fourche.",
      "distance_km": 0.28,
      "duree_s": 20.178,
      "index_debut": 517,
      "index_fin": 532,
      "type": 23
    },
    {
      "consigne": "Serrez \u00e0 droite dans Route de la Commune.",
      "distance_km": 0.221,
      "duree_s": 15.939,
      "index_debut": 532,
      "index_fin": 539,
      "type": 9
    },
    {
      "consigne": "Gardez la droite pour rester sur Route de la Commune.",
      "distance_km": 1.466,
      "duree_s": 86.696,
      "index_debut": 539,
      "index_fin": 571,
      "type": 23
    },
    {
      "consigne": "Gardez la gauche pour rester sur Route de la Commune.",
      "distance_km": 0.448,
      "duree_s": 35.685,
      "index_debut": 571,
      "index_fin": 599,
      "type": 24
    },
    {
      "consigne": "Votre destination est sur la droite.",
      "distance_km": 0.0,
      "duree_s": 0.0,
      "index_debut": 599,
      "index_fin": 599,
      "type": 5
    }
  ],
  "origine": {
    "adresse": "1 Place du Trocad\u00e9ro et du Onze Novembre, 75016 Paris 16e Arrondissement",
    "lat": 48.862905,
    "lon": 2.288342,
    "source": "address"
  },
  "resume": {
    "bbox": {
      "max_lat": 49.009305,
      "max_lon": 2.550256,
      "min_lat": 48.863069,
      "min_lon": 2.281167
    },
    "distance_km": 30.839,
    "duree_min": 28.5,
    "duree_s": 1708.587,
    "geometrie": {
      "encodage": "polyline6",
      "polyline": "{tje|A}ytjCyA|CwBtEaBsJm_@iyBgA_G}AkJiG_^wXu_BgDcT_AmGMeAoEgRn@qB`@sDEyDm@kDqAkCiB}AwCa@wBn@mBbBy@hBkLyGoAm@yLaGakBk}@{DmBgCoAqL{HyN{IwJj@mO?u[@eEEkj@o@cEEeEPcMxAeOdBiW|BoFf@u_@fDcg@vEaJ|@eHx@wBVm@F}C^aAH}AHyAHkKh@sDZaAJ}@FuXpBa@eEg@wFo@eEeAqDqAcDmAcCkBsCmBeBkBaBsBcAmB}@mB_@cCQyDFaCXiCd@wBv@oDpBmEpGcCdGkB~Gs@bEaA|JQvG@hE`@pFf@bD|@|DnApEbBzCtArC~ApBlBnBjB`BuFnVeB`Ic@nB[vAmCtMuA`G_@dBiA~F]bBkAhFWfAMl@cHx[K`@Kh@_@bBcIv^}DrQ]zAo@xC]~AeAvEcEvRqFfVmAtF_Qlw@i@bCiAfF]bBgCtLI`@K`@oDdP]|Ao@vCyKfg@yGpZYlAgClLyBvJWpAwE|SqRh|@wB~JoBfJ]zAqApG{FlWwCbN_@hBiKvPcA`By@dCM^_@dByAzGaApE]zAS`A[vAkAnFi@bCgG~Xa]r|AWhAS|@s@nDeB|I}DcC_Ai@aC}AqHiFsCiBo@c@aDuBsNwJaWwF{Ew@kCa@kFqAwCc@eCm@}Bo@oN{DqLaE}EgBgF_Cq\\}PcRyJa\\qNyWkKyCwAkLwI}LuLoUmY_Xo_@oRm`@uNaXoU{d@cSg_@gYok@eb@uw@sDaHeuBk~D{CqG_DwHeFoM_GaQ}BsHmCsJiDaOoFwXuBgM_BgKoAkJyTcjBkFqVsLuj@mXyx@q[wz@{_@{t@{aA_jBkQg[{]io@yY_s@qQyb@_HoN}c@qz@op@{nAiCsE_Qg`@qJmYcFoPwMec@}b@k}AwXqaAc{@{aDiTwv@ki@chCgWwpAgIa_@{Lsl@iKii@oTmfAsEoVeDaTmD_[yCg\\}@wQm@im@QyQoD{`IyA_yB]ih@eCqaDsFeoKiDsjE[mh@]oj@iBwvCeDcrGYev@`@ab@~@kf@xEw`BhHcb@lBiMjCgT|Ksk@lCga@BsDAeDGmCK_COyBSkB[}Ba@aCi@aCq@cCw@{Be@gAa@{@y@{AeA_B{@gA{AwAuAcAaCkA}Bs@_Cg@iCi@mBEgBDmBRoBb@iBl@yDrAiKnCuDz@wHdA_N`B{I`@iNAmQp@qd@bBuL`@m}BxIgc@~AejHdVyyBtHmsIb[giAhDocClJsuCdKmJ\\ywAfFw[dAsGJeF@qEGwEQmIy@cDk@_FaAiEkA{FoBsF_CkEwBaGuDkBuAiBqA_CkByDiDwDuDaEwE_FsGmCaEmCeEmAqBuBiEkCuFqCkGiCeH_CcHyBuHoByH_BoHqBsKeDyT}Ly|@}CqUeEo^mCgToDyXoF_^aDiS{DuUyVgwAkCyNoDaSiSshAoJkl@}Iuf@eSqjAaRifA_EiUsNix@eLwp@_Ksl@qHid@wJgv@mN}mAuNuyAkFup@qDi[qHepAiBqa@aBy`@eBoh@qAqh@o@q\\g@s\\g@wc@m@cr@Ya^gAemAw@is@k@agAgAoaAiActAkAaqA[}d@{@}b@q@}`@UiR}C}y@wBkh@eCyg@qCmg@uBg[qCy_@_D{`@}E{i@aIsw@kFge@}Fsd@cKsu@qIgj@qW}jBudA{iHuLaz@_e@s_Ds@kN_XsiBqGwd@gRuoAqh@eoDowBelOgKcp@cJmn@aL{t@iLyr@aMur@iZmxAye@yqBkL_^gEyNoa@aoAad@imA}Uql@icAe_ComCkgGqa@k`Ayw@ufBaYwo@s[au@m^az@eq@u~A{_DohHiYso@on@awAmo@oyAmg@kjAmRae@mIyPoWwk@unA}pCsi@sjA_Uuc@sZkl@{s@woAa_Ck`EyIyM_wA_eCmfA_kB{Qc[k~@_`Biz@wvAmkGauKihA}mBm^qn@_zBwxDiaAgeB}iBo`Dku@iqAemAuvBsTa`@oCgNk\\mp@qe@s_AoOw^oJsZ_Lca@aMqe@oLuc@aLm[yOy]cRk[yVi]eVyU{SuQgHeJwq@}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

Deux endpoints, deux plans, un même calcul de routage Valhalla sur les données OpenStreetMap France. Lorsqu'une borne est fournie en adresse, elle est résolue via la même chaîne que /address/verify pour récupérer les coordonnées géographiques avant le calcul.

  • Plan Growth — /route/summary : distance et durée routière (distance_km, duree_s, duree_min) entre deux points. Pas de géométrie ni d'instructions turn-by-turn — réponse compacte, idéale pour qualifier rapidement un prospect (« est-il à moins de 30 min de mon magasin / agence / dépôt ? est-il dans ma zone de chalandise ? »).
  • Plan Business — /route/compute : le même résumé, plus une polyline6 (à décoder côté client pour le tracé carto) et la liste des étapes (consigne en français, distance, durée, indices de segments dans la polyline). Indispensable pour afficher l'itinéraire à un utilisateur final ou guider un commercial sur le terrain.
  • 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.

Cas d'usage Growth : scoring de prospect par distance à un point de vente, filtrage géographique d'une base CRM, contrôle d'éligibilité d'une zone de livraison, calcul d'indemnité kilométrique. Cas d'usage Business : préparation de tournée commerciale, navigation embarquée, restitution carto à un utilisateur final.

Les autres démos