POST with the full job results the moment an asynchronous job finishes — no polling. The delivery is self-contained: everything the bulk status endpoint would return is in the payload.
Events
Job events
Scoped to your account — you only receive deliveries for jobs you started.Status page events
Broadcast events from status.generect.com — subscribe to pipe Generect incidents into your own alerting instead of polling the status page.
Incident deliveries carry
data.incident (slug, title, status, severity, body, affected components, started_at / resolved_at, full updates history) and data.update with the update that triggered the event. Maintenance deliveries carry data.maintenance (slug, title, body, status, scheduled_start / scheduled_end, affected components). meta.status_page_url points back to the public page.
Status page events are not tied to your account activity: every active webhook subscribed to them receives every incident, so a single webhook is enough per organization.
Delivery format
Each delivery is an HTTPPOST to your URL with a JSON body:
data / meta envelope as every other endpoint, plus the webhook’s own event and timestamp on top. data is the results array — exactly what the matching bulk status endpoint (email / phone) returns under its data key, so you never have to poll. meta is the job summary: job_id, status, counts (total / processed / found / not_found), amount_charged in USD, and error when status is error. The bulk status endpoint stays available to re-fetch by job_id — results are retained for 24 hours.
data is present on both success and failure deliveries. When status is error it is an empty array and meta.error describes what went wrong.Verifying signatures
Every webhook is signed with your webhook’ssecret. If you don’t provide one at registration, a cryptographically strong secret is generated for you — it is returned by the create and get endpoints.
The signature is base64(HMAC_SHA256(secret, raw_body)). Always compute it over the raw request bytes, before any JSON parsing, and compare in constant time:
Retries and timeouts
Testing
Send a test delivery to any registered webhook withPOST /webhooks/{id}/test/ — it fires a webhook.test event through the same delivery pipeline, signature included.