---
title: "Cancel a signature request"
method: POST
path: "/v1/signature-requests/{id}/cancel/"
tags: ["Signature requests"]
---

# Cancel a signature request

`POST /v1/signature-requests/{id}/cancel/`

## Request

- Base URL: `https://api.pdfbetter.com`
- URL: `https://api.pdfbetter.com/v1/signature-requests/{id}/cancel/`
- Auth: HTTP bearer

Closes signing links and tells invited recipients. Canceling twice is harmless.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `reason` string

## Response `200`

Cancel a signature request

- SignatureRequest
  - `object` 'signature_request', required
  - `id` string, required
  - `documentId` string, required
  - `title` string, required
  - `message` string, nullable, required
  - `status` 'draft' | 'sent' | 'completed' | 'declined' | 'canceled' | 'expired', required
  - `routing` 'sequential' | 'parallel', required
  - `reminderEveryDays` integer, nullable, required
  - `expiresAt` string, nullable, required: ISO 8601 timestamp (UTC)
  - `sentAt` string, nullable, required: ISO 8601 timestamp (UTC)
  - `completedAt` string, nullable, required: ISO 8601 timestamp (UTC)
  - `createdAt` string, required: ISO 8601 timestamp (UTC)
  - `fieldCount` integer, required
  - `hasCompletedFile` boolean, required
  - `hasCertificate` boolean, required
  - `recipients` object[], required
    - `id` string, required
    - `name` string, required
    - `email` string, required
    - `role` 'signer' | 'approver' | 'cc', required
    - `order` integer, required
    - `status` 'pending' | 'sent' | 'viewed' | 'signed' | 'declined', required
    - `authMethod` string, required
    - `sentAt` string, nullable, required: ISO 8601 timestamp (UTC)
    - `viewedAt` string, nullable, required: ISO 8601 timestamp (UTC)
    - `signedAt` string, nullable, required: ISO 8601 timestamp (UTC)
    - `declinedAt` string, nullable, required: ISO 8601 timestamp (UTC)
    - `declineReason` string, nullable, required

## Other responses

- `400`: Invalid request (see `error.details.issues`)
- `401`: Missing or invalid API key
- `402`: Your plan doesn't include this (API access needs Business) or a monthly allowance is used up
- `403`: The API key lacks the required scope
- `404`: Not found (or not yours)
- `409`: Conflict with the current state
- `422`: Validation failed
- `429`: Rate limited — see RateLimit-* and Retry-After

---

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