TrustyData Docs
Site Tarifs Contact

Itinéraires

Un prospect saisit son adresse dans un formulaire : est-il à 10 minutes de votre agence la plus proche, ou à deux heures de route ? Une fiche CRM liste une adresse domicile et une adresse de rendez-vous : combien de temps de trajet réel entre les deux ? Les deux endpoints ci-dessous répondent en distance et durée routières — jamais à vol d'oiseau — pour qualifier ou scorer un contact selon sa proximité réelle avec un point de vente, une agence ou une zone de chalandise.

Endpoint Quand l'utiliser Plan minimum
POST /route/summary Comparer les distances/durées d'un ou plusieurs points vers une ou plusieurs destinations (jusqu'à 25×25) — sans carte ni détail du trajet Growth
POST /route/compute Itinéraire complet entre deux points — géométrie du tracé et étapes de navigation en français Business

POST /route/summary — comparer des distances/durées

Utilisez cet endpoint pour scorer un prospect : par exemple, déterminer laquelle de vos agences est la plus proche de son adresse, sans avoir besoin d'un tracé ni d'étapes de navigation — uniquement les métriques agrégées. Chaque borne (origine ou destination) se fournit comme une adresse libre ou un couple de coordonnées WGS84 (lat/lon), jamais les deux à la fois.

curl -X POST "https://api.trustydata.app/services/v1/route/summary" \
  -H "Authorization: Bearer VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "origins": [
      {"address": "1 rue de la Paix 75002 Paris"}
    ],
    "destinations": [
      {"address": "10 avenue des Champs-Élysées 75008 Paris"},
      {"address": "12 rue de la République 69002 Lyon"}
    ]
  }'
{
  "origines": [
    {
      "adresse": "1 Rue de la Paix, 75002 Paris 2e Arrondissement",
      "source": "address",
      "lat": 48.868546,
      "lon": 2.33031
    }
  ],
  "destinations": [
    {
      "adresse": "10 Avenue des Champs Elysées, 75008 Paris 8e Arrondissement",
      "source": "address",
      "lat": 48.867887,
      "lon": 2.315269
    },
    {
      "adresse": "12 Rue de la République, 69002 Lyon 2e Arrondissement",
      "source": "address",
      "lat": 45.76511,
      "lon": 4.835769
    }
  ],
  "matrice": [
    [
      { "distance_km": 1.372, "duree_s": 171, "duree_min": 2.9 },
      { "distance_km": 469.057, "duree_s": 14743, "duree_min": 245.7 }
    ]
  ],
  "attribution": "Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"
}

Une seule origine (le prospect) comparée à deux destinations candidates (deux agences). matrice[i][j] est le trajet de origines[i] vers destinations[j] : ici, matrice[0][0] — l'agence des Champs-Élysées — est à 1,4 km et 2,9 minutes du prospect, contre matrice[0][1] — l'agence lyonnaise — à 469 km et environ 4 h 06 (duree_min arrondi à une décimale, duree_s la valeur brute en secondes). L'agence la plus proche ressort directement de la comparaison, sans calcul côté client. Si un trajet est infaisable (pas de route entre les deux points), distance_km, duree_s et duree_min valent null pour cette cellule plutôt que de faire échouer tout l'appel.

POST /route/compute — itinéraire complet

Une fois le point de destination retenu (par exemple grâce à /route/summary ci-dessus), utilisez cet endpoint pour obtenir le tracé complet à afficher sur une carte ou une liste d'étapes turn-by-turn — utile pour une confirmation de rendez-vous, un itinéraire envoyé par email, ou l'affichage d'un trajet dans un espace client.

curl -X POST "https://api.trustydata.app/services/v1/route/compute" \
  -H "Authorization: Bearer VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "origin": {"address": "1 rue de la Paix 75002 Paris"},
    "destination": {"address": "10 avenue des Champs-Élysées 75008 Paris"}
  }'
{
  "origine": {
    "adresse": "1 Rue de la Paix, 75002 Paris 2e Arrondissement",
    "source": "address",
    "lat": 48.868546,
    "lon": 2.33031
  },
  "destination": {
    "adresse": "10 Avenue des Champs Elysées, 75008 Paris 8e Arrondissement",
    "source": "address",
    "lat": 48.867887,
    "lon": 2.315269
  },
  "resume": {
    "distance_km": 1.372,
    "duree_s": 171.151,
    "duree_min": 2.9,
    "bbox": {
      "min_lat": 48.865351,
      "min_lon": 2.315401,
      "max_lat": 48.868491,
      "max_lon": 2.330435
    },
    "geometrie": {
      "encodage": "polyline6",
      "precision": 6,
      "polyline": "wgue|AgsfmCxCxCbEnDdC~BxO|OxEzE…"
    }
  },
  "etapes": [
    {
      "consigne": "Conduisez vers le sud-est sur Rue de la Paix.",
      "distance_km": 0.421,
      "duree_s": 54.781,
      "type": 2,
      "index_debut": 0,
      "index_fin": 23
    },
    { "…": "…" },
    {
      "consigne": "Votre destination est sur la gauche.",
      "distance_km": 0,
      "duree_s": 0,
      "type": 6,
      "index_debut": 69,
      "index_fin": 69
    }
  ],
  "attribution": "Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"
}

Réponse tronquée sur deux points : le champ geometrie.polyline encode l'intégralité du tracé en polyline6 (précision 6, pas 5) — ici coupé après quelques points, la vraie chaîne fait plusieurs centaines de caractères et se décode côté client (Leaflet, Mapbox GL, MapLibre…) pour tracer l'itinéraire sur une carte. etapes comptait 5 manœuvres pour ce trajet très court (2 conservées ici, la 2e, 3e et 4e omises) ; sur un trajet long, cette liste peut compter plusieurs dizaines d'entrées. Chaque étape porte sa consigne en français, sa distance/durée propre, et index_debut/index_fin — la plage de points de la polyline décodée qu'elle couvre, utile pour surligner l'étape en cours sur la carte. resume.bbox donne la boîte englobante du parcours, pratique pour cadrer automatiquement une vue carte.

Attribution OpenStreetMap obligatoire

Les itinéraires et matrices sont calculés sur le réseau routier OpenStreetMap, publié sous licence ODbL. Chaque réponse inclut un champ attribution à reproduire visiblement partout où le résultat est restitué à l'utilisateur final — carte, liste d'étapes, export. Détail complet, exemples d'intégration (Leaflet…) et formulations équivalentes acceptées : Attribution OSM.

Non disponible en Discovery ni Starter

/route/summary et /route/compute ne sont pas accessibles avec une clé Discovery ou Starter — l'appel échoue en 403. Le détail des paliers et de ce qu'ouvre chaque plan est dans Plans & quotas.

Prochains pas