How it works
End-to-end flow: your automation creates an approval, teammates are notified (for example via push on mobile), someone responds in the web dashboard or mobile app, and your automation receives the outcome—either by callback or by polling. The sequence diagram below shows the mobile path; responding in the browser uses the same API behind the scenes.Sequence
Steps in plain language
- Create — Your automation sends
POST /v1/approvalswith question, context, and options.timeoutis optional on REST: omitted values are filled from the agent’s dashboard defaults; you can override part or all of timeout per request if needed. MCP exposesrequest_human_approvalandcreate_approvalfor the same create (notimeoutin tool args—only those defaults apply).request_idis optional (the API can assign a UUID); include your own when you need a stable id for idempotent retries. See the Agent API for the exact JSON. - Notify — Subscribers may get a push on mobile; if no subscribers are configured for the agent, the service may fall back to all workspace members (see Agent settings). Anyone with access can also open the web dashboard or mobile app and see pending work.
- Respond — One person resolves the approval by choosing an option or entering custom text (in the browser or on a device).
- Deliver — If you provided a callback URL, the service POSTs the final result there. Otherwise your automation polls
GET /v1/approvals/:requestId/resultuntil the result is no longer pending. - Expire — If time runs out, the request expires according to the timeout mode you set.
Resolved result (polling)
When the result is ready, the polling endpoint returns JSON including fields such as:request_id,agent_id,correlation_id(if set)statusselected_option_index,selected_option_labelwhen an option was chosencustom_instructionwhen usedresolved_by,resolved_at