🔂
Webhooks·Intermédiaire·8 min

Rejouer manuellement une livraison webhook échouée

Apprenez à rejouer ou forcer la réexécution d'une livraison webhook abandonnée via les endpoints POST /replay et POST /retry de l'API Coffrify.

Télécharger en PDF

Lorsqu'une livraison webhook atteint son budget de tentatives sans succès, elle passe au statut abandoned (file morte). L'API Coffrify expose deux actions distinctes pour récupérer ces événements : replay renvoie immédiatement le payload original au même endpoint en créant une nouvelle ligne d'historique, tandis que retry remet la livraison en file d'attente (pending) pour que le worker de retry la reprenne au prochain cycle. Choisissez replay pour un renvoi synchrone et traçable, retry pour déléguer la gestion des tentatives au moteur automatique.

POST/v1/webhooks/deliveries/{id}/replayRenvoie immédiatement la livraison originale à l'URL du webhook et insère une nouvelle ligne dans l'historique.POST/v1/webhooks/deliveries/{id}/retryRemet une livraison échouée ou abandonnée en file d'attente (status=pending, attempt_number=0) pour que le worker automatique la traite.GET/v1/webhooks/deliveries/{id}Récupère le détail complet d'une livraison : payload, signature, tentatives, code de statut HTTP, corps de réponse et messages d'erreur.GET/v1/webhooks/deliveries/abandonedRetourne la file morte des livraisons abandonnées sur une période de 1 à 30 jours, avec recommandations d'actions par endpoint webhook.

Authentification

Les endpoints replay et retry requièrent le scope webhooks:manage. La consultation de détail (GET /deliveries/{id}) et la file morte (GET /deliveries/abandoned) requièrent le scope webhooks:read. Transmettez votre clé dans l'en-tête Authorization : Authorization: Bearer cof_live_… (ou cof_test_… en environnement de test).

Paramètres de la file morte (GET /abandoned)

ParamètreTypeDéfautDescription
daysentier (1-30)7Fenêtre temporelle en jours à partir de maintenant.
limitentier (1-500)100Nombre maximum de livraisons retournées.

Exemples d'appel

# 1. Consulter la file morte des 14 derniers jours
curl -s https://api.coffrify.com/v1/webhooks/deliveries/abandoned?days=14 \
-H "Authorization: Bearer cof_live_VOTRE_CLE"
 
# 2. Inspecter une livraison en détail
curl -s https://api.coffrify.com/v1/webhooks/deliveries/del_01J3XKZP8F7N2Q4V \
-H "Authorization: Bearer cof_live_VOTRE_CLE"
 
# 3. Rejouer immédiatement (replay synchrone)
curl -s -X POST https://api.coffrify.com/v1/webhooks/deliveries/del_01J3XKZP8F7N2Q4V/replay \
-H "Authorization: Bearer cof_live_VOTRE_CLE"
 
# 4. Remettre en file d'attente (retry asynchrone)
curl -s -X POST https://api.coffrify.com/v1/webhooks/deliveries/del_01J3XKZP8F7N2Q4V/retry \
-H "Authorization: Bearer cof_live_VOTRE_CLE"

Réponses

Réponse du POST /replay (renvoi synchrone réussi) :

{
"replayed": true,
"delivery_id": "del_01J3XKZP8F7N2Q4V",
"new_delivery_id": "del_01J3XKZP9G8M3R5W",
"event_id": "evt_01J3XKZ00000000001",
"event_type": "document.signed",
"status": 200,
"duration_ms": 342,
"body_preview": "{\"ok\":true}",
"error": null
}

Réponse du POST /retry (remise en file d'attente) :

{
"id": "del_01J3XKZP8F7N2Q4V",
"status": "pending",
"attempt_number": 0,
"max_attempts": 10,
"next_retry_at": "2026-06-06T14:22:05.831Z",
"queued_for_retry": true
}

Réponse du GET /deliveries/{id} (détail complet) :

{
"id": "del_01J3XKZP8F7N2Q4V",
"webhook_id": "wh_01J3XKZ00000000001",
"event_id": "evt_01J3XKZ00000000001",
"event_type": "document.signed",
"payload": { "document_id": "doc_xyz", "signed_at": "2026-06-06T14:00:00Z" },
"signature": "v1,aGVsbG8...",
"signature_version": "v1",
"attempt_number": 3,
"max_attempts": 10,
"status": "abandoned",
"status_code": 503,
"response_body": "Service Unavailable",
"response_headers": null,
"duration_ms": 10021,
"error_message": null,
"scheduled_at": "2026-06-06T14:00:01Z",
"attempted_at": "2026-06-06T14:10:03Z",
"completed_at": "2026-06-06T14:10:13Z",
"next_retry_at": null,
"created_at": "2026-06-06T14:00:01Z"
}

Erreurs

Code HTTPCode d'erreurQuandRésolution
400validation_errorIdentifiant de livraison absent de l'URL.Vérifiez que l'URL contient bien {id} avant /replay ou /retry.
401missing_api_key / invalid_api_keyClé absente, malformée ou révoquée.Transmettez une clé cof_live_… ou cof_test_… valide dans Authorization: Bearer.
403scope_missingScope webhooks:manage (ou webhooks:read) absent de la clé.Régénérez la clé avec le scope requis dans les paramètres API du workspace.
404not_foundLa livraison {id} n'existe pas dans ce workspace.Vérifiez l'identifiant via GET /v1/webhooks/deliveries/{id}.
409validation_errorSur /replay : le webhook parent est désactivé. Sur /retry : la livraison a déjà réussi (status=success).Réactivez le webhook via PATCH /v1/webhooks/{id} avant un replay. Pour une livraison déjà réussie, utilisez /replay si vous souhaitez renvoyer volontairement.
500internal_errorErreur base de données inattendue.Réessayez dans quelques instants. Si le problème persiste, contactez support@coffrify.com.

Voir aussi

Continuer

Autres tutoriels à suivre