> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axon402.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Approval Status

> Check approval status, expiry, and token state

Returns the current status, expiry, and token state for an approval request.

This route is org- and wallet-scoped. It accepts any caller that can access the underlying approval request: static operator key, tenant API key, or authorized platform session.

```bash theme={null}
curl -s \
  -H "Authorization: Bearer $TOKEN" \
  "http://127.0.0.1:3030/v1/approvals/$APPROVAL_ID/status"
```

### Response Fields

| Field | Type | Description |
| :- | :- | :- |
| `id` | `string` | UUID of the approval request |
| `status` | `string` | One of `pending`, `approved`, `denied`, `expired` |
| `expires_at` | `string` | ISO 8601 timestamp when the approval expires |
| `risk_score` | `number` | Numeric risk score assigned during the Sense stage |
| `alignment_score` | `number` | Mandate alignment score (0-1, Jaccard or LLM-based) |
| `escalation_trigger` | `string \| null` | Reason the request was escalated (e.g. `"over_limit"`, `"low_alignment"`) |
| `token_state` | `string` | One of `available`, `expired`, `consumed`, `context_mismatch` |
| `token_state_last_error` | `string \| null` | Last error message if token consumption failed |
| `created_at` | `string` | ISO 8601 timestamp mapped from the DB's `requested_at` column |
| `approved_at` | `string \| null` | ISO 8601 timestamp when approved (null if not yet approved) |
| `denied_reason` | `string \| null` | Operator-provided reason for denial (null if not denied) |

> [!NOTE]
>
> This REST route does not return the raw `approval_token`. For that, use `POST /v1/approvals/{approval_id}/consume` or the MCP approval tools.

### Approval States

| State | Description |
| :- | :- |
| `pending` | Awaiting operator review |
| `approved` | Approved, token available |
| `denied` | Rejected by operator |
| `expired` | TTL exceeded (default 5 minutes) |

### Token States

| Token State | Description |
| :- | :- |
| `available` | Token is ready to be consumed |
| `expired` | Token TTL has elapsed |
| `consumed` | Token has already been used |
| `context_mismatch` | Retry context does not match the original request |

## Errors

* `401` `UNAUTHENTICATED` / `INVALID_API_KEY`
* `403 REJECTED_POLICY`: caller cannot access the approval's org or wallet
* `404 NOT_FOUND`: approval does not exist


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.