API
API d'intégration Delivio
Créez des commandes depuis votre propre système, lisez leur statut, annulez-les.
Authentification
Créez la clé sur la page du client dans le panneau. Une clé appartient à un seul client ; le client concerné par la commande vient de la clé, pas du corps de la requête.
Authorization: Bearer dlv_live_xxxxxxxxxxxx_…
Créer une commande
L'adresse et le montant suffisent. Envoyer les coordonnées rend l'affectation du coursier et l'estimation d'arrivée plus précises.
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
}'
Les montants sont des ENTIERS dans l'unité la plus petite (24000 = 240,00). Les nombres à virgule sont refusés.
Envoyez un Idempotency-Key : rejouer la même requête après une coupure ne créera pas une seconde commande.
{
"data": { "id": 1042, "code": "S-1042", "status": 15, "…": "…" },
"tracking_url": "https://delivio.talivio.com/t/…"
}
Lire le statut et annuler
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'
Une fois qu'un coursier a pris la commande, l'annulation par API se ferme (409) : une requête de caisse ne peut pas faire demi-tour à un coursier déjà en route — annulez depuis le panneau.
Erreurs
| HTTP | code | Signification |
|---|---|---|
| 401 | invalid_key | La clé est invalide ou révoquée. |
| 402 | api_not_in_plan | L'accès API n'est pas dans la formule. |
| 404 | — | La commande n'appartient pas au client de cette clé. |
| 409 | already_assigned | Un coursier l'a prise ; annulez depuis le panneau. |
| 422 | — | La validation des champs a échoué, ou l'état de la commande ne le permet pas. |
| 429 | — | Limite de débit : 120 requêtes par minute. |
Webhooks
Définissez votre point de terminaison sur la page du client dans le panneau. Nous envoyons un POST quand une commande est acceptée, récupérée, livrée et annulée.
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, "…": "…" }
}
Chaque requête porte `X-Delivio-Signature: t=<unix>,v1=<hmac>`. Pour vérifier, calculez `hmac_sha256(votre_secret, "<t>." + corps_brut)` et comparez avec `v1` ; rejetez si `t` a plus de 5 minutes (rejeu).
// 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 votre point de terminaison ne répond pas 2xx, nous réessayons après 10 s, 1 min, 5 min et 30 min. Après 20 échecs consécutifs, le point de terminaison est désactivé et le panneau en indique la raison.