Skip to main content
POST
Decide an approval request (approve / deny)

Authorizations

x-api-key
string
header
required

Path Parameters

approval_id
string<uuid>
required

Body

application/json

Body for the approve/deny mutation. The deciding actor comes from auth, not the body.

decision
enum<string>
required
Available options:
approve,
deny
note
string | null

Response

Successful Response

Full detail view of a single approval_requests row.

id
string<uuid>
required
organization_id
string<uuid>
required
conversation_id
string<uuid>
required
conv_turn_id
string<uuid> | null
required
node_id
string | null
required
subject_kind
enum<string>
required

What a suspended approval is gating — the caller-agnostic dispatch key.

The :class:ResumeDispatcher (HITL-03 §1) routes a recorded decision back to the right continuation by this value: a workflow ApprovalNode resumes an edge (WORKFLOW_NODE); a Policy/tool-level gate resumes a partial turn (TOOL_CALL). Persisted to a VARCHAR(20) — a StrEnum serializes to its string value, so it needs no migration.

Available options:
workflow_node,
tool_call
subject_ref
string
required
approver_role
string
required
status
string
required
created_at
string<date-time>
required
payload
Payload · object
suspend_message
string | null
decision
string | null
decided_by
string | null
decided_at
string<date-time> | null
note
string | null
timeout_at
string<date-time> | null
resume_token
string | null