action.requires_approval — an AI Action is waiting for a person to approve it.
action.requires_approval
Fires when the agent wants to run an AI Action that is marked requires approval. Nothing runs until someone approves it in the Inbox, and the visitor is told their request is being checked.
{
"actionId": 91,
"actionName": "issue_refund",
"actionDescription": "Refund an order",
"executionId": 4471,
"conversationId": 8214,
"chatbotId": 17,
"inputArgs": { "order_id": "1042", "amount": 39.0 },
"requestedAt": "2026-08-26T10:12:00.000Z"
}This payload is camelCase, while every other event on this page is snake_case. That is a real inconsistency in the current API version, not a typo in these docs — parse it as written. It will be aligned in a future api_version, and the version field on the envelope is how you will know.
inputArgs is exactly what the model wants to call the action with. It is the useful part: it lets you show an approver the actual arguments — which order, which amount — rather than just the action's name.
What to do with it
The approval itself happens in the Inbox; this event exists so it does not have to be noticed there. Typical use is routing it somewhere a human already is:
- post it to the channel that owns that decision,
- page whoever is on shift when
actionNameis one of the expensive ones, - record every request for audit, approved or not.
Approvals are not delivered
There is deliberately no action.approved or action.denied event. The outcome is written to the action's execution log and, when it succeeds, shows up in the conversation itself.
If you need the outcome, read it from the conversation — the approval decision is an operator action, and echoing it back as a webhook would let an integration mistake its own effect for a customer event.