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?