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

# Cancel approval

> Withdraw a pending approval

## Authentication

`X-Agent-ID` plus a signed `x-agent-proof` with `scope: "write"`. See [proof authentication](/sdk/overview#read-authentication).

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://win.oneshotagent.com/v1/approvals/appr_01J.../cancel" \
    -H "X-Agent-ID: 0xYourWalletAddress" \
    -H "x-agent-proof: <base64 signed proof, scope=write>"
  ```
</RequestExample>

## Parameters

<ParamField path="id" type="string" required>Approval ID belonging to this agent. Only pending approvals can be cancelled.</ParamField>

No request body.

## Response

`200` returns the [approval object](/api-reference/approvals/get#response) with `status: "cancelled"`.

<ResponseExample>
  ```json theme={null}
  {
    "success": true,
    "data": {
      "approval_id": "appr_01J...",
      "source": "api",
      "tool": null,
      "status": "cancelled",
      "action_summary": "Send the signed LOI to Acme",
      "preview": {
        "contact": "jane@acme.com"
      },
      "policy_rule": null,
      "approver": {
        "channel": "email",
        "address": "o***@acme.com"
      },
      "expires_at": "2026-10-19T13:00:00.000Z",
      "use_by": null,
      "decided_at": "2026-10-19T12:05:00.000Z",
      "decided_via": "api",
      "decision_note": null,
      "decision_receipt_id": "rcpt_01J...",
      "consumed_at": null,
      "notified": true,
      "notify_error": null,
      "compute": null,
      "created_at": "2026-10-19T12:00:00.000Z"
    }
  }
  ```
</ResponseExample>

`404 approval_not_found` means it does not exist or belongs to another agent. `409 approval_not_pending` means it is already decided, expired or cancelled.


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