Desarrolladores

Conecta BeeRoutes con todo lo que usas

Una API REST sencilla con acceso de lectura y escritura, webhooks firmados para cada actualización de entrega y conexiones listas para usar con Shopify y Zapier.

API REST

Crea pedidos y clientes, consulta productos, stock y estado de las entregas: JSON sobre HTTPS.

Webhooks

Recibe un POST firmado en cuanto un pedido se confirma, sale en camino, se entrega o falla.

Shopify

Los nuevos pedidos de Shopify se convierten en entregas automáticamente; las cancelaciones también se sincronizan.

Zapier

Conecta BeeRoutes con Google Sheets, Slack, tu contabilidad y más de 7000 apps, sin código.

Autenticación

Crea una clave de API en BeeRoutes, en Integraciones → Claves de API (solo cuentas de oficina). Envíala en la cabecera Authorization de cada solicitud. Las claves pertenecen a tu empresa: solo ven tus propios datos.

curl https://app.beeroutes.com/api/v1/orders?status=delivered \
  -H "Authorization: Bearer br_live_…"

Límite: 300 solicitudes por minuto por clave. Las listas devuelven hasta 200 elementos (limit, offset).

Endpoints

https://app.beeroutes.com/api/v1

MétodoRuta
GET/me

Comprueba la clave: devuelve tu empresa

GET/products

Lista productos (filtros: sku, q, active)

GET/products/{id}

Un producto con precio, IVA y stock

GET/customers

Lista clientes (filtros: email, q, active)

POST/customers

Crea un cliente; sin lat/lng, la dirección se localiza en el mapa

GET/customers/{id}

Un cliente

PATCH/customers/{id}

Modifica un cliente (solo los campos que envíes)

GET/orders

Lista pedidos (filtros: status, date, from, to, customer_id, external_ref)

POST/orders

Crea un pedido: productos por product_id o sku, cliente por id, email o datos

GET/orders/{id}

Un pedido con artículos, conductor, hora estimada y prueba de entrega

POST/orders/{id}/confirm

Confirma un pedido pendiente (emite la factura)

POST/orders/{id}/cancel

Cancela un pedido antes de que salga (el stock se repone)

GET/webhooks

Lista webhooks

POST/webhooks

Suscribe una URL a eventos (devuelve el secreto de firma una sola vez)

DELETE/webhooks/{id}

Cancela la suscripción

Crear un pedido

Envía external_ref con tu propio id de pedido: si envías el mismo pedido dos veces, se devuelve el existente en lugar de un duplicado. Añade "confirm": true para confirmarlo directamente.

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 envía por POST un evento JSON a tu URL cuando un pedido se crea, se confirma, se asigna, sale en camino, se entrega, falla o se cancela. Añade webhooks en Integraciones o mediante la API.

Eventos

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"
  }
}

Verificar la firma

Cada solicitud lleva una cabecera BeeRoutes-Signature: t (tiempo unix) y v1, el HMAC-SHA256 de «t.body» con el secreto de tu webhook. Responde con cualquier 2xx en menos de 10 segundos; las entregas fallidas se reintentan una vez y un webhook se desactiva tras 25 fallos seguidos. Responde 410 para cancelar la suscripción.

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));
}

Errores

Los errores usan códigos de estado HTTP y un cuerpo JSON con un código y un mensaje:

{ "error": { "code": "product_not_found", "message": "Unknown or inactive products: sku JUI-09" } }

401 clave ausente o no válida · 404 no encontrado · 409 no permitido en el estado del pedido · 422 campos no válidos, SKU desconocido o dirección no encontrada · 429 demasiadas solicitudes

Shopify

No hay que instalar ninguna app. En BeeRoutes abre Integraciones → Shopify, copia tu URL privada de webhook en Shopify (Configuración → Notificaciones → Webhooks, «Creación de pedido» y «Cancelación de pedido») y pega de vuelta el secreto de firma de Shopify. Los productos se emparejan por SKU; los clientes nuevos se crean a partir de la dirección de envío.

Zapier

Usa «Webhooks by Zapier»: Catch Hook como webhook de BeeRoutes para iniciar Zaps cuando cambian los pedidos, y POST a la API con tu clave para crear pedidos o clientes desde cualquier app.

Abrir Integraciones →

Planifica hoy las rutas de mañana

Empieza tu prueba gratuita de 14 días y planifica tu primer día en una tarde.