POST /v1/confirmations/{nonce}
Resolve a user confirmation. Called after your UI has presented the confirmation prompt and received the user's response.
When you need this
When /check returns decision: "confirm" inside a scope result, the matching scope is listed in requires_confirm_for on the authorization. Your agent must pause and get explicit in-app approval before proceeding.
The confirm flow:
/checkreturnsdecision: "confirm"with aconfirm_nonce- Show your user a prompt (use
confirm_prompt_hintas the scope label) - Call
POST /v1/confirmations/{nonce}withapproved: trueorfalse - If approved, re-call
/checkwith the sameauthorization_id— it now returnsallow
Request
POST /v1/confirmations/cnf_01HXZ...
Authorization: Bearer allowly_l1_s001_...
Content-Type: application/json
{
"approved": true,
"ttl_seconds": 60
}
| Field | Required | Description |
|---|---|---|
approved | yes | true if the user approved, false if they declined |
ttl_seconds | no | How long the approval is valid for re-checks of the same scope/resource pair (default 60, max 300) |
Response — approved
{
"decision": "approved",
"authorization_id": "auth_01HXZ...",
"expires_at": "2026-04-21T14:33:17.000Z"
}
The authorization_id returned is a short-lived confirmation authorization scoped to the exact (original_authorization_id, scope, resource). Re-call /check with the original authorization_id and the same scope — it will resolve allow within the TTL window.
Response — denied
{
"decision": "denied_by_user"
}
Nonce behavior
| Condition | Status returned |
|---|---|
| Valid, unconsumed, not expired | 200 |
| Expired | 410 Gone |
| Already consumed | 410 Gone |
| Not found or wrong workspace | 410 Gone |
All invalid states return 410 to prevent nonce enumeration.
Nonces expire after 5 minutes regardless of ttl_seconds. ttl_seconds controls how long the *resulting approval* is valid for re-checks, not the nonce itself.
Important
Only call this after receiving explicit user input. Never auto-approve confirmations server-side — the confirmation step exists to surface a real authorization decision to the user.