# Void a pact

`POST https://api.signwithsigil.com/v1/pacts/{uid}/void`

Withdraw a pact that is out for signature. Its links stop working and the current signer is told. This cannot be undone.

Documents are not returned. To change a draft instead, [delete it](/api-reference/pacts/delete-pact) and create a new one.

## Authorization

Header `Authorization: Bearer sgk_…` (or `X-Api-Key: sgk_…`).

## Path parameters

- `uid` (string, required): The pact's 8-character id. Not case-sensitive.

## Body (application/json, optional)

- `reason` (string): Why, passed on to the current signer and recorded in the event log.

## Response

`200 OK`: The [pact](/api-reference/objects/pact), now `voided`.

- `uid` (string): The pact's id: 8 letters and digits.
- `title` (string): Shown to signers and in emails (150 characters at most).
- `status` (string): See [Pact lifecycle](/concepts/pacts). One of: `draft`, `sent`, `sealed`, `declined`, `voided`, `lapsed`.
- `message` (string | null): Your note in the invitation email.
- `page_count` (integer): Pages in the document.
- `created_by` (string): Where it was created: the dashboard, the API or the MCP server. One of: `web`, `api`, `mcp`.
- `current_signer` (integer | null): The `order` of the signer whose turn it is while the pact is `sent`; otherwise `null`.
- `date_created` (string (date-time)): When the draft was created.
- `date_sent` (string (date-time) | null): When it was sent.
- `date_lapses` (string (date-time) | null): When it lapses if it is not sealed first.
- `date_sealed` (string (date-time) | null): When the last signer signed.
- `date_updated` (string (date-time)): When anything about it last changed.
- `documents_charged` (integer | null): Documents it used when it was sent. `null` on a draft.
- `documents_cost` (integer | null): What sending this draft will use: one document per 3 signers, rounded up. Only set on a draft.
- `sent_sha256` (string): SHA-256 (lowercase hex) of the PDF as sent. The sigil records it too.
- `signed_sha256` (string | null): SHA-256 of the signed PDF, once sealed.
- `recipients` (array of objects): Signers in order, then CCs.
  - `order` (integer): Position, starting at 1. Signers come first, numbered in the order you gave them; CCs follow.
  - `role` (string): Signers sign in order; a CC gets the finished copy. One of: `signer`, `cc`.
  - `name` (string): The recipient's name.
  - `email` (string): The recipient's address, lowercased.
  - `status` (string): Where this recipient is. One of: `pending`, `viewed`, `signed`, `declined`.
  - `date_viewed` (string (date-time) | null): When they first opened their signing link.
  - `date_signed` (string (date-time) | null): When they signed.
  - `typed_name` (string | null): The full name they typed when signing.
  - `decline_reason` (string | null): Their reason, if they declined.
  - `signing_url` (string): The private link for the signer whose turn it is. Anyone with it can sign as that person, so only give it to them. Only with `include_links=1`, and only on the waiting signer.
- `links` (object): Where to get the files.
  - `document` (string (URL)): The document as sent ([download](/api-reference/pacts/download-document)).
  - `signed` (string (URL) | null): The signed PDF, once sealed ([download](/api-reference/pacts/download-signed)).
  - `sigil` (string (URL) | null): The sigil (certificate of completion), once sealed ([download](/api-reference/pacts/download-sigil)).
  - `dashboard` (string (URL)): The pact's page on the dashboard (needs a login).
- `fields` (array of objects): The pact's own copy of the fields, with values as signers fill them in. Single-pact responses only.
  - `id` (integer | null): The field's id on a pact. `null` on a template.
  - `recipient` (integer): The signer the field belongs to: the number in its glyph (`\s2\` → `2`), or the signer it was given to in the website's field editor.
  - `type` (string): What the signer provides. One of: `signature`, `initials`, `name`, `date`, `text`, `checkbox`.
  - `page` (integer): The page it is on, starting at 1.
  - `x` (number): Distance from the page's left edge, in PDF points (1/72 inch).
  - `y` (number): Distance from the top of the page to the box's bottom edge, in points: the glyph's text baseline. Signatures stand on that line.
  - `width` (number): The box's width in points: set by the field type for a glyph, as drawn for a field placed by hand on the website.
  - `height` (number): The box's height in points: set by the field type for a glyph, as drawn for a field placed by hand on the website.
  - `label` (string | null): The label from the glyph, such as `Company` in `\t1:Company\`, or the one typed in the field editor.
  - `required` (boolean): `false` when the glyph ends in `!` (`\t1:Phone!\`, `\c1!\`), or when the field was made optional in the field editor.
  - `value` (string | null): What was filled in, once that signer has signed: text as typed, `"1"` or `"0"` for a checkbox, the typed name for `name`, and the signing date (`MM/dd/yyyy`, UTC) for `date`. Signatures and initials are images on the PDF, so they stay `null`.
- `events` (array of objects): The audit trail, oldest first. Single-pact responses only.
  - `event` (string): What happened. One of: `created`, `fields`, `sent`, `emailed`, `email_failed`, `viewed`, `consented`, `signed`, `declined`, `sealed`, `copy_emailed`, `copy_email_failed`, `voided`, `reissued`.
  - `at` (string (date-time)): When it happened.
  - `by` (string | null): Who did it: your email address, or the signer's. `null` for what the system does on its own, such as sealing.
  - `to` (string | null): Who an email went to, for `emailed`, `email_failed`, `reissued`, `copy_emailed` and `copy_email_failed`.
  - `note` (string | null): Detail, such as `signer 2`, the consent version, or the reason given for voiding or declining.
- `warning` (string): Set when an invitation email could not be delivered. The action still happened: resend the link, or check the address. Only on create (with `send`), send and resend responses, and only when an email failed.

## Errors

| Status | When |
|---|---|
| 400 | The pact is not out for signature. |
| 401 | The API key is missing, wrong or revoked. |
| 403 | The account's plan does not include API access (Pro and Business do). |
| 404 | No pact with that id belongs to your account. |

Every error body is `{ "error": "message" }`.

## Example request

```bash
curl -X POST https://api.signwithsigil.com/v1/pacts/K4TQ7MZE/void \
  -H "Authorization: Bearer $SIGIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Terms changed; a new version is coming." }'
```

## Example response

```json
{
  "uid": "K4TQ7MZE",
  "title": "Consulting agreement with Acme",
  "status": "voided",
  "message": "Please sign by Friday.",
  "page_count": 3,
  "created_by": "api",
  "current_signer": null,
  "date_created": "2026-10-20T14:05:00Z",
  "date_sent": "2026-10-20T14:05:01Z",
  "date_lapses": "2026-11-03T14:05:01Z",
  "date_sealed": null,
  "date_updated": "2026-10-20T16:02:09Z",
  "documents_charged": 1,
  "documents_cost": null,
  "sent_sha256": "9f2c4e81b07d5a3c6e1f0b9a8d7c6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d",
  "signed_sha256": null,
  "recipients": [
    {
      "order": 1,
      "role": "signer",
      "name": "Avery Lane",
      "email": "avery@example.com",
      "status": "signed",
      "date_viewed": "2026-10-20T15:28:02Z",
      "date_signed": "2026-10-20T15:31:40Z",
      "typed_name": "Avery Lane",
      "decline_reason": null
    },
    {
      "order": 2,
      "role": "signer",
      "name": "Sam Ortiz",
      "email": "sam@example.com",
      "status": "pending",
      "date_viewed": null,
      "date_signed": null,
      "typed_name": null,
      "decline_reason": null
    },
    {
      "order": 3,
      "role": "cc",
      "name": "Records",
      "email": "records@example.com",
      "status": "pending",
      "date_viewed": null,
      "date_signed": null,
      "typed_name": null,
      "decline_reason": null
    }
  ],
  "links": {
    "document": "https://api.signwithsigil.com/v1/pacts/K4TQ7MZE/document.pdf",
    "signed": null,
    "sigil": null,
    "dashboard": "https://www.signwithsigil.com/pacts/K4TQ7MZE"
  },
  "fields": [
    {
      "id": 4101,
      "recipient": 1,
      "type": "text",
      "page": 1,
      "x": 140.25,
      "y": 188.4,
      "width": 160,
      "height": 14,
      "label": "Company name",
      "required": true,
      "value": "Acme Corp"
    },
    {
      "id": 4102,
      "recipient": 1,
      "type": "signature",
      "page": 3,
      "x": 72,
      "y": 612.5,
      "width": 185,
      "height": 30,
      "label": null,
      "required": true,
      "value": null
    },
    {
      "id": 4103,
      "recipient": 1,
      "type": "name",
      "page": 3,
      "x": 72,
      "y": 650.1,
      "width": 200,
      "height": 12,
      "label": null,
      "required": true,
      "value": "Avery Lane"
    },
    {
      "id": 4104,
      "recipient": 1,
      "type": "date",
      "page": 3,
      "x": 320,
      "y": 650.1,
      "width": 100,
      "height": 12,
      "label": null,
      "required": true,
      "value": "10/20/2026"
    },
    {
      "id": 4105,
      "recipient": 2,
      "type": "signature",
      "page": 3,
      "x": 72,
      "y": 712.5,
      "width": 185,
      "height": 30,
      "label": null,
      "required": true,
      "value": null
    },
    {
      "id": 4106,
      "recipient": 2,
      "type": "date",
      "page": 3,
      "x": 320,
      "y": 750.1,
      "width": 100,
      "height": 12,
      "label": null,
      "required": true,
      "value": null
    },
    {
      "id": 4107,
      "recipient": 2,
      "type": "checkbox",
      "page": 3,
      "x": 72,
      "y": 778.6,
      "width": 12,
      "height": 12,
      "label": "Send me a copy by post",
      "required": false,
      "value": null
    }
  ],
  "events": [
    {
      "event": "created",
      "at": "2026-10-20T14:05:00Z",
      "by": "you@example.com",
      "to": null,
      "note": "via api, 2 signers"
    },
    {
      "event": "sent",
      "at": "2026-10-20T14:05:01Z",
      "by": "you@example.com",
      "to": null,
      "note": "2 signers, lapses 2026-11-03"
    },
    {
      "event": "emailed",
      "at": "2026-10-20T14:05:02Z",
      "by": "you@example.com",
      "to": "avery@example.com",
      "note": "signer 1"
    },
    {
      "event": "viewed",
      "at": "2026-10-20T15:28:02Z",
      "by": "avery@example.com",
      "to": null,
      "note": null
    },
    {
      "event": "consented",
      "at": "2026-10-20T15:31:38Z",
      "by": "avery@example.com",
      "to": null,
      "note": "consent version 2026-10-20"
    },
    {
      "event": "signed",
      "at": "2026-10-20T15:31:40Z",
      "by": "avery@example.com",
      "to": null,
      "note": "signer 1 as \"Avery Lane\""
    },
    {
      "event": "emailed",
      "at": "2026-10-20T15:31:41Z",
      "by": "avery@example.com",
      "to": "sam@example.com",
      "note": "signer 2"
    },
    {
      "event": "voided",
      "at": "2026-10-20T16:02:09Z",
      "by": "you@example.com",
      "to": null,
      "note": "Terms changed; a new version is coming."
    }
  ]
}
```
