RGPD — données minimisées. Les endpoints de suivi n’exposent que des coordonnées et des horodatages. Aucune donnée d’identité du convoyeur (nom complet, téléphone, e-mail) n’est renvoyée par ces endpoints. Le suivi géographique est une donnée de localisation rattachée à l’exécution du contrat de transport.
Vue d’ensemble
Positions GPS
GET /transports/{id}/positions — la trace du convoyeur (latitude, longitude, vitesse, cap, horodatage), filtrable par date avec since.Étapes planifiées
GET /transports/{id}/waypoints — les étapes du trajet avec leur ETA et la date de passage.Authentification
Toutes les requêtes de suivi utilisent l’en-têteX-Api-Key et requièrent le scope transports:read.
404 Not Found (jamais 403), afin de ne pas révéler son existence.
Positions GPS du convoyeur
Paramètres
string
requis
Identifiant de la mission (
offer_id).string
Date ISO 8601 (
date-time, ex. 2026-07-01T08:00:00Z). Ne renvoie que les positions strictement postérieures à cette date. Idéal pour ne récupérer que les nouveaux points depuis votre dernier appel. Encodez le + d’un fuseau en %2B ; une valeur invalide renvoie 422 (errors: [{ "field": "since", "error": "invalid" }]).integer
défaut:"100"
Nombre maximal de positions renvoyées. Valeur par défaut 100, maximum 500.
Cet endpoint n’est pas paginé par curseur : il n’accepte pas de paramètre
cursor et ne renvoie pas de next_cursor. Pour lire la suite, rappelez-le avec since égal au ts de la dernière position reçue.Réponse
La réponse est un objet contenant un tableaudata de positions.
Position[]
Liste des positions relevées.
Exemple
Réponse 200
Cet endpoint renvoie un objet
{ "data": [...] } borné par limit, sans champ next_cursor. Pour ne récupérer que les nouveaux points entre deux appels, mémorisez le dernier ts reçu et repassez-le dans le paramètre since.Étapes planifiées (waypoints)
Paramètres
string
requis
Identifiant de la mission (
offer_id).integer
défaut:"100"
Taille de page. Valeur par défaut 100, maximum 500.
Réponse
Waypoint[]
Liste des étapes planifiées.
Exemple
Réponse 200
Webhooks plutôt que polling
Interroger les positions en boucle serrée (polling intensif) consomme votre quota de débit pour, la plupart du temps, ne rien apprendre de nouveau. Le modèle recommandé est événementiel : laissez l’API vous notifier des changements, et ne consultez les positions qu’au bon moment.1
Configurez un endpoint webhook
Depuis votre profil client, déclarez une URL HTTPS qui recevra les événements de votre groupe. Conservez le
signing secret montré une seule fois pour vérifier les signatures.2
Réagissez aux événements de progression
Les événements de cycle de vie (
transport.status_changed, transport.assigned, transport.collected, transport.completed, transport.incident) vous indiquent quand l’état de la mission évolue. C’est le bon déclencheur pour rafraîchir le suivi.3
Récupérez les positions au besoin
À réception d’un événement pertinent, appelez
GET /transports/{id}/positions?since=<dernier ts> pour ne charger que les nouveaux points. Pour un affichage carte en direct, gardez un intervalle de rafraîchissement raisonnable plutôt qu’une boucle agressive.Bonne pratique : un suivi pull-on-demand piloté par webhooks reste à jour tout en restant sous les limites de débit, contrairement à un polling fixe toutes les quelques secondes.
Gestion des erreurs
Les erreurs suivent la RFC 9457 (Content-Type: application/problem+json).
403 Forbidden
403 Forbidden
Scope
transports:read absent de la clé. Demandez une clé disposant du bon scope.404 Not Found
404 Not Found
Mission introuvable, ou hors du groupe rattaché à votre clé. Vérifiez l’
id.Exemple d'erreur 404
Étapes suivantes
Détail d'une mission
Statut public, prix, dates et résumé des documents d’une mission.
Webhooks
Recevez les événements en temps réel et vérifiez la signature HMAC.
Journal d'événements
Réconciliez les événements manqués via
GET /events.