API · v1

Les commandes entrent. Les tournées sortent.

Envoyez des missions depuis le système que vous utilisez déjà et récupérez une tournée séquencée, vos propres identifiants intacts. Trois points de terminaison, sans SDK.

URL de base
api.routemate.app/v1
Authentification
OAuth2 client_credentials
Durée de vie du jeton
3600 s
Disponibilité
Offre Team et au-delà
01 · Points de terminaison

Trois appels, et c’est toute la surface

Points de terminaison de l’API d’intégration RouteMate.
VerbeCheminObjet
POST/v1/integration-tokenÉchanger des identifiants client contre un jeton bearer, valable une heure
POST/v1/integration-importImporter une mission avec ses arrêts, géocoder les adresses, optimiser la tournée et affecter le chauffeur — en une seule requête
GET/v1/integration-jobsÉtat de la mission et des arrêts : compteurs d’avancement, état par arrêt, l’ordre optimisé
02 · Un appel détaillé

Importer, géocoder, optimiser, affecter

Requête
POST /v1/integration-import HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json

{
  "external_job_id": "WMS-2026-07-30-A",
  "driver_email": "driver@fleet.com.au",
  "optimize": true,
  "stops": [
    { "external_stop_id": "SO-88214",
      "address": "3/216 Brunswick St, Fitzroy VIC 3065",
      "parcel_count": 2,
      "duration_minutes": 4 }
  ]
}
Réponse · 200 OK
{
  "job_id": "job_7Yq2c",
  "external_job_id": "WMS-2026-07-30-A",
  "assigned_to": "driver@fleet.com.au",
  "optimized": true,
  "stops_imported": 142,
  "stops": [
    { "external_stop_id": "SO-88214",
      "stop_id": "stp_9f2",
      "sequence": 38,
      "status": "pending" }
  ],
  "warnings": []
}
03 · Référence des champs

Vos identifiants sont conservés

Chaque identifiant que vous envoyez revient en sortie, sur la mission et sur chaque arrêt. Vous n’avez jamais à tenir une table de correspondance entre vos numéros de commande et les nôtres.

Référence des champs d’import.
external_job_idVotre propre référence de lot — elle revient sur chaque arrêt, vous n’avez donc pas de table de correspondance à tenir
external_stop_idVotre numéro de commande ou d’expédition, conservé jusqu’au statut et à la clôture
addressUne seule ligne d’adresse ; géocodée à l’import, les échecs reviennent sous forme d’avertissements
parcel_countSert aux hypothèses de charge et de manutention sur l’arrêt
duration_minutesTemps de service à la porte — consommé dans le modèle, pas escamoté
driver_emailAffecte la tournée terminée à un chauffeur déjà présent sur le compte
04 · Comportement

Ce qui se passe quand ça tourne mal

Écritures idempotentes

Réimporter le même external_job_id met la mission à jour au lieu d’en créer une seconde. Réessayer après un dépassement de délai est sans risque.

Succès partiel

Un arrêt impossible à géocoder revient dans warnings[] tandis que le reste de la mission est importé. La requête n’échoue pas dans son ensemble parce qu’une adresse est mauvaise.

Versionnement

La version est dans le chemin. À l’intérieur d’une version, des champs sont ajoutés mais jamais supprimés ni détournés, si bien qu’une intégration écrite aujourd’hui continue de fonctionner.

Les clés de bac à sable sont gratuites

Développez contre un bac à sable avant de vous engager. Demandez-nous et nous enverrons des identifiants et un exemple détaillé adapté à votre propre format de données.