# Approve a Quorum Request

Another administrator's held action, approved with your password: it runs now.

## Overview

- `password`: your own (1–200 characters), checked as the sign-in checks it. `reason`: optional, up to 500 characters.
- `200` with the request: the action ran at once as who asked, with their role as it is now — `state` `executed`, or `failed` with `error`. Never the action's body: who asked reads it with [Read the Answer](https://docs.aureahub.com/docs/quorum-request-result.md).
- For an active administrator of your tenant other than who asked, whose role could take the action ([Who Decides](https://docs.aureahub.com/docs/guide-tenant-quorum.md)). The checks and their order: [Refusals](https://docs.aureahub.com/docs/guide-tenant-quorum.md).

## Endpoint

### `POST /v1/quorum/requests/{id}/approve`

Authentication: bearer token required.

Approves another administrator's held action, which then runs.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string (uuid) | yes | The request's id |

**Request body**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `password` | string | yes | Your own password |
| `reason` | string | no | Up to 500 characters |

**Responses**

`200` Executed

```json
{
  "id": "4e2b9c17-8a3d-4f60-b5e1-7c9d0a2f6b38",
  "action": "credentials.api_secret.rotate",
  "group": "credentials_and_secrets",
  "state": "executed",
  "mode": "enforce",
  "target": {
    "tenantId": "6f1e2d3c-4b5a-4968-8776-a5b4c3d2e1f0",
    "userId": null,
    "resourceType": null,
    "resourceId": null
  },
  "details": {},
  "requestedBy": "6a1c9e3f-2b7d-4f50-8e4a-0c5d3b9f7e12",
  "requestedAt": "2026-10-09T09:00:00.000Z",
  "route": "POST /v1/admin/tenants/:id/rotate-secret",
  "requestId": "1f7b3d95-6c2e-4a08-b4d1-8e5a9c0f2b67",
  "requiredApprovals": 1,
  "approvals": 1,
  "expiresAt": "2026-10-10T09:00:00.000Z",
  "decidedAt": "2026-10-09T09:20:11.000Z",
  "executedAt": "2026-10-09T09:20:11.000Z",
  "resultStatus": 200,
  "secretAnswer": true,
  "resultAvailable": true,
  "resultReadAt": null,
  "error": null,
  "decisions": [
    { "adminId": "0f8e7d6c-5b4a-4392-8170-6e5d4c3b2a19", "decision": "approve", "reason": null, "decidedAt": "2026-10-09T09:20:11.000Z" }
  ]
}
```

`403` Own request

```json
{
  "statusCode": 403,
  "error": "ForbiddenError",
  "message": "The requester cannot decide its own request: another administrator of the tenant approves or rejects it",
  "details": { "code": "QUORUM_OWN_REQUEST" }
}
```

`409` Decided

```json
{
  "statusCode": 409,
  "error": "ConflictError",
  "message": "The request is rejected",
  "details": { "code": "QUORUM_NOT_AWAITING", "state": "rejected" }
}
```

**Example request**

```bash
curl -X POST https://api.aureahub.com/v1/quorum/requests/$REQUEST_ID/approve \
  -H "Authorization: Bearer $OTHER_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "password": "<your password>", "reason": "Agreed in the Monday call" }'
```

---

Web version: https://docs.aureahub.com/#quorum-request-approve
