Sign in to run requests with your own sandbox key. Sign in

execution.completed

An execution reached `completed`

Sent once when an execution's status transitions to completed. Emitted for API-triggered runs only (executions started from the Cascades UI have no api_client and produce no webhooks). Poll GET /executions/{workflow_execution_id} for the decision and step_outputs.

Payload

  • id string (uuid) required
  • event string required One of execution.completed
  • created_at string (date-time) required
  • data object required
    • workflow_execution_id integer required
    • workflow_id integer required
    • batch_execution_id integer Present only for batch rows.
    • external_reference string Present when the run was triggered with one.
    • execution_mode string One of test live
    • status string required One of completed
    • review_status string required One of none in_review approved denied
    • completed_at string (date-time)

How to handle it

  1. Answer 2xx as soon as the delivery is stored and do the real work on a queue. Any other response, a connection error or a timeout (5 s connect, 10 s read) counts as a failure: Cascades retries after 1m, 5m, 30m, 2h, 8h, 24h, then marks the delivery dead.
  2. De-duplicate on the envelope's id — it is identical across retries and across every subscriber's copy of the same event — or on the X-Cascades-Delivery header, which names one delivery row.
  3. Verify X-Cascades-Signature before you act on the body (next section).
  4. Treat data as a pointer, not the record: read data.workflow_execution_id and call GET /executions/{id} for the current status, the decision and — with executions:read:full — the step_outputs.
  5. data.execution_mode says whether the run was test or live. Test-mode runs deliver this event too, so guard production side effects on it.

Verify before you trust it

Compute HMAC-SHA256(signing_secret, "<t>.<raw body>") and compare it in constant time with the v1 (or, during rotation, v0) value in X-Cascades-Signature. Samples are in the right-hand rail and in the verify webhooks guide.

Deliveries retry on any non-2xx response, so handle the same X-Cascades-Delivery id more than once safely. See all webhook events.

Was this page helpful?