---
title: "Resolve Queued Approval"
method: POST
path: "/approvals/{approval_id}/resolve"
tags: ["approvals"]
---

# Resolve Queued Approval

`POST /approvals/{approval_id}/resolve`

## Request

- Base URL: `http://127.0.0.1:8052`
- URL: `http://127.0.0.1:8052/approvals/{approval_id}/resolve`
- Auth: none declared

Resolve a queued approval with ``allow``, ``reject``, or ``always``.

The request body must echo the ``nonce`` the gate issued when the
approval was queued. Mismatches return ``409 NONCE_MISMATCH``; a
nonce replayed against an already-resolved or evicted approval
returns ``410 NONCE_EXPIRED``. The resolution is attributed to the
principal the request authenticated as. When scoped tokens are
configured and the request presents none, the call is refused with
``401`` rather than recorded against an unnamed caller; when no scoped
tokens are configured the server is in its loopback posture and the
decision is attributed to the loopback operator.

## Path parameters

- `approval_id` string, required

## Request body

- ResolveRequest: Body for ``POST /approvals/{id}/resolve``. The reply must echo the exact ``nonce`` hex string issued when the approval was queued. ``nonce`` defaults to an empty string at the schema layer so a missing field flows through the handler as a nonce mismatch (``409 NONCE_MISMATCH``) rather than a Pydantic 422 validation error, matching the documented contract.
  - `decision` 'allow' | 'reject' | 'always', required
  - `nonce` string
  - `reason` string

## Response `200`

Successful Response

- object

## Other responses

- `400`: Invalid approval id or decision
- `401`: No authenticated principal to attribute the decision to
- `404`: No pending approval with that id
- `409`: NONCE_MISMATCH
- `410`: NONCE_EXPIRED
- `422`: Validation Error

---

[API](https://skmtc.dev/bernstein/apis/bernstein-task-server.md) · [All operations](https://skmtc.dev/bernstein/apis/bernstein-task-server/llms.txt) · [OpenAPI document](https://skmtc.dev/bernstein/apis/bernstein-task-server/revisions/2a20a34ad2eb?raw)
