# List pacts

`GET https://api.signwithsigil.com/v1/pacts`

Your pacts, most recently updated first, filtered by status and paged.

List items carry `recipients` and `links` but not `fields` or `events`; [get the pact](/api-reference/pacts/get-pact) for those. Pacts past their `date_lapses` are marked `lapsed` before the list is read.

## Authorization

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

## Query parameters

- `status` (string, default `all`): `all`, `active` (drafts and sent pacts), or one status. One of: `all`, `active`, `draft`, `sent`, `sealed`, `declined`, `voided`, `lapsed`.
- `limit` (integer, default `50`): Pacts per page, 1 to 200.
- `offset` (integer, default `0`): How many to skip.

## Response

`200 OK`: One page of pacts.

- `data` (array of objects): The pacts, without `fields` and `events`.
  - `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).
- `total` (integer): Pacts matching `status`, across all pages.
- `limit` (integer): The page size used.
- `offset` (integer): The offset used.

## Errors

| Status | When |
|---|---|
| 400 | Unknown `status`, or `limit` or `offset` out of range. |
| 401 | The API key is missing, wrong or revoked. |
| 403 | The account's plan does not include API access (Pro and Business do). |

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

## Example request

```bash
curl 'https://api.signwithsigil.com/v1/pacts?status=active&limit=20' \
  -H "Authorization: Bearer $SIGIL_API_KEY"
```

## Example response

```json
{
  "data": [
    {
      "uid": "K4TQ7MZE",
      "title": "Consulting agreement with Acme",
      "status": "sent",
      "message": "Please sign by Friday.",
      "page_count": 3,
      "created_by": "api",
      "current_signer": 2,
      "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-20T15:31:40Z",
      "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"
      }
    }
  ],
  "total": 1,
  "limit": 20,
  "offset": 0
}
```
