Skip to content

Human Approvals

A human approval is a durable wait, not a busy worker. The instance persists its state, releases compute, and resumes only after an authorized signal supplies one of the declared choices.

1. Define the review step

JSON
{
  "id": "review",
  "type": "step",
  "handler": "human_review",
  "wait_for_input": {
    "prompt": "Approve this release?",
    "choices": [
      { "label": "Approve", "value": "approve" },
      { "label": "Reject", "value": "reject" }
    ],
    "store_as": "review_decision"
  }
}

2. Observe the waiting state

Read the instance and confirm the current step is review and the state is waiting. Show the prompt, choices, sequence name, requester, and creation time to the reviewer.

3. Resume with a signal

Bash
curl -X POST "$ORCH8_URL/api/v1/instances/$INSTANCE_ID/signals"   -H "x-api-key: $ORCH8_API_KEY"   -H "content-type: application/json"   -d '{"name":"human_input:review","payload":{"value":"approve"}}'

Authorization and audit

Authorize the reviewer before sending the signal, record who decided and when, reject undeclared values, and make duplicate submissions idempotent. A rejected choice should follow an explicit workflow branch rather than silently canceling the instance.

Was this helpful?