POST /pricing calcule un tarif sans créer de mission. C’est l’endpoint à
appeler pour afficher un prix à vos utilisateurs, comparer des options, ou valider
un budget avant de passer commande. Aucune ressource n’est créée, rien n’est facturé.
Le prix renvoyé par
/pricing applique exactement la même grille que
POST /transports. Un devis et la création qui suit, sur un trajet identique,
donnent le même tarif. Voir Le prix de création est cohérent.La grille tarifaire dépend de votre groupe
Chaque clé API est rattachée à un groupe (flotte, concession, loueur). Ce groupe porte une grille tarifaire négociée : c’est elle qui détermine le prix. Vous n’avez rien à transmettre pour la sélectionner — elle est déduite de votreX-Api-Key.
Concrètement, le moteur de tarification combine plusieurs facteurs :
Distance
Les adresses d’enlèvement et de livraison sont géocodées, puis la distance
routière est calculée. C’est le principal déterminant du prix.
Type de véhicule
VP, VU, VUL… chaque catégorie a son barème. Un véhicule électrique
applique une majoration qui peut dépendre de la distance.
Plateau
Le transport sur plateau (véhicule non roulant) suit un barème distinct,
activé par le drapeau
plateau de la requête.Options
Lavage, carburant, prestations additionnelles… chaque option passée dans
options est intégrée au prix HT renvoyé.Aller-retour
Un trajet retour applique la remise retour négociée de votre groupe,
détaillée dans le champ
return_trip de la réponse.Supplément localisation
International ou zones spécifiques (ex. Corse) ajoutent un supplément selon
le pays et le code postal, intégré au prix HT renvoyé.
Avant de commencer
Votre clé API (
med_live_… en production, med_test_… en test). Elle détermine
le groupe — donc la grille appliquée.transports:read n’est pas requis pour /pricing : seule une clé
valide (non révoquée, non expirée) est nécessaire. Une clé invalide renvoie 401.
Corps de la requête
Point d’enlèvement. Une chaîne d’adresse (
"10 Rue de Rivoli, 75004 Paris") ou
un objet { address }. L’adresse est géocodée pour calculer la distance.Point de livraison, même format que
pickup.Caractéristiques du véhicule.
true pour un transport sur plateau. Le tarif plateau est toujours renvoyé dans
la réponse, que ce drapeau soit posé ou non.Liste des clés d’options à inclure dans l’estimation.
true (ou un objet décrivant le retour) pour estimer un aller-retour. Le
détail du retour apparaît dans le champ return_trip de la réponse.Informations de facturation simplifiées. Optionnel pour une estimation : la
grille vient du groupe de la clé, pas de la facturation.
car est accepté comme alias de vehicle, et returnTrip comme alias de
return_trip. Utilisez de préférence les formes en snake_case.Exemple de devis
Réponse 200
Comprendre la réponse
Prix HT du transport facturé au client. C’est le tarif de référence à afficher.
Devise des montants — toujours
EUR.Distance routière estimée, en kilomètres, issue du géocodage des deux adresses.
Adresse d’enlèvement résolue par le géocodeur :
address normalisée, lat,
lng et place_id (référence Google déterministe). Vérifiez-la pour confirmer
que le point retenu correspond bien à ce que vous visiez avant de créer la mission.Adresse de livraison résolue, même structure que
pickup.Détail du trajet retour quand
return_trip est demandé, sinon null. Contient
price_ht, distance_km, et les adresses résolues pickup (= livraison aller)
et delivery (destination du retour).Variantes de devis
- Véhicule électrique
- Avec options
- Aller-retour
- Réponse aller-retour
Un véhicule électrique peut appliquer une majoration qui dépend de la distance.
Le prix de création est cohérent
La grille appliquée par
POST /pricing est identique à celle appliquée par
POST /transports. Un devis fait foi : créez la mission sur le même trajet, le
même véhicule et les mêmes options, et vous obtenez le même prix.price.
Gestion des erreurs
Les erreurs suivent la RFC 9457 (Content-Type: application/problem+json). Branchez votre logique sur status et
title, pas sur le texte de detail.
401 — Clé API invalide
401 — Clé API invalide
Clé manquante, inconnue, révoquée ou expirée. Vérifiez l’en-tête
X-Api-Key.422 — Corps de requête invalide
422 — Corps de requête invalide
Un champ requis manque (ex.
pickup ou delivery). Le tableau errors[]
précise le champ en cause.429 — Limite de débit atteinte
429 — Limite de débit atteinte
Respectez l’en-tête
Retry-After (en secondes) et appliquez un back-off.502 — Service de tarification indisponible
502 — Service de tarification indisponible
Échec d’un service amont (relai de tarification). L’estimation n’a aucun effet
de bord : vous pouvez réessayer sans risque.
Étapes suivantes
Créer une mission
Transformez un devis en mission réelle avec
POST /transports.Authentification
Clés API, scopes et isolation par groupe.
