Use a human approval pattern when a workflow can prepare a decision but should not complete the side effect without review.

Pattern

text
trigger -> prepare context -> notify reviewer -> wait/resume -> approved branch or rejected branch
Human approval path
taskpauseexternal decisionbranch Prepare context Risk, amount, recipient, proposed action Notify reviewer Slack, email, ticket, internal app Wait node Run pauses with resumable node ID Resume API Reviewer payload chooses branch Approved or rejected Continue side effect or exit safely

Resume API

When a run is waiting on a node, resume it with:

bash
curl -X POST "https://api.b3os.org/v1/runs/$RUN_ID/nodes/$NODE_ID/resume" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "payload": { "approved": true, "reviewer": "ops@example.com", "reason": "Within policy" } }'

Approval Payload

Keep approval payloads small and auditable.

FieldPurpose
approvedBoolean branch selector.
reviewerHuman or system that made the decision.
reasonShort explanation for audit history.
expiresAtOptional deadline used by your external approval UI.

Subscribe to node waiting events, create an approval task in your system, and call the resume endpoint after the reviewer acts.

Execution hooks

Learn signed event delivery and retry behavior.

Learn More
Resume endpoint

Exact request and response reference for resuming a waiting node.

Learn More
Ask a question... ⌘I