Devis instantanés
Générez une estimation de prix en temps réel à partir d'une adresse d'enlèvement et de livraison, avant de la transformer en devis formel.
quotesDevis, missions de convoyage, suivi et documents : intégrez le convoyage automobile dans votre DMS, votre ERP ou votre plateforme de gestion de flotte, sans changer vos habitudes.
Une clé sandbox, une commande, un devis. Sans engagement et sans facturation.
Dans votre espace pro, onglet API : une clé de test gratuite en un clic. Aucune mission réelle n'est créée.
Copiez la commande ci-dessous dans votre terminal, en remplaçant la clé.
Le prix, la distance et la durée reviennent en JSON, au même format qu'en production.
curl -X POST https://transportsligneo.fr/api/public/v1/quotes/estimate \
-H "Authorization: Bearer sk_test_VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{"pickup_address":"Tours","delivery_address":"Bordeaux","vehicle_type":"leger"}'{
"estimate_id": "est_test_3f9a1c7b2d10",
"livemode": false,
"distance_km": 350,
"duration_estimate": "4h22",
"price_ht": 285,
"price_ttc": 342,
"currency": "EUR",
"valid_until": "2026-11-01T10:00:00.000Z"
}Automatisez la création de devis et de missions, suivez vos convoyages en temps réel et récupérez vos documents — le tout depuis vos propres outils.
Générez une estimation de prix en temps réel à partir d'une adresse d'enlèvement et de livraison, avant de la transformer en devis formel.
quotesCréez une mission à partir d'un devis accepté, suivez son statut et sa position GPS en temps réel jusqu'à la livraison.
missionsRécupérez automatiquement le bon de livraison signé, l'état des lieux et la facture liés à chaque mission.
documentsRecevez un webhook signé à chaque changement de statut — mission assignée, démarrée, livrée ou annulée.
webhooksUne API REST, des réponses JSON et une authentification par clé secrète envoyée depuis votre serveur.
curl https://api.transportsligneo.fr/v1/quotes/estimate -H "Authorization: Bearer ••••••••••••" -H "Content-Type: application/json" -d '{ "pickup_address": "...", "delivery_address": "..." }'Chaque appel renvoie une estimation instantanée, sans engagement, prête à être affichée dans votre outil.
{
"distance_km": 465,
"duration_estimate": "5h48",
"price_ttc": 342.00,
"currency": "EUR"
}Exemples illustratifs — la documentation complète est juste en dessous ; vos clés API se génèrent dans votre espace professionnel.
Consultable sans compte. Pour obtenir vos clés (sandbox gratuite), demandez un accès : votre espace professionnel les génère en un clic.
Importez-le dans Postman, Insomnia ou Swagger : tous les appels sont prêts à tester.
Une clé secrète par environnement, envoyée depuis votre serveur : Authorization: Bearer sk_live_…. Les clés sont stockées chiffrées chez nous ; la valeur n'est affichée qu'une seule fois.
Avec une clé sk_test_…, aucune mission réelle n'est créée et aucun convoyeur n'est attribué. Mêmes formats de réponse, idéal pour valider votre intégration.
100 requêtes par minute et par clé. Chaque réponse contient X-Request-Id, X-RateLimit-Limit, X-RateLimit-Remaining et Retry-After en cas de dépassement.
Ajoutez Idempotency-Key aux créations de devis et de missions. Si vous renvoyez la même requête (coupure réseau, nouvel essai), vous recevez la première réponse avec Idempotent-Replayed: true : rien n'est créé deux fois.
Base : https://transportsligneo.fr/api/public/v1 · cliquez sur un endpoint pour voir les paramètres et un exemple.
Un message JSON signé (HMAC SHA-256) est envoyé à votre URL HTTPS à chaque changement. En cas d'échec, 3 tentatives (1 s puis 4 s) ; chaque envoi est visible dans votre journal et peut être rejoué en un clic.
| Événement | Quand |
|---|---|
mission.assigned | Un convoyeur a été attribué à la mission. |
mission.started | Le convoyeur a démarré la mission. |
mission.delivered | Le véhicule est livré (preuve de livraison disponible). |
mission.cancelled | La mission a été annulée. |
invoice.available | La facture de la mission est disponible. |
webhook.test | Événement de test envoyé depuis votre espace pro. |
import crypto from "node:crypto";
// En-tête reçu : X-Ligneo-Signature: t=1761300000,v1=3a1f…
export function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // rejette les envois rejoués trop tard
const expected = crypto.createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}{
"id": "evt_8f2c41d0a9b3e7c5",
"type": "mission.delivered",
"created_at": "2026-10-24T09:30:00Z",
"livemode": true,
"data": {
"mission_id": "mis_…",
"status": "delivered"
}
}| HTTP | Type | Signification |
|---|---|---|
400 | invalid_request_error | Paramètre manquant ou invalide. |
401 | authentication_error | Clé absente, invalide ou révoquée. |
403 | permission_error | Clé en lecture seule, ou adresse IP non autorisée pour cette clé. |
404 | not_found | Ressource introuvable pour votre organisation. |
409 | invalid_request_error / idempotency_error | Conflit : devis déjà converti, ou requête identique en cours. |
422 | idempotency_error | Idempotency-Key déjà utilisée avec des paramètres différents. |
429 | rate_limit_error | 100 requêtes par minute dépassées. Voir Retry-After. |
500 | api_error | Erreur côté Ligneo. Réessayez avec la même Idempotency-Key. |
Toutes les erreurs ont le même format : { "error": { "type", "message", "request_id" } }. Communiquez le request_id à notre support pour un diagnostic immédiat.
Demandez un accès : nous activons votre espace professionnel, vous générez vos clés sandbox et production en un clic, et vous suivez vos appels dans votre journal.