Cette API est destinée aux sociétés de livraison partenaires de Havana Express. Elle vous permet de récupérer les colis que nous vous confions, mettre à jour leur statut et remonter les preuves de livraison.
Havana Express vous remet une clé privée sk_partner_….
Interrogez régulièrement GET /orders.
Postez le statut + preuve à chaque étape clé.
https://havanaexpress.ma/api/public/partnersJSON UTF-8. Codes : 200/201 succès, 400 validation, 401 clé invalide, 403 compte désactivé, 404 colis non assigné, 500 erreur serveur.
Ajoutez votre clé partenaire à chaque requête :
x-api-key: sk_partner_xxxxxxxxxxxxxxxxxxxxxxxxxxxxRenvoie uniquement les colis que Havana Express vous a confiés. Filtres : status, limit (1-200), offset.
/api/public/partners/orders?status=picked_up&limit=50{
"ok": true,
"count": 12,
"limit": 50,
"offset": 0,
"orders": [
{
"tracking_number": "FX-2026-00123",
"status": "in_transit",
"recipient_name": "Ali Bennani",
"recipient_phone": "0612345678",
"delivery_city": "Casablanca",
"delivery_address": "Rue Mohammed V, 12",
"cod_amount": 250,
"weight_kg": 1.2
}
]
}Informations complètes + historique (events).
/api/public/partners/orders/{tracking_number}{
"ok": true,
"order": {
"tracking_number": "FX-2026-00123",
"status": "in_transit",
"sender_name": "Boutique Atlas",
"recipient_name": "Ali Bennani",
"recipient_phone": "0612345678",
"delivery_city": "Casablanca",
"delivery_address": "Rue Mohammed V, 12",
"cod_amount": 250
},
"events": [ { "status": "in_transit", "message": "...", "created_at": "..." } ]
}Statuts autorisés : pending, picked_up, received_origin_hub, in_transit, received_destination_hub, assigned_driver, out_for_delivery, delivered, postponed, failed, returned, cancelled.
/api/public/partners/orders/{tracking_number}/statuscurl -X POST https://havanaexpress.ma/api/public/partners/orders/FX-2026-00123/status \
-H "x-api-key: sk_partner_..." \
-H "Content-Type: application/json" \
-d '{
"status": "delivered",
"received_by": "Ali Bennani",
"signature_url": "https://cdn.example.com/sign/abc.png",
"pod_photo_url": "https://cdn.example.com/pod/abc.jpg",
"delivery_lat": 33.5731,
"delivery_lng": -7.5898
}'{ "ok": true, "tracking_number": "FX-2026-00123", "status": "delivered" }Indiquez la raison dans le champ reason. Le client en sera notifié automatiquement.
/api/public/partners/orders/{tracking_number}/status{
"status": "failed",
"reason": "Destinataire injoignable, 3 tentatives"
}{ "ok": true, "tracking_number": "FX-2026-00123", "status": "failed" }pendingCréé, en attente de ramassagepicked_upRamassé chez l'expéditeurreceived_origin_hubReçu au Hub d'originein_transitEn transitreceived_destination_hubArrivé au Hub de destinationassigned_driverAffecté à un livreurout_for_deliveryEn cours de livraisondeliveredLivré ✅ (joindre POD)postponedReportéfailedÉchec (joindre raison)returnedRetourné expéditeurcancelledAnnulésk_partner_…. Conservez-la côté serveur uniquement.GET /orders.signature_url ou pod_photo_url.delivery_lat, delivery_lng) renforcent la preuve de livraison.Notre équipe technique vous accompagne pour brancher votre TMS ou app mobile.
Contacter l'équipe