Approvals
Approval flows gate automated processes on explicit human sign-off. Insert an approval step anywhere in a workflow to pause execution until one or more designated approvers make a decision.
How approval steps work
When a workflow reaches a require_approval step:
- Workflow execution pauses and the run enters
awaiting_approvalstate - Each listed approver receives a notification with context and action links
- An approver clicks Approve or Reject — no login required for simple approvals
- The workflow resumes (on approval) or is marked failed (on rejection)
Approval step definition
{
"type": "require_approval",
"approvers": ["[email protected]", "[email protected]"],
"quorum": "any",
"timeout_hours": 48,
"on_timeout": "reject",
"notification": {
"channel": "email",
"subject": "Approval required: {{workflow.name}}",
"body": "Please review and approve the following request."
}
}
Quorum options
| Quorum | Behavior |
|---|---|
any | First approver to respond determines the outcome |
all | Every listed approver must approve before proceeding |
majority | More than half must approve |
Common use cases
- Expense approvals — manager sign-off before reimbursement is processed
- Contract reviews — legal and finance must both approve before countersigning
- Access requests — security team approves elevated permissions before granting
- Deployments — tech lead approves before production deployment proceeds
- Refunds — finance approves large refunds above a threshold
API-driven approvals
Approvers can also respond programmatically via the API — useful for integrating approvals into existing tools like Slack bots or internal portals:
curl -X POST https://api.ventryx.io/v1/approvals/apr_01HXYZ/respond \
-H "Authorization: Bearer $VENTRYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "decision": "approved", "note": "Looks good, proceeding." }'