---
title: "Cancel a pending approval (requester)"
method: POST
path: "/v1/approvals/{approval_id}/cancel"
tags: ["Approvals"]
---

# Cancel a pending approval (requester)

`POST /v1/approvals/{approval_id}/cancel`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/approvals/{approval_id}/cancel`
- Auth: HTTP bearer

Withdraws a pending approval. Callable by the agent that requested it or
the human it was addressed to. First answer wins: if the approval was
already decided or expired, the existing record is returned unchanged
(200) rather than an error — the caller's next question is what the
answer was. A cancellation is delivered to webhook subscribers as
`approval.decided` with `decision: "cancelled"`, and audited as
`approval.cancelled`.

## Path parameters

- `approval_id` string, uuid, required

## Request body

- object
  - `reason` string

## Response `200`

The approval — `cancelled`, or the decision that landed first

- ApprovalResponse
  - `id` string, uuid, required
  - `org_id` string, uuid, required
  - `user_id` string, uuid, required
  - `agent_id` string, uuid, nullable
  - `action` string, required
  - `target_type` string, required
  - `target_id` string, required
  - `risk_tier` integer, required: The tier actually enforced. Authoritative.
  - `declared_risk_tier` integer, nullable: What the caller asked for, when it asked for anything.
  - `declared_below_floor` boolean: The caller asked for a lower tier than policy required.
  - `human_summary` string, nullable: Plain-language line sent to SMS, push and email.
  - `payload` object: What the action will do, as submitted.
  - `status` 'pending' | 'approved' | 'rejected' | 'expired' | 'cancelled', required
  - `summary` object, required: Structured summary of the action requiring approval
  - `reason` string, nullable
  - `decision_reason` string, nullable
  - `decided_by` string, uuid, nullable
  - `decided_at` string, date-time, nullable
  - `expires_at` string, date-time, nullable
  - `created_at` string, date-time, required

## Other responses

- `403`: Insufficient permissions
- `404`: Resource not found

---

[API](https://skmtc.dev/1claw/apis/1claw-api.md) · [All operations](https://skmtc.dev/1claw/apis/1claw-api/llms.txt) · [OpenAPI document](https://skmtc.dev/1claw/apis/1claw-api/revisions/5fa0918f3b41?raw)
