Skip to main content
POST
Create an approval request

Authorizations

Authorization
string
header
required

A VisIQ API key presented as Authorization: Bearer vq_prod_.... Mint harness keys under Settings → Harness Keys and API keys under Settings → API Keys in the dashboard.

Headers

Idempotency-Key
string

Optional. Makes this write safe to retry: a repeat with the same key, method, path (including its query string) and body within 24 hours returns the stored response with X-Idempotent-Replayed: true instead of running again. Reusing the key with a different request is a 422; a repeat while the first is still running is a 409, until the first request's 2-minute processing lease expires, after which the repeat runs. See REST conventions.

Required string length: 1 - 256
Pattern: ^[A-Za-z0-9_-]+$
X-Idempotency-Key
string

The legacy spelling of Idempotency-Key, accepted with the same behaviour. Sending both with different values is a 400.

Required string length: 1 - 256
Pattern: ^[A-Za-z0-9_-]+$

Body

application/json
agent_id
string
required
Required string length: 1 - 255
action
string
required
Required string length: 1 - 255
target_app
string
default:openclaw
Required string length: 1 - 255
context
object
reason
string
Required string length: 1 - 1000
category
enum<string>
default:engineer
Available options:
enduser,
engineer,
finance,
security,
compliance,
other
rule_code
string
Required string length: 1 - 64
timeout_seconds
integer
default:120
Required range: 10 <= x <= 120

Response

The created queue item.

id
string<uuid>
decision_id
string<uuid> | null
agent_id
string
target_app
string
action
string
context
object
category
enum<string>
Available options:
enduser,
engineer,
finance,
security,
compliance,
other
status
enum<string>
Available options:
pending,
approved,
rejected,
timeout,
expired,
dismissed,
resolved
notified_via
string[] | null
expires_at
string<date-time> | null
responded_at
string<date-time> | null
responded_by
string | null
created_at
string<date-time>