Webhooks

Recevez des notifications en temps réel quand des événements surviennent sur vos documents.

Événements

ÉvénementDescription
document.completedLe PDF est généré et prêt au téléchargement.
document.failedLa génération du document a échoué.
document.verifiedUn 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/json
X-Signature: sha256=a1b2c3d4e5f6...
X-Event: document.completed
X-Delivery-Id: uuid

Vé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 :

TentativeDélai
1èreImmédiat
2ème30 secondes
3ème5 minutes
4ème30 minutes
5ème (dernière)2 heures
Retournez un 200 rapidement et traitez le webhook de manière asynchrone pour éviter les timeouts.