Skip to main content
Add 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 2xx within 10 seconds and do the work afterwards. A delivery is re-sent with the same webhook-id until a 2xx, for up to 24 hours.
  • A body over 2.5 MiB (or one your server answers 413) is sent thin: truncated: true and no output. Read the run with GET /v1/runs/{id}.
  • The webhook is sent right after the run is charged, so it usually carries the final charge (sequence 4). When the provider’s bill comes later it carries cost.state: held (sequence 3), and the final charge is on GET /v1/runs/{id}.
  • Ignore a delivery whose sequence is lower than one you already applied.