Webhooks
Recevez des notifications en temps réel quand des événements surviennent sur vos documents.
Événements
| Événement | Description |
|---|---|
document.completed | Le PDF est généré et prêt au téléchargement. |
document.failed | La génération du document a échoué. |
document.verified | Un document a été vérifié via son QR code. |
Payload
Chaque webhook envoie un POST avec le payload suivant :
JSON
{ "event": "document.completed", "timestamp": "2026-04-27T10:30:01.000Z", "data": { "id": "f7e8d9c0-...", "doc_number": "FNE-2026-001847", "type": "invoice", "status": "completed", "pdf_url": "https://cdn.restifydocs.com/docs/f7e8d9c0.pdf", "verify_url": "https://verify.restifydocs.com/v/abc123" }}Les headers incluent :
Bash
Content-Type: application/jsonX-Signature: sha256=a1b2c3d4e5f6...X-Event: document.completedX-Delivery-Id: uuidVérification de signature
Vérifiez l'authenticité du webhook en comparant le header X-Signature avec un HMAC-SHA256 du body :
JavaScript
import crypto from "crypto";
function verifySignature(body, signature, secret) { const expected = "sha256=" + crypto .createHmac("sha256", secret) .update(body) .digest("hex");
return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expected) );}Politique de réessai
Si votre endpoint retourne un code HTTP >= 400 ou ne répond pas dans les 10 secondes, RestifyDocs réessaie avec un backoff exponentiel :
| Tentative | Délai |
|---|---|
| 1ère | Immédiat |
| 2ème | 30 secondes |
| 3ème | 5 minutes |
| 4ème | 30 minutes |
| 5ème (dernière) | 2 heures |
Retournez un
200 rapidement et traitez le webhook de manière asynchrone pour éviter les timeouts.