Développeurs
Connectez BeeRoutes à tous vos outils
Une API REST simple en lecture et écriture, des webhooks signés pour chaque mise à jour de livraison, et des connexions prêtes à l'emploi pour Shopify et Zapier.
API REST
Créez commandes et clients, lisez produits, stock et statuts de livraison — JSON sur HTTPS.
Webhooks
Recevez un POST signé dès qu'une commande est confirmée, en route, livrée ou en échec.
Shopify
Les nouvelles commandes Shopify deviennent automatiquement des livraisons ; les annulations suivent.
Zapier
Reliez BeeRoutes à Google Sheets, Slack, votre comptabilité et plus de 7 000 applis — sans code.
Authentification
Créez une clé API dans BeeRoutes sous Intégrations → Clés API (comptes bureau uniquement). Envoyez-la dans l'en-tête Authorization de chaque requête. Les clés appartiennent à votre entreprise : elles n'accèdent jamais qu'à vos propres données.
curl https://app.beeroutes.com/api/v1/orders?status=delivered \
-H "Authorization: Bearer br_live_…"Limite : 300 requêtes par minute et par clé. Les listes renvoient jusqu'à 200 éléments (limit, offset).
Endpoints
https://app.beeroutes.com/api/v1
| Méthode | Chemin | Description |
|---|---|---|
| GET | /meVérifier la clé : renvoie votre entreprise | Vérifier la clé : renvoie votre entreprise |
| GET | /productsLister les produits (filtres : sku, q, active) | Lister les produits (filtres : sku, q, active) |
| GET | /products/{id}Un produit avec prix, TVA et stock | Un produit avec prix, TVA et stock |
| GET | /customersLister les clients (filtres : email, q, active) | Lister les clients (filtres : email, q, active) |
| POST | /customersCréer un client — sans lat/lng, l'adresse est géolocalisée sur la carte | Créer un client — sans lat/lng, l'adresse est géolocalisée sur la carte |
| GET | /customers/{id}Un client | Un client |
| PATCH | /customers/{id}Modifier un client (seuls les champs envoyés) | Modifier un client (seuls les champs envoyés) |
| GET | /ordersLister les commandes (filtres : status, date, from, to, customer_id, external_ref) | Lister les commandes (filtres : status, date, from, to, customer_id, external_ref) |
| POST | /ordersCréer une commande — produits par product_id ou sku, client par id, e-mail ou coordonnées | Créer une commande — produits par product_id ou sku, client par id, e-mail ou coordonnées |
| GET | /orders/{id}Une commande avec articles, chauffeur, heure d'arrivée estimée et preuve de livraison | Une commande avec articles, chauffeur, heure d'arrivée estimée et preuve de livraison |
| POST | /orders/{id}/confirmConfirmer une commande en attente (émet la facture) | Confirmer une commande en attente (émet la facture) |
| POST | /orders/{id}/cancelAnnuler une commande avant son départ (le stock est réintégré) | Annuler une commande avant son départ (le stock est réintégré) |
| GET | /webhooksLister les webhooks | Lister les webhooks |
| POST | /webhooksAbonner une URL à des événements (renvoie le secret de signature une seule fois) | Abonner une URL à des événements (renvoie le secret de signature une seule fois) |
| DELETE | /webhooks/{id}Se désabonner | Se désabonner |
Créer une commande
Envoyez external_ref avec votre propre identifiant de commande : envoyer deux fois la même commande renvoie la commande existante au lieu d'un doublon. Ajoutez "confirm": true pour la confirmer immédiatement.
curl -X POST https://app.beeroutes.com/api/v1/orders \
-H "Authorization: Bearer br_live_…" \
-H "Content-Type: application/json" \
-d '{
"external_ref": "PO-10442",
"customer_email": "orders@cafe-central.com",
"delivery_date": "2026-11-03",
"slot_from": "08:00",
"slot_to": "11:00",
"items": [
{ "sku": "WAT-05", "quantity": 20 },
{ "sku": "JUI-01", "quantity": 6 }
]
}'Webhooks
BeeRoutes envoie un événement JSON en POST à votre URL quand une commande est créée, confirmée, attribuée, en route, livrée, en échec ou annulée. Ajoutez des webhooks dans Intégrations ou via l'API.
Événements
order.createdorder.confirmedorder.assignedorder.in_transitorder.deliveredorder.failedorder.cancelled{
"id": "evt_5f2c…",
"event": "order.delivered",
"created_at": "2026-11-03T09:42:10.000Z",
"data": {
"id": 1842,
"number": "ORD-2026-01842",
"external_ref": "PO-10442",
"status": "delivered",
"delivery_date": "2026-11-03",
"customer": { "id": 77, "business_name": "Café Central", … },
"items": [ { "sku": "WAT-05", "quantity": 20, "delivered_qty": 20, … } ],
"total": 182.4,
"proof": { "receiver_name": "Maria", "has_signature": true, "has_photo": false },
"delivered_at": "2026-11-03T09:42:08.000Z"
}
}Vérifier la signature
Chaque requête contient un en-tête BeeRoutes-Signature : t (horodatage Unix) et v1, le HMAC-SHA256 de « t.body » calculé avec le secret de votre webhook. Répondez par un code 2xx sous 10 secondes ; les envois en échec sont retentés une fois, et un webhook est désactivé après 25 échecs consécutifs. Répondez 410 pour vous désabonner.
import crypto from "node:crypto";
// header: "t=1762162930,v1=5d41…"
function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const expected = crypto.createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300;
return fresh && crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}Erreurs
Les erreurs utilisent les codes de statut HTTP et un corps JSON avec un code et un message :
{ "error": { "code": "product_not_found", "message": "Unknown or inactive products: sku JUI-09" } }401 clé manquante ou invalide · 404 introuvable · 409 non autorisé dans le statut actuel de la commande · 422 champs invalides, SKU inconnu ou adresse introuvable · 429 trop de requêtes
Shopify
Aucune application à installer. Dans BeeRoutes, ouvrez Intégrations → Shopify, copiez votre URL de webhook privée dans Shopify (Paramètres → Notifications → Webhooks, « Order creation » et « Order cancellation ») et collez en retour le secret de signature de Shopify. Les produits sont associés par SKU ; les nouveaux clients sont créés à partir de l'adresse de livraison.
Zapier
Utilisez « Webhooks by Zapier » : Catch Hook comme webhook BeeRoutes pour déclencher des Zaps quand les commandes changent, et un POST vers l'API avec votre clé pour créer commandes ou clients depuis n'importe quelle appli.
Ouvrir les intégrations →Planifiez dès aujourd'hui les tournées de demain
Démarrez votre essai gratuit de 14 jours et planifiez votre première journée en un après-midi.