One stage of an inspection settled
Emitted eight times per inspection, once per stage, so a UI can show progress instead of a
spinner. data.job is the inspection job in its current state — status is still
processing for every stage but the last, and result only materialises once the whole
pipeline has settled. data.stage is the stage that just finished.
A failed stage that aborts the pipeline is followed by a job.failed event.
Headers
t=<epoch>,v1=<hex hmac-sha256 of "<t>.<raw body>">, keyed with the endpoint secret. Compare in constant time and reject a timestamp older than five minutes.
Event identifier, stable across retries — the key to deduplicate on.
^evt_[1-9A-HJ-NP-Za-km-z]{8,32}$1 for the first delivery, incremented on every retry.
x >= 1Body
The envelope of every outgoing webhook. api_version pins the payload shape — it changes only when you upgrade your organisation's API version, never silently.
Stable across retries. Deduplicate on it.
^evt_[1-9A-HJ-NP-Za-km-z]{8,32}$"evt_6HbN4rTfKp2W"
An event your endpoint can subscribe to.
job.succeeded, job.failed, inspection.stage_completed "inspection.stage_completed"Contract version the payload was serialised with.
"2026-08-01"
Epoch seconds, UTC.
1755300000
Response
Acknowledged. Any 2xx stops the retry schedule.