---
title: "Poll a held tool call"
method: GET
path: "/api/v1/gateway/approvals/{approvalId}"
---

# Poll a held tool call

`GET /api/v1/gateway/approvals/{approvalId}`

## Request

- Base URL: `https://app.axiorank.com`
- URL: `https://app.axiorank.com/api/v1/gateway/approvals/{approvalId}`
- Auth: HTTP bearer

When a tool call returns `decision: "hold"`, poll this endpoint with the `approvalId` until a human resolves it. The server long-polls (~8s per request), so polling is cheap. Authenticate with the SAME agent key that made the call; another agent's holds return an opaque 404.

## Path parameters

- `approvalId` string, uuid, required

## Response `200`

The current approval state. `decision` stays `hold` while pending.

- ApprovalStatusResponse
  - `status` string, required: Approval state: `pending` while awaiting a human; `approved`/`denied` once resolved; `expired` on timeout.
  - `decision` 'allow' | 'deny' | 'hold', required: `hold` while still pending; resolves to `allow`/`deny`.
  - `reason` string, nullable
  - `auditLogId` string, nullable
  - `resolvedBy` string, nullable: Operator who resolved the hold, if any.

## Other responses

- `401`: Missing or invalid API key.
- `404`: Unknown approval, or not owned by this agent.

---

[API](https://skmtc.dev/axiorank/apis/axiorank-gateway-api.md) · [All operations](https://skmtc.dev/axiorank/apis/axiorank-gateway-api/llms.txt) · [OpenAPI document](https://skmtc.dev/axiorank/apis/axiorank-gateway-api/revisions/d8a7a33656e4?raw)
