API
API de integración de Delivio
Crea pedidos desde tu propio sistema, consulta su estado y cancélalos.
Autenticación
Crea la clave en la página del cliente dentro del panel. Cada clave pertenece a un solo cliente; a qué cliente corresponde el pedido lo determina la clave, no el cuerpo de la petición.
Authorization: Bearer dlv_live_xxxxxxxxxxxx_…
Crear un pedido
Con la dirección y el importe basta. Enviar las coordenadas hace más precisos la asignación del repartidor y el tiempo estimado.
curl -X POST https://delivio.talivio.com/api/v1/integration/orders \
-H "Authorization: Bearer $DELIVIO_KEY" \
-H "Idempotency-Key: siparis-1042" \
-H "Content-Type: application/json" \
-d '{
"address": "Moda Cad. 12/3",
"customer_name": "Ada",
"customer_phone": "+90 555 000 00 00",
"total": 24000,
"is_prepaid": true
}'
Los importes son ENTEROS en la unidad menor (24000 = 240,00). Los decimales se rechazan.
Envía una Idempotency-Key: repetir la misma petición tras un corte de conexión no creará un segundo pedido.
{
"data": { "id": 1042, "code": "S-1042", "status": 15, "…": "…" },
"tracking_url": "https://delivio.talivio.com/t/…"
}
Consultar el estado y cancelar
curl https://delivio.talivio.com/api/v1/integration/orders/1042 -H "Authorization: Bearer $DELIVIO_KEY" curl -X POST https://delivio.talivio.com/api/v1/integration/orders/1042/cancel \ -H "Authorization: Bearer $DELIVIO_KEY" \ -d 'reason=Müşteri vazgeçti'
En cuanto un repartidor coge el pedido, la cancelación por API se cierra (409): una petición del TPV no puede hacer volver a un repartidor que ya va de camino; cancela desde el panel.
Errores
| HTTP | code | Significado |
|---|---|---|
| 401 | invalid_key | La clave no es válida o está revocada. |
| 402 | api_not_in_plan | El acceso a la API no está en el plan. |
| 404 | — | El pedido no pertenece al cliente de esta clave. |
| 409 | already_assigned | Un repartidor lo ha cogido; cancela desde el panel. |
| 422 | — | La validación de los campos ha fallado o el estado del pedido no lo permite. |
| 429 | — | Límite de peticiones: 120 por minuto. |
Webhooks
Configura tu endpoint en la página del cliente dentro del panel. Enviamos un POST cuando un pedido se acepta, se recoge, se entrega y se cancela.
POST /sizin-ucunuz
X-Delivio-Event: order.delivered
X-Delivio-Signature: t=1755680000,v1=9f2c…
{
"event": "order.delivered",
"sent_at": "2026-08-20T12:00:00+00:00",
"order": { "id": 1042, "code": "S-1042", "status": 20, "…": "…" }
}
Cada petición lleva `X-Delivio-Signature: t=<unix>,v1=<hmac>`. Para verificarla, calcula `hmac_sha256(tu_secreto, "<t>." + cuerpo_bruto)` y compáralo con `v1`; recházala si `t` tiene más de 5 minutos (repetición).
// PHP
[$t, $v1] = sscanf($_SERVER['HTTP_X_DELIVIO_SIGNATURE'], 't=%d,v1=%s');
$expected = hash_hmac('sha256', $t.'.'.file_get_contents('php://input'), $secret);
if (! hash_equals($expected, $v1) || abs(time() - $t) > 300) {
http_response_code(400);
exit;
}
Si tu endpoint no responde 2xx, reintentamos a los 10 s, 1 min, 5 min y 30 min. Tras 20 fallos seguidos el endpoint se desactiva y el panel indica el motivo.