---
title: "Approve one exact reviewed action"
method: POST
path: "/v1/approvals/{id}/approve"
tags: ["Approvals"]
---

# Approve one exact reviewed action

`POST /v1/approvals/{id}/approve`

## Request

- Base URL: `https://api.thrd.email`
- URL: `https://api.thrd.email/v1/approvals/{id}/approve`
- Auth: API key in cookie `thrd_approver_session`

Human control-plane mutation. Identity, tenant, environment and approvals:write membership are derived from the opaque rotating session; the response contains capability metadata only.

## Path parameters

- `id` string, uuid, required

## Headers

- `x-csrf-token` string, required
- `Idempotency-Key` string, required

## Request body

- object

## Response `200`

Approval completed and one action capability issued

- object
  - `approval_id` string, uuid, required
  - `status` 'capability_issued', required
  - `receipt_id` string, uuid, required
  - `completed_at` string, date-time, required
  - `idempotent_replay` boolean, required
  - `capability` object, required
    - `capability_id` string, uuid, required
    - `status` 'issued', required
    - `expires_at` string, date-time, required
    - `delivery_count` integer, required

## Other responses

- `400`: Invalid ID, idempotency key or non-empty body
- `401`: Missing, invalid, expired or rotated human session
- `409`: Expired or conflicting approval transition
- `429`: Human mutation rate limit exceeded
- `503`: Approval or capability authority unavailable

---

[API](https://skmtc.dev/thrd/apis/thrd-agent-email-api.md) · [All operations](https://skmtc.dev/thrd/apis/thrd-agent-email-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thrd/apis/thrd-agent-email-api/revisions/d8a88129cd34?raw)
