webhook.url (a public https URL) to POST /v1/runs. When the run ends, Spiral posts one event with the full
run object.
Events
New event types are added over time: ignore the ones you do not handle.
Headers
Deliveries follow Standard Webhooks:Verify the signature
Find your organization’s signing secret in the console under API keys, and verify every delivery over the raw body:Delivery
- Answer
2xxwithin 10 seconds and do the work afterwards. A delivery is re-sent with the samewebhook-iduntil a2xx, for up to 24 hours. - A body over 2.5 MiB (or one your server answers
413) is sent thin:truncated: trueand nooutput. Read the run withGET /v1/runs/{id}. - The webhook is sent right after the run is charged, so it usually carries the final charge (
sequence4). When the provider’s bill comes later it carriescost.state: held(sequence3), and the final charge is onGET /v1/runs/{id}. - Ignore a delivery whose
sequenceis lower than one you already applied.