Skip to content

Human approval

Human approval for AI actions: your team decides, then the agent acts

Mark an API action or a procedure step as Requires team approval and the agent no longer runs it on its own. The request waits on the Approvals page with its exact inputs until someone from your team approves or rejects it, and the visitor is told the outcome in the chat.

Example: a refund that waits for the team

Visitor: My order 48213 arrived with a broken lid. I’d like a refund for that item, please.

Agent: Sorry about that. I’ve passed a refund request for the item in order 48213 to our team for review. You’ll see the outcome right here in the chat. Is there anything else I can help with meanwhile?

Visitor: Yes, do you ship to Austria?

Agent: We do. Orders to Austria usually arrive within 3 to 5 business days.

Agent: Good news: our team approved your request, and it has been carried out.

Some actions should not run on the AI’s word alone

An AI agent that can call your API is useful because it can do things: issue a refund, cancel a subscription, add a credit, extend a trial. Those are also the things you want a person to check, at least at first or above a certain amount. Without a review step you have two bad choices: give the agent the action and hope it never gets it wrong, or keep the action away from it and have your team do every request by hand. Human approval puts a person between the agent’s decision and your API. The agent collects the details in the conversation, your team approves or rejects in one click, and only an approved request reaches your systems.

Why put a person in the loop for AI actions

The agent does the conversation; your team keeps the final say on what changes.

  • Nothing runs on the agent’s word alone

    When the agent calls an action that requires approval, nothing is sent to your API. The call is stored with its inputs and waits for your team. Rejected and expired requests never run.

  • Exactly what you approved, exactly once

    Approving runs the action with exactly the inputs shown on the page. The AI is not asked again, so it can’t change the amount or the order number after you decided, and one request can never run twice.

  • The visitor is kept informed

    The agent tells the visitor their request was passed to your team and keeps helping with anything else. When you decide, the outcome is posted in the chat in their language: English, German, French, Italian or Spanish.

  • Your team hears about it

    Everyone who can decide gets an email with the inputs and a link. You can also get a Slack alert, an action_approval.requested webhook, and the conversation lands in the Inbox as Open.

  • Fits into your procedures

    A procedure step that calls an action can wait for approval too. Once approved, the procedure carries on from the next step; a rejection or an expiry stops it.

How to set up team approval

  1. Build the API action

    Create the action on the Actions tab, for example a refund call to your shop or billing system, with its inputs and authentication. Only server-side actions can require approval; client-side actions and buttons can’t.

  2. Switch on Requires team approval

    In 3. When the AI should use it, switch on Requires team approval and choose when a waiting request expires: after 1 hour, 4 hours, 24 hours (the default) or 3 days. The action then shows a Needs approval badge in the list.

  3. Add it to a procedure, if you like

    In a Call an action step, tick Requires team approval for that step. Combine it with Ask the visitor to confirm first: the visitor confirms, and only then does the request go to your team.

  4. Approve or reject on the Approvals page

    Waiting requests appear on the Approvals page in the sidebar, with a badge counting them. Each shows the action, agent, inputs, expiry and a link to the conversation. Approve runs it; Reject takes an optional reason the visitor sees.

Team approval details

  • Expiry you choose

    Each action or step sets its own expiry: 1 hour, 4 hours, 24 hours or 3 days. A request nobody decides in time never runs, and the visitor is told the team couldn’t review it in time.

  • No duplicate requests

    A conversation can have up to 3 requests waiting at once. If the agent calls the same action with the same inputs again while one waits, no second request is made.

  • One decision wins

    If two teammates click at the same moment, whoever clicks first decides and the other sees “Already decided”. The action never runs twice for one request.

  • Reject with a reason

    Reject asks for an optional reason of up to 500 characters. The visitor sees it in their chat after the message that the team couldn’t approve the request.

  • Credentials stay hidden

    Inputs whose name or value looks like a credential, such as api_key, password or a bearer token, are shown as Hidden on the page, in emails, Slack and webhooks. Your action’s headers and authentication are never stored with a request.

  • Who can decide

    The owner, admins and editors, and anyone else whose role can edit the agent’s actions. Members limited to selected agents only see those agents’ requests, and viewers can’t open the page.

  • Recent decisions and audit log

    Recent decisions lists the latest 50, with who decided, when, the reason and the result. Each approval and rejection is also recorded in the audit log.

  • Runs as the agent would have

    An approved action runs from the saved action, within its 30-second timeout, with the verified visitor and contact of the conversation for user and contact placeholders. If the action was deleted or switched off meanwhile, approving fails and the visitor is told.

Frequently asked questions

What is human approval for AI actions?

It is a review step between the AI agent’s decision and your systems. When the agent wants to run an action marked Requires team approval, such as a refund, the call is stored with its inputs instead of being sent. Someone from your team approves or rejects it, and only an approved request is carried out. This is often called a human-in-the-loop workflow.

Which plan do I need?

Team approval for actions is part of the Pro and Enterprise plans. On Free and Starter the switch can’t be turned on. After a downgrade, actions that have it keep it but the agent doesn’t run them from the chat, and requests made before the downgrade can still be decided.

Which actions can require approval?

Any server-side API action, and any Call an action step in a procedure. An action marked Requires team approval waits for approval in every procedure step that calls it, with the action’s own expiry. Client-side actions that run in the visitor’s browser, and buttons, can’t require approval.

What does the visitor see while a request waits?

The agent tells them, in their language, that the request was passed to your team and that the outcome will appear in the chat. They can keep asking about anything else. An open chat shows the outcome within about 15 seconds of your decision; otherwise they see it the next time they open the chat.

Can the AI change the details after I approve?

No. Approving runs the saved action once with exactly the inputs shown on the Approvals page. The AI is not asked again, and intoCHAT builds the request from the saved action at that moment, so the endpoint and authentication are your current ones.

How is my team notified?

By email to everyone who can decide on that agent, which each person can turn off under Notifications (Approval requests); up to 30 request emails per agent go out each hour. You can also tick the Approval request Slack alert, and webhooks send action_approval.requested and action_approval.decided events.

What happens in a procedure while a step waits?

The step stays the current step and the agent keeps helping with other questions. If the request is approved and succeeds, the procedure continues from the next step at the visitor’s next message. If it is rejected, expires or the action fails, the procedure stops. If the procedure ends first, the request is withdrawn and never runs.

Does approval work in the Playground and in tests?

In the Playground, requests are real: they appear on the Approvals page, notify your team, and approving runs your real action. In tests with simulated customers nothing is requested; the agent just hears that the request was made. In a temporary chat, an action that requires approval doesn’t run at all.

Let the agent ask, and your team decide

Create your agent free, add your first API action, then switch on Requires team approval on Pro and try a request in the Playground.

Create your agent free

Free plan, no credit card needed.