Référence
Zones desservies
GET
/api/v1/coverageportée coverage:readZones, véhicules et limites de colis desservis.
Erreurs possibles
unauthorized · 401Clé API absente ou invalide.rate_limited · 429Trop de requêtes. Réessayez après le délai indiqué.
Créer un devis
POST
/api/v1/quotesportée quotes:createCalcule un prix sans engagement. Le prix est verrouillé pendant sa durée de validité (réglable) et ne sert qu'une fois. Les limites de taille et de poids dépendent du véhicule.
Paramètres
pickupobjet, requis{ lat, lng } du lieu de ramassagedropoffobjet, requis{ lat, lng } du lieu de livraisonvehicletextemoto (défaut), velo, voiture, camionnette, piedparcel.sizetexteenvelope, small, medium, largeparcel.weighttextelt5, 5to15, gt15parcel.fragilebooléenAjoute le supplément fragile
curl https://kolis.delivery/api/v1/quotes \
-H "Authorization: Bearer $KOLIS_KEY" \
-H "Content-Type: application/json" \
-d '{
"pickup": { "lat": 4.0511, "lng": 9.7679 },
"dropoff": { "lat": 4.0700, "lng": 9.7900 },
"vehicle": "moto",
"parcel": { "size": "medium", "fragile": true }
}'{
"id": "5d0b…",
"object": "quote",
"mode": "test",
"price": 2150,
"currency": "XAF",
"distance_m": 3100,
"breakdown": { "distance": 1750, "size": 300, "weight": 0, "fragile": 100 },
"expires_at": "2026-11-10T10:15:00Z"
}Erreurs possibles
invalid_input · 400Paramètre manquant ou invalide.parcel_too_big · 422Le colis dépasse les limites de ce véhicule. Choisissez un véhicule plus grand.not_covered · 422Adresse hors des zones desservies.rate_limited · 429Trop de requêtes. Réessayez après le délai indiqué.
Créer une livraison
POST
/api/v1/deliveriesportée deliveries:createCrée la livraison à partir d'un devis. L'en-tête Idempotency-Key est obligatoire : la même clé et le même corps rejouent la même réponse.
Erreurs possibles
idempotency_key_required · 400L'en-tête Idempotency-Key est obligatoire pour créer une livraison.insufficient_balance · 402Solde prépayé insuffisant.quote_expired · 409Le devis a expiré. Demandez-en un nouveau.quote_used · 409Ce devis a déjà servi.duplicate_external_ref · 409Cette référence externe existe déjà.
Lister les livraisons
GET
/api/v1/deliveriesportée deliveries:readPagination par curseur ; filtres status, external_ref, created_after, created_before.
Erreurs possibles
invalid_cursor · 400Curseur de pagination invalide.rate_limited · 429Trop de requêtes. Réessayez après le délai indiqué.
Consulter une livraison
GET
/api/v1/deliveries/{id}portée deliveries:readStatut, prix, références.
Erreurs possibles
not_found · 404Ressource introuvable.
Annuler une livraison
POST
/api/v1/deliveries/{id}/cancelportée deliveries:cancelAvant le ramassage seulement ; remboursement intégral du solde.
Erreurs possibles
cannot_cancel_after_pickup · 409Annulation impossible : le colis a été récupéré.not_found · 404Ressource introuvable.
Suivi
GET
/api/v1/deliveries/{id}/trackingportée tracking:readStatut, historique et position approximative du livreur (si activée pour votre compte). Jamais de nom complet ni de téléphone.
Erreurs possibles
tracking_disabled · 403Le suivi n'est pas activé pour ce compte.not_found · 404Ressource introuvable.
Preuve de livraison
GET
/api/v1/deliveries/{id}/proofportée deliveries:readRemise confirmée par le code.
Erreurs possibles
bad_status · 409Action impossible dans l'état actuel de la livraison.not_found · 404Ressource introuvable.
Solde prépayé
GET
/api/v1/balanceportée balance:readSolde réel ; illimité en test.
Erreurs possibles
unauthorized · 401Clé API absente ou invalide.