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:

  1. /check returns decision: "confirm" with a confirm_nonce
  2. Show your user a prompt (use confirm_prompt_hint as the scope label)
  3. Call POST /v1/confirmations/{nonce} with approved: true or false
  4. If approved, re-call /check with the same authorization_id — it now returns allow

Request

POST /v1/confirmations/cnf_01HXZ...
Authorization: Bearer allowly_l1_s001_...
Content-Type: application/json
{
  "approved": true,
  "ttl_seconds": 60
}
FieldRequiredDescription
approvedyestrue if the user approved, false if they declined
ttl_secondsnoHow 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

ConditionStatus returned
Valid, unconsumed, not expired200
Expired410 Gone
Already consumed410 Gone
Not found or wrong workspace410 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.