Sviluppatori
Collega BeeRoutes a tutto ciò che usi
Una semplice API REST con accesso in lettura e scrittura, webhook firmati per ogni aggiornamento delle consegne e collegamenti pronti per Shopify e Zapier.
API REST
Crea ordini e clienti, leggi prodotti, scorte e stato delle consegne: JSON su HTTPS.
Webhook
Ricevi un POST firmato nel momento in cui un ordine viene confermato, è in viaggio, consegnato o non riuscito.
Shopify
I nuovi ordini Shopify diventano consegne in automatico; anche gli annullamenti vengono sincronizzati.
Zapier
Collega BeeRoutes a Google Sheets, Slack, software di contabilità e oltre 7.000 app, senza codice.
Autenticazione
Crea una chiave API in BeeRoutes in Integrazioni → Chiavi API (solo account dell'ufficio). Inviala nell'header Authorization di ogni richiesta. Le chiavi appartengono alla tua azienda: vedono sempre e solo i tuoi dati.
curl https://app.beeroutes.com/api/v1/orders?status=delivered \
-H "Authorization: Bearer br_live_…"Limite: 300 richieste al minuto per chiave. Gli elenchi restituiscono fino a 200 elementi (limit, offset).
Endpoint
https://app.beeroutes.com/api/v1
| Metodo | Percorso | Cosa fa |
|---|---|---|
| GET | /meVerifica la chiave: restituisce la tua azienda | Verifica la chiave: restituisce la tua azienda |
| GET | /productsElenca i prodotti (filtri: sku, q, active) | Elenca i prodotti (filtri: sku, q, active) |
| GET | /products/{id}Un prodotto con prezzo, IVA e scorte | Un prodotto con prezzo, IVA e scorte |
| GET | /customersElenca i clienti (filtri: email, q, active) | Elenca i clienti (filtri: email, q, active) |
| POST | /customersCrea un cliente: senza lat/lng l'indirizzo viene individuato sulla mappa | Crea un cliente: senza lat/lng l'indirizzo viene individuato sulla mappa |
| GET | /customers/{id}Un cliente | Un cliente |
| PATCH | /customers/{id}Modifica un cliente (solo i campi inviati) | Modifica un cliente (solo i campi inviati) |
| GET | /ordersElenca gli ordini (filtri: status, date, from, to, customer_id, external_ref) | Elenca gli ordini (filtri: status, date, from, to, customer_id, external_ref) |
| POST | /ordersCrea un ordine: prodotti per product_id o sku, cliente per id, email o dati | Crea un ordine: prodotti per product_id o sku, cliente per id, email o dati |
| GET | /orders/{id}Un ordine con articoli, autista, orario di arrivo previsto e prova di consegna | Un ordine con articoli, autista, orario di arrivo previsto e prova di consegna |
| POST | /orders/{id}/confirmConferma un ordine in attesa (emette la fattura) | Conferma un ordine in attesa (emette la fattura) |
| POST | /orders/{id}/cancelAnnulla un ordine prima della partenza (le scorte vengono ripristinate) | Annulla un ordine prima della partenza (le scorte vengono ripristinate) |
| GET | /webhooksElenca i webhook | Elenca i webhook |
| POST | /webhooksIscrive un URL agli eventi (restituisce il secret di firma una sola volta) | Iscrive un URL agli eventi (restituisce il secret di firma una sola volta) |
| DELETE | /webhooks/{id}Annulla l'iscrizione | Annulla l'iscrizione |
Crea un ordine
Invia external_ref con l'id del tuo ordine: se invii lo stesso ordine due volte, ricevi quello esistente invece di un duplicato. Aggiungi "confirm": true per confermarlo subito.
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 }
]
}'Webhook
BeeRoutes invia con POST un evento JSON al tuo URL quando un ordine viene creato, confermato, assegnato, è in viaggio, consegnato, non riuscito o annullato. Aggiungi i webhook in Integrazioni o tramite l'API.
Eventi
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"
}
}Verifica la firma
Ogni richiesta ha un header BeeRoutes-Signature: t (unix time) e v1, l'HMAC-SHA256 di “t.body” con il secret del tuo webhook. Rispondi con un qualsiasi 2xx entro 10 secondi; le consegne non riuscite vengono ritentate una volta e un webhook viene disattivato dopo 25 errori consecutivi. Rispondi 410 per annullare l'iscrizione.
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));
}Errori
Gli errori usano i codici di stato HTTP e un corpo JSON con un codice e un messaggio:
{ "error": { "code": "product_not_found", "message": "Unknown or inactive products: sku JUI-09" } }401 chiave mancante o non valida · 404 non trovato · 409 non consentito nello stato attuale dell'ordine · 422 campi non validi, SKU sconosciuto o indirizzo non trovato · 429 troppe richieste
Shopify
Nessuna app da installare. In BeeRoutes apri Integrazioni → Shopify, copia il tuo URL webhook privato in Shopify (Impostazioni → Notifiche → Webhook, “Creazione ordine” e “Annullamento ordine”) e incolla in BeeRoutes il secret di firma di Shopify. I prodotti vengono abbinati tramite SKU; i nuovi clienti vengono creati dall'indirizzo di spedizione.
Zapier
Usa “Webhooks by Zapier”: Catch Hook come webhook di BeeRoutes per avviare gli Zap quando cambiano gli ordini, e POST verso l'API con la tua chiave per creare ordini o clienti da qualsiasi app.
Apri Integrazioni →Pianifica oggi i percorsi di domani
Inizia la prova gratuita di 14 giorni e pianifica la tua prima giornata in un pomeriggio.