webhooks
An async job completed.
postWebhookjob.completed
Headers
Postscript-Webhook-Signaturestring required
Example:t=1753290721,v1=8a2f45c0dd6e01b39c1f0a7e5d4b3a2918f7c6d5e4a3b2c1d0e9f8a7b6c5d4e3
t=<unix seconds>,v1=<hex>, where v1 is the HMAC-SHA256 of t, a period, and the raw request body, keyed with the full subscription secret including its whsec_ prefix. For up to 24 hours (the default) after a secret rotation the header carries one v1 per active secret; accept the delivery if any matches. Reject a t more than 5 minutes from your clock, and ignore keys you do not recognize.
Payload
Example payload
{
"data": {
"completed_at": "2026-07-23T17:32:01.123456Z",
"created_at": "2026-07-23T17:32:01.123456Z",
"updated_at": "2026-07-23T17:32:01.123456Z"
},
"event_type": "webhook.throttled",
"occurred_at": "2026-07-23T17:32:01.123456Z"
}Response
Return any 2xx within 10 seconds to acknowledge the delivery. Network errors, timeouts, and 408, 409, 425, 429 and 5xx responses are retried for up to 72 hours; any other response fails the delivery without a retry.
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.