---
title: "Approvals API"
description: "The human approval queue and its decisions."
label: "Approvals"
generated: "the API catalogue in apps/control-plane/src/routes/developer.ts"
---


An approval is bound to the specific request that created it. Approving does not grant the agent a standing permission, and an approval cannot be replayed against a different request.

## Endpoints

| | Endpoint | Permission | Notes |
| --- | --- | --- | --- |
| `GET` | `/v1/approvals` | `approval:read` | — |
| `GET` | `/v1/approvals/{approvalId}` | `approval:read` | — |
| `POST` | `/v1/approvals/{approvalId}/approve` | `approval:approve` | — |
| `POST` | `/v1/approvals/{approvalId}/deny` | `approval:deny` | — |

## What each endpoint does

### `GET /v1/approvals`

List approvals.

Requires `approval:read`.

### `GET /v1/approvals/{approvalId}`

Approval card with full decision context.

Requires `approval:read`.

### `POST /v1/approvals/{approvalId}/approve`

Approve. May require step-up.

Requires `approval:approve`.

### `POST /v1/approvals/{approvalId}/deny`

Deny with a reason.

Requires `approval:deny`.

Request body:

```json
{
  "reason": "string"
}
```
