Webhooks

Preview. Webhooks are in design — not yet live.

A run can take hours, so push beats polling. Register an endpoint and Delicious calls it as the run moves.

POST /v1/webhooks
Authorization: Bearer dk_live_…

{
  "url": "https://your-server.com/delicious-hook",
  "events": ["run.gate_pending", "run.accepted", "run.failed"]
}

Manage with GET /v1/webhooks/{id} and DELETE /v1/webhooks/{id}.

Events

  • run.created
  • run.stage_changed{ stage, percent }
  • run.gate_pending{ gate } — the actionable one; surface it to the human or agent.
  • run.gate_resolved{ gate, decision }
  • run.scored{ deliciousness: { beauty, harmony, deliciousness, total }, passed }
  • run.accepted{ app_id, app_store_url } (App Review passed)
  • run.rejected{ reason }
  • run.failed{ stage, error }

Delivery

  • Every payload is HMAC-signed (X-Delicious-Signature) with a replay-safe timestamp — verify it before trusting the body.
  • At-least-once delivery with exponential backoff, plus a redelivery endpoint.
  • The console subscribes to the same stream for its live run view.

For interactive use, the REST API also offers an SSE stream at GET /v1/runs/{id}/events.