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

# Resolve Queued Approval

`POST /approvals/{approval_id}/resolve`

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``.

## 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
- `404` — No pending approval with that id
- `409` — NONCE_MISMATCH
- `410` — NONCE_EXPIRED
- `422` — Validation Error

---

[API](https://skmtc.net/sipyourdrink-ltd/apis/bernstein-task-server.md) · [All operations](https://skmtc.net/sipyourdrink-ltd/apis/bernstein-task-server/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sipyourdrink-ltd/bernstein-task-server/revisions/86f514b4e920/schema)
