Skip to content

Approve a pending action

POST
/api/conversations/{id}/approve

Approve a guardrail-gated tool call that is waiting for human approval. This resumes the AI pipeline and executes the tool call with the original arguments.

id
required
string format: uuid

The unique identifier of the conversation with the pending action.

object
approvalRequestId
required

The approval request the paused tool call is waiting on.

string format: uuid
Example
0a1b2c3d-4e5f-4a6b-8c7d-8e9f0a1b2c3d
approved
required

true runs the tool call with its original arguments; false declines it.

boolean
Example
true
reviewerNote

A note from the reviewer, kept with the decision.

string
>= 1 characters <= 1000 characters

The pending action was approved and the AI pipeline will resume.

Simple success acknowledgment returned by action endpoints (reply, resolve, take-over, etc.).

object
ok
required

Always true on success.

boolean
Example
true

No conversation exists with the given ID or no pending action was found. An API key restricted to a brand or workspace receives the same answer for a conversation in a workspace outside its restriction, and decides only an approval request that an open approval item of the conversation names (Approval request not found).

Standard error response returned by all endpoints on failure.

object
error
required

A human-readable error message describing what went wrong.

string
Example
Conversation not found
code

A machine-readable reason on some refusals, for example ‘key_lock’ when an API key’s brand or workspace restriction does not cover the action.

string
Example
key_lock
missing_scopes

On a 403 for an API key without a scope the endpoint requires: the scopes the key lacks.

Array<string>
Example
[
"mcp:write"
]
entryId

On a 409 with code duplicate_question or duplicate_rule_text: the knowledge base entry or policy that already holds the question or rule text.

string format: uuid
Example
11223344-5566-4788-99aa-bbccddeeff00
connectionId

On a 422 about one MCP connection a request names, from an assignment or an agent create or update (a connection that does not exist, one listed twice, or one that does not declare a tool named): the connection, as the request named it.

string
undeclaredTools

On the same 422: the tool names the connection does not declare.

Array<string>
Example
[
"get_orders"
]
declaredTools

On the same 422: the tools the connection declares.

Array<string>
Example
[
"get_order",
"search_orders"
]