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éthodeChemin
GET/me

Vérifier la clé : renvoie votre entreprise

GET/products

Lister les produits (filtres : sku, q, active)

GET/products/{id}

Un produit avec prix, TVA et stock

GET/customers

Lister les clients (filtres : email, q, active)

POST/customers

Créer un client — sans lat/lng, l'adresse est géolocalisée sur la carte

GET/customers/{id}

Un client

PATCH/customers/{id}

Modifier un client (seuls les champs envoyés)

GET/orders

Lister les commandes (filtres : status, date, from, to, customer_id, external_ref)

POST/orders

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

POST/orders/{id}/confirm

Confirmer une commande en attente (émet la facture)

POST/orders/{id}/cancel

Annuler une commande avant son départ (le stock est réintégré)

GET/webhooks

Lister les webhooks

POST/webhooks

Abonner une URL à des événements (renvoie le secret de signature une seule fois)

DELETE/webhooks/{id}

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.