Référence APILister les livraisons de webhooks abandonnées
GET/v1/webhooks/deliveries/abandoned

Lister les livraisons de webhooks abandonnées

Retourne la dead-letter queue des livraisons de webhooks qui ont épuisé leur budget de réessais, avec des recommandations d'action par endpoint.

2 min de lectureTélécharger en PDF

Réponse exemple

{
"data": [
{
"id": "del_8f1c2a9b0e3d4f5a",
"event_id": "evt_2c4e6a8b0d1f3a5c",
"created_at": "2026-06-04T14:21:08.000Z",
"event_type": "transfer.completed",
"webhook_id": "wh_4a7b9c1d2e3f4a5b",
"duration_ms": 5012,
"status_code": 503,
"completed_at": "2026-06-04T18:42:11.000Z",
"max_attempts": 8,
"error_message": "Endpoint returned 503 after 5000ms timeout",
"attempt_number": 8
},
{
"id": "del_1b2c3d4e5f6a7b8c",
"event_id": "evt_9a8b7c6d5e4f3a2b",
"created_at": "2026-06-03T08:05:44.000Z",
"event_type": "transfer.created",
"webhook_id": "wh_4a7b9c1d2e3f4a5b",
"duration_ms": 30000,
"status_code": null,
"completed_at": "2026-06-03T12:30:02.000Z",
"max_attempts": 8,
"error_message": "Connection timeout",
"attempt_number": 8
}
],
"since": "2026-05-29T09:12:00.000Z",
"object": "list",
"range_days": 7,
"recommendations": [
{
"webhook_id": "wh_4a7b9c1d2e3f4a5b",
"webhook_url": "https://hooks.example.com/coffrify",
"sample_error": "Endpoint returned 503 after 5000ms timeout",
"webhook_name": "Production CRM sync",
"webhook_active": true,
"abandoned_count": 7,
"latest_abandon_at": "2026-06-04T14:21:08.000Z",
"sample_delivery_id": "del_8f1c2a9b0e3d4f5a",
"suggested_next_actions": [
"coffrify_update_webhook id=\"wh_4a7b9c1d2e3f4a5b\" is_active=false (disable to stop the bleeding)",
"coffrify_test_webhook id=\"wh_4a7b9c1d2e3f4a5b\" (confirm endpoint reachable)",
"coffrify_webhook_health_metrics hours=24 (see broader pattern)",
"coffrify_retry_webhook_delivery delivery_id=\"del_8f1c2a9b0e3d4f5a\" (replay the latest)"
]
}
],
"total_abandoned": 3
}
GET/v1/webhooks/deliveries/abandonedListe les livraisons de webhooks abandonnées (dead-letter queue) sur une fenêtre récente, regroupées par endpoint avec des actions recommandées.

Cet endpoint expose la dead-letter queue des webhooks de votre espace de travail : les livraisons dont le statut est abandoned, c'est-à-dire celles qui ont épuisé la totalité de leur budget de réessais sans jamais réussir. Au-delà de la simple liste brute, la réponse regroupe les livraisons par webhook et calcule, pour chaque endpoint en souffrance, un compteur d'abandons et un bloc de `recommendations` suggérant les prochaines actions concrètes (désactiver, tester, rejouer la dernière livraison, consulter les métriques de santé). C'est l'outil de diagnostic à dégainer quand un endpoint cesse de répondre et accumule des échecs définitifs. L'endpoint est strictement limité à votre espace de travail (workspace_id) et trié des endpoints les plus touchés vers les moins touchés.

Authentification

Requiert une clé API valide portant le scope webhooks:read. Conformément à la hiérarchie de scopes, ce scope est aussi satisfait par webhooks:* (wildcard de ressource) ou par le wildcard global *. Une absence de ce scope renvoie une erreur 403 scope_missing. L'endpoint est classé expensive côté quota de débit (rate-limit), car il effectue un scan potentiellement large suivi d'une jointure de métadonnées.

Paramètres de requête

ParamètreTypeRequisDescription
daysinteger (query)NonTaille de la fenêtre d'observation en jours, depuis maintenant. Défaut 7. Borné entre 1 et 30 (valeurs hors plage automatiquement ramenées dans cet intervalle ; valeur invalide → 7).
limitinteger (query)NonNombre maximum de livraisons abandonnées retournées. Défaut 100. Borné entre 1 et 500 (valeur invalide → 100).

Réponse

La réponse est un objet contenant object: "list", la fenêtre interrogée (range_days, since au format ISO 8601), le total total_abandoned, le tableau brut data des livraisons, et le tableau dérivé recommendations.

ChampTypeDescription
range_daysintegerFenêtre effectivement appliquée (après bornage du paramètre days).
sincestring (ISO 8601)Horodatage de début de la fenêtre, calculé comme maintenant moins range_days jours.
total_abandonedintegerNombre de livraisons abandonnées retournées dans data.
objectstringToujours "list".
data[]arrayLivraisons abandonnées brutes, triées par created_at décroissant.
data[].idstringIdentifiant de la livraison (utilisable pour un rejeu).
data[].webhook_idstringIdentifiant du webhook destinataire.
data[].event_id / event_typestringÉvénement à l'origine de la livraison (ex. transfer.completed).
data[].attempt_number / max_attemptsintegerNuméro de la dernière tentative et plafond de tentatives configuré.
data[].status_codeinteger | nullCode HTTP renvoyé par l'endpoint à la dernière tentative (null si aucune réponse, ex. timeout).
data[].duration_msintegerDurée de la dernière tentative en millisecondes.
data[].error_messagestring | nullMessage d'erreur de la dernière tentative.
data[].created_at / completed_atstring (ISO 8601)Création de la livraison et horodatage de l'abandon définitif.
recommendations[]arrayUn objet par webhook en souffrance, trié par abandoned_count décroissant.
recommendations[].webhook_name / webhook_url / webhook_activestring | null | booleanMétadonnées hydratées du webhook ((deleted) / null / false si le webhook n'existe plus).
recommendations[].abandoned_countintegerNombre de livraisons abandonnées pour ce webhook dans la fenêtre.
recommendations[].latest_abandon_atstring (ISO 8601)Abandon le plus récent pour ce webhook.
recommendations[].sample_delivery_id / sample_errorstring | nullIdentifiant et message de la livraison abandonnée la plus récente, à des fins de diagnostic.
recommendations[].suggested_next_actionsstring[]Actions recommandées (désactivation si ≥ 5 abandons, test de l'endpoint, métriques de santé, rejeu de la dernière livraison).

Erreurs

CodeQuandRésolution
401 missing_api_keyAucun en-tête Authorization fourni (et pas de session valide).Ajoutez Authorization: Bearer cof_live_....
401 invalid_api_keyClé au préfixe non reconnu, introuvable ou invalide.Vérifiez la clé ; régénérez-en une sur app.coffrify.com/developer.
401 revoked_api_keyClé révoquée ou inactive.Utilisez une clé active.
401 expired_api_keyClé expirée.Générez une nouvelle clé.
403 scope_missingLa clé ne porte pas le scope webhooks:read (ni un scope plus large l'incluant).Régénérez une clé avec le scope webhooks:read ou webhooks:*.
403 ip_not_allowedAdresse IP appelante hors de l'allow-list de la clé.Appelez depuis une IP autorisée ou ajustez la liste.
429 rate_limitedQuota de débit de l'espace de travail dépassé (endpoint classé expensive), ou max-uses de la clé atteint.Respectez l'en-tête Retry-After puis réessayez.
500 internal_errorErreur serveur (ex. variables d'environnement Supabase manquantes). Une erreur sur la requête de livraisons retourne en revanche 200 avec data: [] et un champ note.Réessayez ; si persistant, contactez le support avec le request_id.

Voir aussi