# DocuSeal

> Send documents for e-signature with DocuSeal: create templates from HTML or PDF, send them to signers with pre-filled fields, track each signer's status, and download the signed documents and audit log.

App · 20 actions. Web page: https://docs.lodol.com/docs/integrations/docuseal

## Actions

### Archive submission

Archive a signature request so signers can no longer open it. 'Update submission' can restore it.

**Inputs**

- Submission (`submission_id`, text, required): The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.

**Outputs**

- `archived` (true/false): Always true
- `archived_at` (text): When it was archived
- `id` (text): The archived record's id

**Example output**

```json
{
  "archived": true,
  "archived_at": "2026-10-12T11:00:00Z",
  "id": "2001"
}
```

### Archive template

Archive a template so it can no longer be sent. Existing submissions are kept, and 'Update template' can restore it.

**Inputs**

- Template (`template_id`, text, required): Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.

**Outputs**

- `archived` (true/false): Always true
- `archived_at` (text): When it was archived
- `id` (text): The archived record's id

**Example output**

```json
{
  "archived": true,
  "archived_at": "2026-10-12T11:00:00Z",
  "id": "1001"
}
```

### Clone template

Copy a template with its fields and documents. Without a name the copy is called '<name> (Clone)'.

**Inputs**

- Template (`template_id`, text, required): Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
- Name of the copy (`name`, text): Leave empty for '<name> (Clone)'.
- Folder (`folder_name`, text): The folder to put the template in. It is created if it is new.
- External id (`external_id`, text): Your own id for the template, such as one from your app.

**Outputs**

- `archived` (true/false): Whether the template is archived
- `archived_at` (text): When it was archived, or empty
- `author` (object): Who created it
- `created_at` (text): When it was created
- `documents` (list): The template's documents
- `external_id` (text): Your own id for the template, if set
- `field_names` (list): Field names, the keys a signer's 'values' can use
- `fields` (list): Fillable fields
- `folder_id` (text): Folder id
- `folder_name` (text): Folder name
- `id` (text): Template id
- `name` (text): Template name
- `roles` (list): Signer role names, such as 'First Party'
- `shared_link` (true/false): Whether its public signing link is on
- `slug` (text): Template slug, used in its public link
- `source` (text): How it was created: native, api, embed or mcp
- `updated_at` (text): When it was last changed

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "author": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "created_at": "2026-10-12T10:00:00.000Z",
  "documents": [
    {
      "filename": "service-agreement",
      "id": "5001",
      "preview_image_url": "https://docuseal.com/file/hash/0.jpg",
      "url": "https://docuseal.com/file/hash/service-agreement.pdf",
      "uuid": "d94e615f"
    }
  ],
  "external_id": "",
  "field_names": [
    "Full Name",
    "Signature"
  ],
  "fields": [
    {
      "name": "Full Name",
      "required": true,
      "role": "First Party",
      "type": "text",
      "uuid": "594bdf04"
    },
    {
      "name": "Signature",
      "required": true,
      "role": "First Party",
      "type": "signature",
      "uuid": "a1b2c3d4"
    }
  ],
  "folder_id": "1",
  "folder_name": "Default",
  "id": "1001",
  "name": "Service Agreement",
  "roles": [
    "First Party"
  ],
  "shared_link": true,
  "slug": "iRgjDX7WDK6BRo",
  "source": "api",
  "updated_at": "2026-10-12T10:00:00.000Z"
}
```

### Create template from HTML

Create a reusable template from HTML, placing fillable and signature fields with DocuSeal's field tags. Give the same external id again to update that template instead.

**Inputs**

- HTML (`html`, text, required): The document's HTML. Place fields with DocuSeal's field tags, such as <text-field name="Full Name" role="First Party"></text-field> and <signature-field name="Signature" role="First Party"></signature-field>. See https://www.docuseal.com/guides/create-pdf-document-fillable-form-with-html-api
- Template name (`name`, text): The new template's name.
- Page size (`size`, text): The paper size the HTML is laid out on. One of: `Letter` (Letter (8.5 x 11 in)), `Legal`, `Tabloid`, `Ledger`, `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`. Default: `Letter`.
- Page header HTML (`html_header`, text): HTML repeated at the top of every page.
- Page footer HTML (`html_footer`, text): HTML repeated at the bottom of every page.
- Folder (`folder_name`, text): The folder to put the template in. It is created if it is new.
- External id (`external_id`, text): Your own id for the template, such as one from your app.
- Public signing link (`shared_link`, true/false): Let anyone with the template's link fill and sign it. Default: `true`.

**Outputs**

- `archived` (true/false): Whether the template is archived
- `archived_at` (text): When it was archived, or empty
- `author` (object): Who created it
- `created_at` (text): When it was created
- `documents` (list): The template's documents
- `external_id` (text): Your own id for the template, if set
- `field_names` (list): Field names, the keys a signer's 'values' can use
- `fields` (list): Fillable fields
- `folder_id` (text): Folder id
- `folder_name` (text): Folder name
- `id` (text): Template id
- `name` (text): Template name
- `roles` (list): Signer role names, such as 'First Party'
- `shared_link` (true/false): Whether its public signing link is on
- `slug` (text): Template slug, used in its public link
- `source` (text): How it was created: native, api, embed or mcp
- `updated_at` (text): When it was last changed

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "author": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "created_at": "2026-10-12T10:00:00.000Z",
  "documents": [
    {
      "filename": "service-agreement",
      "id": "5001",
      "preview_image_url": "https://docuseal.com/file/hash/0.jpg",
      "url": "https://docuseal.com/file/hash/service-agreement.pdf",
      "uuid": "d94e615f"
    }
  ],
  "external_id": "",
  "field_names": [
    "Full Name",
    "Signature"
  ],
  "fields": [
    {
      "name": "Full Name",
      "required": true,
      "role": "First Party",
      "type": "text",
      "uuid": "594bdf04"
    },
    {
      "name": "Signature",
      "required": true,
      "role": "First Party",
      "type": "signature",
      "uuid": "a1b2c3d4"
    }
  ],
  "folder_id": "1",
  "folder_name": "Default",
  "id": "1001",
  "name": "Service Agreement",
  "roles": [
    "First Party"
  ],
  "shared_link": true,
  "slug": "iRgjDX7WDK6BRo",
  "source": "api",
  "updated_at": "2026-10-12T10:00:00.000Z"
}
```

### Create template from PDF

Create a reusable template from a PDF. Fields come from {{...}} text tags in the PDF or from the Fields list.

**Inputs**

- PDF (`file`, text, required): Upload a PDF, or give a public link to one or its base64 content. Place fields with text tags in the PDF, such as {{Full Name;role=First Party}} or {{Sign here;type=signature}}, or with 'Fields'.
- Document name (`document_name`, text, required): The name the document is shown under.
- Template name (`name`, text): The new template's name.
- Fields (`fields`, list): Advanced: fields to place on the PDF when it has no text tags, each like {"name": "Signature", "type": "signature", "role": "First Party", "areas": [{"x": 0.1, "y": 0.8, "w": 0.3, "h": 0.05, "page": 1}]}. Positions are fractions of the page.
- Folder (`folder_name`, text): The folder to put the template in. It is created if it is new.
- External id (`external_id`, text): Your own id for the template, such as one from your app.
- Public signing link (`shared_link`, true/false): Let anyone with the template's link fill and sign it. Default: `true`.
- Flatten the PDF (`flatten`, true/false): Remove the PDF's own form fields, keeping only DocuSeal's. Default: `false`.
- Remove text tags (`remove_tags`, true/false): Erase the {{...}} text tags from the PDF once fields are placed. Default: `true`.

**Outputs**

- `archived` (true/false): Whether the template is archived
- `archived_at` (text): When it was archived, or empty
- `author` (object): Who created it
- `created_at` (text): When it was created
- `documents` (list): The template's documents
- `external_id` (text): Your own id for the template, if set
- `field_names` (list): Field names, the keys a signer's 'values' can use
- `fields` (list): Fillable fields
- `folder_id` (text): Folder id
- `folder_name` (text): Folder name
- `id` (text): Template id
- `name` (text): Template name
- `roles` (list): Signer role names, such as 'First Party'
- `shared_link` (true/false): Whether its public signing link is on
- `slug` (text): Template slug, used in its public link
- `source` (text): How it was created: native, api, embed or mcp
- `updated_at` (text): When it was last changed

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "author": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "created_at": "2026-10-12T10:00:00.000Z",
  "documents": [
    {
      "filename": "service-agreement",
      "id": "5001",
      "preview_image_url": "https://docuseal.com/file/hash/0.jpg",
      "url": "https://docuseal.com/file/hash/service-agreement.pdf",
      "uuid": "d94e615f"
    }
  ],
  "external_id": "",
  "field_names": [
    "Full Name",
    "Signature"
  ],
  "fields": [
    {
      "name": "Full Name",
      "required": true,
      "role": "First Party",
      "type": "text",
      "uuid": "594bdf04"
    },
    {
      "name": "Signature",
      "required": true,
      "role": "First Party",
      "type": "signature",
      "uuid": "a1b2c3d4"
    }
  ],
  "folder_id": "1",
  "folder_name": "Default",
  "id": "1001",
  "name": "Service Agreement",
  "roles": [
    "First Party"
  ],
  "shared_link": true,
  "slug": "iRgjDX7WDK6BRo",
  "source": "api",
  "updated_at": "2026-10-12T10:00:00.000Z"
}
```

### Get signer

Get one signer: their status, every value they filled in, their documents and the template.

**Inputs**

- Signer (`submitter_id`, text, required): The signer's (submitter's) id. 'Get submission' and 'List signers' return it for each signer.

**Outputs**

- `completed_at` (text): When they signed, or empty
- `created_at` (text): When the signer was added
- `declined_at` (text): When they declined, or empty
- `documents` (list): The signer's documents
- `email` (text): Signer email
- `external_id` (text): Your own id for the signer, if set
- `id` (text): Submitter (signer) id
- `metadata` (object): Your own metadata
- `name` (text): Signer name
- `opened_at` (text): When they opened it, or empty
- `phone` (text): Signer phone
- `role` (text): The template role they sign as
- `sent_at` (text): When the invitation was sent, or empty
- `signing_url` (text): The signer's signing link, when returned
- `slug` (text): Signer slug, used in the signing link
- `status` (text): awaiting, sent, opened, completed or declined
- `submission_id` (text): The submission the signer belongs to
- `template` (object): The template, when returned
- `updated_at` (text): When the signer last changed
- `uuid` (text): Signer uuid
- `values` (list): Filled-in field values

**Example output**

```json
{
  "completed_at": "",
  "created_at": "2026-10-12T10:01:00.000Z",
  "declined_at": "",
  "documents": [],
  "email": "signer@example.com",
  "external_id": "",
  "id": "3001",
  "metadata": {},
  "name": "Jordan Smith",
  "opened_at": "",
  "phone": "",
  "role": "First Party",
  "sent_at": "2026-10-12T10:01:00.000Z",
  "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
  "slug": "pAMimKcyrLjqVt",
  "status": "sent",
  "submission_id": "2001",
  "template": {
    "id": "1001",
    "name": "Service Agreement"
  },
  "updated_at": "2026-10-12T10:01:00.000Z",
  "uuid": "884d545b",
  "values": [
    {
      "field": "Full Name",
      "value": "Jordan Smith"
    }
  ]
}
```

### Get submission

Get one signature request: its status, each signer's status and filled-in values, its documents, the audit log link and its event history.

**Inputs**

- Submission (`submission_id`, text, required): The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.

**Outputs**

- `archived` (true/false): Whether it is archived
- `archived_at` (text): When it was archived, or empty
- `audit_log_url` (text): Audit log PDF link, once completed
- `combined_document_url` (text): Combined signed PDF link, once completed
- `completed_at` (text): When everyone had signed, or empty
- `created_at` (text): When it was created
- `created_by` (object): Who sent it
- `documents` (list): Its documents (signed once completed)
- `events` (list): What has happened to it, oldest first
- `expire_at` (text): When it expires, or empty
- `id` (text): Submission id
- `name` (text): Submission name, or empty
- `slug` (text): Submission slug
- `source` (text): How it was created, such as api, invite or link
- `status` (text): pending, completed, declined or expired
- `submitters` (list): The signers
- `submitters_order` (text): preserved or random
- `template` (object): The template it was sent from
- `updated_at` (text): When it last changed
- `variables` (object): Template variables used

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "audit_log_url": "",
  "combined_document_url": "",
  "completed_at": "",
  "created_at": "2026-10-12T10:01:00.000Z",
  "created_by": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "documents": [],
  "events": [
    {
      "event_timestamp": "2026-10-12T10:01:00.000Z",
      "event_type": "send_email",
      "id": "4001",
      "submitter_id": "3001"
    }
  ],
  "expire_at": "",
  "id": "2001",
  "name": "Service Agreement - Jordan Smith",
  "slug": "VyL4szTwYoSvXq",
  "source": "api",
  "status": "pending",
  "submitters": [
    {
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "declined_at": "",
      "documents": [],
      "email": "signer@example.com",
      "external_id": "",
      "id": "3001",
      "metadata": {},
      "name": "Jordan Smith",
      "opened_at": "",
      "phone": "",
      "role": "First Party",
      "sent_at": "2026-10-12T10:01:00.000Z",
      "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
      "slug": "pAMimKcyrLjqVt",
      "status": "sent",
      "submission_id": "2001",
      "template": {
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "uuid": "884d545b",
      "values": [
        {
          "field": "Full Name",
          "value": "Jordan Smith"
        }
      ]
    }
  ],
  "submitters_order": "preserved",
  "template": {
    "external_id": "",
    "folder_name": "Default",
    "id": "1001",
    "name": "Service Agreement"
  },
  "updated_at": "2026-10-12T10:01:00.000Z",
  "variables": {}
}
```

### Get submission documents

Get download links for a submission's documents - signed once it is completed, partly filled before. The links expire, so download them in the same workflow.

**Inputs**

- Submission (`submission_id`, text, required): The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.
- Merge into one PDF (`merge`, true/false): Combine several documents into a single PDF. Default: `false`.

**Outputs**

- `count` (number): How many documents
- `documents` (list): Documents with expiring download links
- `submission_id` (text): Submission id

**Example output**

```json
{
  "count": 1,
  "documents": [
    {
      "name": "service-agreement",
      "url": "https://docuseal.com/file/hash/service-agreement.pdf"
    }
  ],
  "submission_id": "2001"
}
```

### Get template

Get one template with its signer roles, every field (name, type, which role fills it) and its documents. Use the field names to pre-fill a signer's values.

**Inputs**

- Template (`template_id`, text, required): Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.

**Outputs**

- `archived` (true/false): Whether the template is archived
- `archived_at` (text): When it was archived, or empty
- `author` (object): Who created it
- `created_at` (text): When it was created
- `documents` (list): The template's documents
- `external_id` (text): Your own id for the template, if set
- `field_names` (list): Field names, the keys a signer's 'values' can use
- `fields` (list): Fillable fields
- `folder_id` (text): Folder id
- `folder_name` (text): Folder name
- `id` (text): Template id
- `name` (text): Template name
- `roles` (list): Signer role names, such as 'First Party'
- `shared_link` (true/false): Whether its public signing link is on
- `slug` (text): Template slug, used in its public link
- `source` (text): How it was created: native, api, embed or mcp
- `updated_at` (text): When it was last changed

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "author": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "created_at": "2026-10-12T10:00:00.000Z",
  "documents": [
    {
      "filename": "service-agreement",
      "id": "5001",
      "preview_image_url": "https://docuseal.com/file/hash/0.jpg",
      "url": "https://docuseal.com/file/hash/service-agreement.pdf",
      "uuid": "d94e615f"
    }
  ],
  "external_id": "",
  "field_names": [
    "Full Name",
    "Signature"
  ],
  "fields": [
    {
      "name": "Full Name",
      "required": true,
      "role": "First Party",
      "type": "text",
      "uuid": "594bdf04"
    },
    {
      "name": "Signature",
      "required": true,
      "role": "First Party",
      "type": "signature",
      "uuid": "a1b2c3d4"
    }
  ],
  "folder_id": "1",
  "folder_name": "Default",
  "id": "1001",
  "name": "Service Agreement",
  "roles": [
    "First Party"
  ],
  "shared_link": true,
  "slug": "iRgjDX7WDK6BRo",
  "source": "api",
  "updated_at": "2026-10-12T10:00:00.000Z"
}
```

### List signers

List signers (submitters) across submissions, newest first, with their status and filled-in values. Filter by submission, name, email or phone, external id, or when they signed.

**Inputs**

- Submission (`submission_id`, text): Only the signers of this submission (its id or link).
- Name, email or phone contains (`search`, text): Part of a signer's name, email or phone number.
- External id (`external_id`, text): Only the signer with this external id.
- Signed after (`completed_after`, date and time): Only signers who completed after this moment.
- Signed before (`completed_before`, date and time): Only signers who completed before this moment.
- Number of results (`max_results`, number): How many to return, newest first (up to 500). From 1 to 500. Default: `25`.
- Continue after (`after`, text): To read the next, older page, the 'next_cursor' a previous run of this action returned.

**Outputs**

- `count` (number): How many signers were returned
- `has_more` (true/false): Whether older records remain
- `next_cursor` (text): Pass as 'Continue after' to read the next, older records
- `submitters` (list): The signers

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_cursor": "",
  "submitters": [
    {
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "declined_at": "",
      "documents": [],
      "email": "signer@example.com",
      "external_id": "",
      "id": "3001",
      "metadata": {},
      "name": "Jordan Smith",
      "opened_at": "",
      "phone": "",
      "role": "First Party",
      "sent_at": "2026-10-12T10:01:00.000Z",
      "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
      "slug": "pAMimKcyrLjqVt",
      "status": "sent",
      "submission_id": "2001",
      "template": {
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "uuid": "884d545b",
      "values": [
        {
          "field": "Full Name",
          "value": "Jordan Smith"
        }
      ]
    }
  ]
}
```

### List submissions

List signature requests, newest first, with each one's status and signers. Filter by template, status, signer name, email or phone, template folder, or archived state.

**Inputs**

- Template (`template_id`, text): Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
- Status (`status`, text): Only submissions with this status. One of: `pending` (Pending (waiting on a signer)), `completed`, `declined`, `expired`.
- Signer contains (`search`, text): Part of a signer's name, email or phone number.
- Template folder (`template_folder`, text): Only submissions of templates in this folder.
- Archived (`archive_filter`, text): Whether to include archived submissions. One of: `all` (Active and archived), `active` (Active only), `archived` (Archived only). Default: `all`.
- Number of results (`max_results`, number): How many to return, newest first (up to 500). From 1 to 500. Default: `25`.
- Continue after (`after`, text): To read the next, older page, the 'next_cursor' a previous run of this action returned.

**Outputs**

- `count` (number): How many submissions were returned
- `has_more` (true/false): Whether older records remain
- `next_cursor` (text): Pass as 'Continue after' to read the next, older records
- `submissions` (list): The submissions

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_cursor": "",
  "submissions": [
    {
      "archived": false,
      "archived_at": "",
      "audit_log_url": "",
      "combined_document_url": "",
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "created_by": {
        "email": "alex@example.com",
        "id": "1",
        "name": "Alex Doe"
      },
      "documents": [],
      "events": [
        {
          "event_timestamp": "2026-10-12T10:01:00.000Z",
          "event_type": "send_email",
          "id": "4001",
          "submitter_id": "3001"
        }
      ],
      "expire_at": "",
      "id": "2001",
      "name": "Service Agreement - Jordan Smith",
      "slug": "VyL4szTwYoSvXq",
      "source": "api",
      "status": "pending",
      "submitters": [
        {
          "completed_at": "",
          "created_at": "2026-10-12T10:01:00.000Z",
          "declined_at": "",
          "documents": [],
          "email": "signer@example.com",
          "external_id": "",
          "id": "3001",
          "metadata": {},
          "name": "Jordan Smith",
          "opened_at": "",
          "phone": "",
          "role": "First Party",
          "sent_at": "2026-10-12T10:01:00.000Z",
          "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
          "slug": "pAMimKcyrLjqVt",
          "status": "sent",
          "submission_id": "2001",
          "template": {
            "id": "1001",
            "name": "Service Agreement"
          },
          "updated_at": "2026-10-12T10:01:00.000Z",
          "uuid": "884d545b",
          "values": [
            {
              "field": "Full Name",
              "value": "Jordan Smith"
            }
          ]
        }
      ],
      "submitters_order": "preserved",
      "template": {
        "external_id": "",
        "folder_name": "Default",
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "variables": {}
    }
  ]
}
```

### List templates

List document templates, newest first, with their signer roles and field names. Filter by name, folder or external id, or list archived templates instead of active ones.

**Inputs**

- Name contains (`search`, text): Only templates whose name contains this text.
- Folder (`folder`, text): Only templates in the folder with this name.
- External id (`external_id`, text): Only the template with this external id.
- Archived templates only (`archived_only`, true/false): List archived templates instead of active ones. Default: `false`.
- Shared with Test Mode (`shared_with_test_mode`, true/false): With a Test Mode key, list the production templates shared into Test Mode. Default: `false`.
- Number of results (`max_results`, number): How many to return, newest first (up to 500). From 1 to 500. Default: `25`.
- Continue after (`after`, text): To read the next, older page, the 'next_cursor' a previous run of this action returned.

**Outputs**

- `count` (number): How many templates were returned
- `has_more` (true/false): Whether older records remain
- `next_cursor` (text): Pass as 'Continue after' to read the next, older records
- `templates` (list): The templates

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_cursor": "",
  "templates": [
    {
      "archived": false,
      "archived_at": "",
      "author": {
        "email": "alex@example.com",
        "id": "1",
        "name": "Alex Doe"
      },
      "created_at": "2026-10-12T10:00:00.000Z",
      "documents": [
        {
          "filename": "service-agreement",
          "id": "5001",
          "preview_image_url": "https://docuseal.com/file/hash/0.jpg",
          "url": "https://docuseal.com/file/hash/service-agreement.pdf",
          "uuid": "d94e615f"
        }
      ],
      "external_id": "",
      "field_names": [
        "Full Name",
        "Signature"
      ],
      "fields": [
        {
          "name": "Full Name",
          "required": true,
          "role": "First Party",
          "type": "text",
          "uuid": "594bdf04"
        },
        {
          "name": "Signature",
          "required": true,
          "role": "First Party",
          "type": "signature",
          "uuid": "a1b2c3d4"
        }
      ],
      "folder_id": "1",
      "folder_name": "Default",
      "id": "1001",
      "name": "Service Agreement",
      "roles": [
        "First Party"
      ],
      "shared_link": true,
      "slug": "iRgjDX7WDK6BRo",
      "source": "api",
      "updated_at": "2026-10-12T10:00:00.000Z"
    }
  ]
}
```

### Merge templates

Combine two or more templates, in order, into one new template. The originals are left as they are.

**Inputs**

- Templates (`template_ids`, list, required): The templates to combine, at least two, in the order their documents should appear.
- Template name (`name`, text): The new template's name.
- Folder (`folder_name`, text): The folder to put the template in. It is created if it is new.
- External id (`external_id`, text): Your own id for the template, such as one from your app.
- Public signing link (`shared_link`, true/false): Let anyone with the template's link fill and sign it. Default: `true`.
- Signer roles (`roles`, list): Role names for the merged template, replacing the originals' roles by position.

**Outputs**

- `archived` (true/false): Whether the template is archived
- `archived_at` (text): When it was archived, or empty
- `author` (object): Who created it
- `created_at` (text): When it was created
- `documents` (list): The template's documents
- `external_id` (text): Your own id for the template, if set
- `field_names` (list): Field names, the keys a signer's 'values' can use
- `fields` (list): Fillable fields
- `folder_id` (text): Folder id
- `folder_name` (text): Folder name
- `id` (text): Template id
- `name` (text): Template name
- `roles` (list): Signer role names, such as 'First Party'
- `shared_link` (true/false): Whether its public signing link is on
- `slug` (text): Template slug, used in its public link
- `source` (text): How it was created: native, api, embed or mcp
- `updated_at` (text): When it was last changed

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "author": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "created_at": "2026-10-12T10:00:00.000Z",
  "documents": [
    {
      "filename": "service-agreement",
      "id": "5001",
      "preview_image_url": "https://docuseal.com/file/hash/0.jpg",
      "url": "https://docuseal.com/file/hash/service-agreement.pdf",
      "uuid": "d94e615f"
    }
  ],
  "external_id": "",
  "field_names": [
    "Full Name",
    "Signature"
  ],
  "fields": [
    {
      "name": "Full Name",
      "required": true,
      "role": "First Party",
      "type": "text",
      "uuid": "594bdf04"
    },
    {
      "name": "Signature",
      "required": true,
      "role": "First Party",
      "type": "signature",
      "uuid": "a1b2c3d4"
    }
  ],
  "folder_id": "1",
  "folder_name": "Default",
  "id": "1001",
  "name": "Service Agreement",
  "roles": [
    "First Party"
  ],
  "shared_link": true,
  "slug": "iRgjDX7WDK6BRo",
  "source": "api",
  "updated_at": "2026-10-12T10:00:00.000Z"
}
```

### Send HTML document for signature

Send a one-off document written in HTML for signature, without saving a template first.

**Inputs**

- HTML (`html`, text, required): The document's HTML. Place fields with DocuSeal's field tags, such as <text-field name="Full Name" role="First Party"></text-field> and <signature-field name="Signature" role="First Party"></signature-field>. See https://www.docuseal.com/guides/create-pdf-document-fillable-form-with-html-api
- Signers (`submitters`, list, required): Who signs, one object per signer. 'role' must match a role on the document (such as 'First Party'); add 'email', and optionally 'name', 'phone' (+14155550123), 'values' to pre-fill fields by name, 'external_id', 'metadata', 'send_email' or 'completed' (true signs for them via the API).
- Document name (`document_name`, text): The name the document is shown under.
- Submission name (`name`, text): A name for the signature request.
- Page size (`size`, text): The paper size the HTML is laid out on. One of: `Letter` (Letter (8.5 x 11 in)), `Legal`, `Tabloid`, `Ledger`, `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`. Default: `Letter`.
- Page header HTML (`html_header`, text): HTML repeated at the top of every page.
- Page footer HTML (`html_footer`, text): HTML repeated at the bottom of every page.
- Email the signers (`send_email`, true/false): Email each signer their invitation. Turn off to share the signing links yourself - each signer's 'signing_url' is returned. Default: `true`.
- Text the signers (`send_sms`, true/false): Also send the invitation by SMS to signers with a phone number. Default: `false`.
- Signing order (`order`, text): Whether signers are invited one after another or all at once. One of: `preserved` (One after another, in the order listed), `random` (Everyone at once). Default: `preserved`.
- Expires at (`expire_at`, date and time): After this moment the request can no longer be signed.
- Email subject (`message_subject`, text): A custom subject for the invitation email.
- Email message (`message_body`, text): A custom invitation email body. It can use {{template.name}}, {{submission.name}}, {{submitter.link}} and {{account.name}}; include {{submitter.link}} so the signer can open the document.
- Reply-to email (`reply_to`, text): The address signers' replies to the invitation go to.
- BCC the signed copy to (`bcc_completed`, text): An email address that gets a copy of the signed documents.
- Redirect after signing (`completed_redirect_url`, text): A web page to send signers to once they have signed.

**Outputs**

- `count` (number): How many signers
- `created_at` (text): When it was created
- `expire_at` (text): When it expires, or empty
- `name` (text): Submission name
- `source` (text): How it was created
- `status` (text): pending, completed, declined or expired
- `submission_id` (text): The new submission's id
- `submitters` (list): The signers, each with a signing link
- `submitters_order` (text): preserved or random

**Example output**

```json
{
  "count": 1,
  "created_at": "2026-10-12T10:01:00.000Z",
  "expire_at": "",
  "name": "Service Agreement - Jordan Smith",
  "source": "api",
  "status": "pending",
  "submission_id": "2001",
  "submitters": [
    {
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "declined_at": "",
      "documents": [],
      "email": "signer@example.com",
      "external_id": "",
      "id": "3001",
      "metadata": {},
      "name": "Jordan Smith",
      "opened_at": "",
      "phone": "",
      "role": "First Party",
      "sent_at": "2026-10-12T10:01:00.000Z",
      "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
      "slug": "pAMimKcyrLjqVt",
      "status": "sent",
      "submission_id": "2001",
      "template": {
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "uuid": "884d545b",
      "values": [
        {
          "field": "Full Name",
          "value": "Jordan Smith"
        }
      ]
    }
  ],
  "submitters_order": "preserved"
}
```

### Send PDF for signature

Send a one-off PDF for signature, without saving a template first. Fields come from {{...}} text tags in the PDF or from the Fields list.

**Inputs**

- PDF (`file`, text, required): Upload a PDF, or give a public link to one or its base64 content. Place fields with text tags in the PDF, such as {{Full Name;role=First Party}} or {{Sign here;type=signature}}, or with 'Fields'.
- Document name (`document_name`, text, required): The name the document is shown under.
- Signers (`submitters`, list, required): Who signs, one object per signer. 'role' must match a role on the document (such as 'First Party'); add 'email', and optionally 'name', 'phone' (+14155550123), 'values' to pre-fill fields by name, 'external_id', 'metadata', 'send_email' or 'completed' (true signs for them via the API).
- Fields (`fields`, list): Advanced: fields to place on the PDF when it has no text tags, each like {"name": "Signature", "type": "signature", "role": "First Party", "areas": [{"x": 0.1, "y": 0.8, "w": 0.3, "h": 0.05, "page": 1}]}. Positions are fractions of the page.
- Submission name (`name`, text): A name for the signature request.
- Email the signers (`send_email`, true/false): Email each signer their invitation. Turn off to share the signing links yourself - each signer's 'signing_url' is returned. Default: `true`.
- Text the signers (`send_sms`, true/false): Also send the invitation by SMS to signers with a phone number. Default: `false`.
- Signing order (`order`, text): Whether signers are invited one after another or all at once. One of: `preserved` (One after another, in the order listed), `random` (Everyone at once). Default: `preserved`.
- Expires at (`expire_at`, date and time): After this moment the request can no longer be signed.
- Email subject (`message_subject`, text): A custom subject for the invitation email.
- Email message (`message_body`, text): A custom invitation email body. It can use {{template.name}}, {{submission.name}}, {{submitter.link}} and {{account.name}}; include {{submitter.link}} so the signer can open the document.
- Reply-to email (`reply_to`, text): The address signers' replies to the invitation go to.
- BCC the signed copy to (`bcc_completed`, text): An email address that gets a copy of the signed documents.
- Redirect after signing (`completed_redirect_url`, text): A web page to send signers to once they have signed.
- Flatten the PDF (`flatten`, true/false): Remove the PDF's own form fields, keeping only DocuSeal's. Default: `false`.
- Remove text tags (`remove_tags`, true/false): Erase the {{...}} text tags from the PDF once fields are placed. Default: `true`.

**Outputs**

- `count` (number): How many signers
- `created_at` (text): When it was created
- `expire_at` (text): When it expires, or empty
- `name` (text): Submission name
- `source` (text): How it was created
- `status` (text): pending, completed, declined or expired
- `submission_id` (text): The new submission's id
- `submitters` (list): The signers, each with a signing link
- `submitters_order` (text): preserved or random

**Example output**

```json
{
  "count": 1,
  "created_at": "2026-10-12T10:01:00.000Z",
  "expire_at": "",
  "name": "Service Agreement - Jordan Smith",
  "source": "api",
  "status": "pending",
  "submission_id": "2001",
  "submitters": [
    {
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "declined_at": "",
      "documents": [],
      "email": "signer@example.com",
      "external_id": "",
      "id": "3001",
      "metadata": {},
      "name": "Jordan Smith",
      "opened_at": "",
      "phone": "",
      "role": "First Party",
      "sent_at": "2026-10-12T10:01:00.000Z",
      "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
      "slug": "pAMimKcyrLjqVt",
      "status": "sent",
      "submission_id": "2001",
      "template": {
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "uuid": "884d545b",
      "values": [
        {
          "field": "Full Name",
          "value": "Jordan Smith"
        }
      ]
    }
  ],
  "submitters_order": "preserved"
}
```

### Send template for signature

Send a template out for signature to one or more signers, each in a role, optionally pre-filling their fields. Returns the new submission's id and each signer's signing link.

**Inputs**

- Template (`template_id`, text, required): Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
- Signers (`submitters`, list, required): Who signs, one object per signer. 'role' must match a role on the document (such as 'First Party'); add 'email', and optionally 'name', 'phone' (+14155550123), 'values' to pre-fill fields by name, 'external_id', 'metadata', 'send_email' or 'completed' (true signs for them via the API).
- Email the signers (`send_email`, true/false): Email each signer their invitation. Turn off to share the signing links yourself - each signer's 'signing_url' is returned. Default: `true`.
- Text the signers (`send_sms`, true/false): Also send the invitation by SMS to signers with a phone number. Default: `false`.
- Signing order (`order`, text): Whether signers are invited one after another or all at once. One of: `preserved` (One after another, in the order listed), `random` (Everyone at once). Default: `preserved`.
- Expires at (`expire_at`, date and time): After this moment the request can no longer be signed.
- Email subject (`message_subject`, text): A custom subject for the invitation email.
- Email message (`message_body`, text): A custom invitation email body. It can use {{template.name}}, {{submission.name}}, {{submitter.link}} and {{account.name}}; include {{submitter.link}} so the signer can open the document.
- Reply-to email (`reply_to`, text): The address signers' replies to the invitation go to.
- BCC the signed copy to (`bcc_completed`, text): An email address that gets a copy of the signed documents.
- Redirect after signing (`completed_redirect_url`, text): A web page to send signers to once they have signed.
- Template variables (`variables`, object): Values for [[variable]] placeholders in the template, by name.

**Outputs**

- `count` (number): How many signers
- `submission_id` (text): The new submission's id
- `submitters` (list): The signers, each with a signing link

**Example output**

```json
{
  "count": 1,
  "submission_id": "2001",
  "submitters": [
    {
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "declined_at": "",
      "documents": [],
      "email": "signer@example.com",
      "external_id": "",
      "id": "3001",
      "metadata": {},
      "name": "Jordan Smith",
      "opened_at": "",
      "phone": "",
      "role": "First Party",
      "sent_at": "2026-10-12T10:01:00.000Z",
      "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
      "slug": "pAMimKcyrLjqVt",
      "status": "sent",
      "submission_id": "2001",
      "template": {
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "uuid": "884d545b",
      "values": [
        {
          "field": "Full Name",
          "value": "Jordan Smith"
        }
      ]
    }
  ]
}
```

### Send template to email addresses

Send a one-signer template to each email address as its own submission - the quickest way to collect the same signature from several people.

**Inputs**

- Template (`template_id`, text, required): Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
- Email addresses (`emails`, list, required): Each address gets its own copy to sign.
- Email the signers (`send_email`, true/false): Email each signer their invitation. Turn off to share the signing links yourself - each signer's 'signing_url' is returned. Default: `true`.
- Email subject (`message_subject`, text): A custom subject for the invitation email.
- Email message (`message_body`, text): A custom invitation email body. It can use {{template.name}}, {{submission.name}}, {{submitter.link}} and {{account.name}}; include {{submitter.link}} so the signer can open the document.

**Outputs**

- `count` (number): How many submissions were created
- `submission_ids` (list): One new submission per email address
- `submitters` (list): The signers, each with a signing link

**Example output**

```json
{
  "count": 1,
  "submission_ids": [
    "2001"
  ],
  "submitters": [
    {
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "declined_at": "",
      "documents": [],
      "email": "signer@example.com",
      "external_id": "",
      "id": "3001",
      "metadata": {},
      "name": "Jordan Smith",
      "opened_at": "",
      "phone": "",
      "role": "First Party",
      "sent_at": "2026-10-12T10:01:00.000Z",
      "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
      "slug": "pAMimKcyrLjqVt",
      "status": "sent",
      "submission_id": "2001",
      "template": {
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "uuid": "884d545b",
      "values": [
        {
          "field": "Full Name",
          "value": "Jordan Smith"
        }
      ]
    }
  ]
}
```

### Update signer

Change a signer's name, email or phone, pre-fill field values, re-send their invitation, or sign for them via the API. A signer who has completed or declined cannot be changed.

**Inputs**

- Signer (`submitter_id`, text, required): The signer's (submitter's) id. 'Get submission' and 'List signers' return it for each signer.
- Name (`name`, text): Leave empty to keep it.
- Email (`email`, text): Leave empty to keep it.
- Phone (`phone`, text): In international format, such as +14155550123.
- Field values (`values`, object): Values to pre-fill, by field name. They are merged into what is already filled.
- External id (`external_id`, text): Your own id for the signer.
- Metadata (`metadata`, object): Your own key-value data stored on the signer.
- Re-send the invitation email (`send_email`, true/false): Email the signer their invitation again. Default: `false`.
- Mark as signed (`completed`, true/false): Complete the signer's part via the API, using the values given. This cannot be undone. Default: `false`.
- Email subject (`message_subject`, text): A custom subject for the invitation email.
- Email message (`message_body`, text): A custom invitation email body. It can use {{template.name}}, {{submission.name}}, {{submitter.link}} and {{account.name}}; include {{submitter.link}} so the signer can open the document.
- Reply-to email (`reply_to`, text): The address signers' replies to the invitation go to.
- Redirect after signing (`completed_redirect_url`, text): A web page to send signers to once they have signed.

**Outputs**

- `completed_at` (text): When they signed, or empty
- `created_at` (text): When the signer was added
- `declined_at` (text): When they declined, or empty
- `documents` (list): The signer's documents
- `email` (text): Signer email
- `external_id` (text): Your own id for the signer, if set
- `id` (text): Submitter (signer) id
- `metadata` (object): Your own metadata
- `name` (text): Signer name
- `opened_at` (text): When they opened it, or empty
- `phone` (text): Signer phone
- `role` (text): The template role they sign as
- `sent_at` (text): When the invitation was sent, or empty
- `signing_url` (text): The signer's signing link, when returned
- `slug` (text): Signer slug, used in the signing link
- `status` (text): awaiting, sent, opened, completed or declined
- `submission_id` (text): The submission the signer belongs to
- `template` (object): The template, when returned
- `updated_at` (text): When the signer last changed
- `uuid` (text): Signer uuid
- `values` (list): Filled-in field values

**Example output**

```json
{
  "completed_at": "",
  "created_at": "2026-10-12T10:01:00.000Z",
  "declined_at": "",
  "documents": [],
  "email": "signer@example.com",
  "external_id": "",
  "id": "3001",
  "metadata": {},
  "name": "Jordan Smith",
  "opened_at": "",
  "phone": "",
  "role": "First Party",
  "sent_at": "2026-10-12T10:01:00.000Z",
  "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
  "slug": "pAMimKcyrLjqVt",
  "status": "sent",
  "submission_id": "2001",
  "template": {
    "id": "1001",
    "name": "Service Agreement"
  },
  "updated_at": "2026-10-12T10:01:00.000Z",
  "uuid": "884d545b",
  "values": [
    {
      "field": "Full Name",
      "value": "Jordan Smith"
    }
  ]
}
```

### Update submission

Rename a signature request, change or remove its expiry, or archive or restore it.

**Inputs**

- Submission (`submission_id`, text, required): The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.
- New name (`name`, text): Leave empty to keep the current name.
- Expires at (`expire_at`, date and time): A new moment after which it can no longer be signed.
- Remove the expiry (`clear_expiration`, true/false): Let it be signed at any time. Default: `false`.
- Archive (`archive`, text): Archive the submission, restore it from the archive, or leave it. One of: `keep` (Leave as it is), `archive`, `unarchive` (Restore from archive). Default: `keep`.

**Outputs**

- `archived` (true/false): Whether it is archived
- `archived_at` (text): When it was archived, or empty
- `audit_log_url` (text): Audit log PDF link, once completed
- `combined_document_url` (text): Combined signed PDF link, once completed
- `completed_at` (text): When everyone had signed, or empty
- `created_at` (text): When it was created
- `created_by` (object): Who sent it
- `documents` (list): Its documents (signed once completed)
- `events` (list): What has happened to it, oldest first
- `expire_at` (text): When it expires, or empty
- `id` (text): Submission id
- `name` (text): Submission name, or empty
- `slug` (text): Submission slug
- `source` (text): How it was created, such as api, invite or link
- `status` (text): pending, completed, declined or expired
- `submitters` (list): The signers
- `submitters_order` (text): preserved or random
- `template` (object): The template it was sent from
- `updated_at` (text): When it last changed
- `variables` (object): Template variables used

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "audit_log_url": "",
  "combined_document_url": "",
  "completed_at": "",
  "created_at": "2026-10-12T10:01:00.000Z",
  "created_by": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "documents": [],
  "events": [
    {
      "event_timestamp": "2026-10-12T10:01:00.000Z",
      "event_type": "send_email",
      "id": "4001",
      "submitter_id": "3001"
    }
  ],
  "expire_at": "",
  "id": "2001",
  "name": "Service Agreement - Jordan Smith",
  "slug": "VyL4szTwYoSvXq",
  "source": "api",
  "status": "pending",
  "submitters": [
    {
      "completed_at": "",
      "created_at": "2026-10-12T10:01:00.000Z",
      "declined_at": "",
      "documents": [],
      "email": "signer@example.com",
      "external_id": "",
      "id": "3001",
      "metadata": {},
      "name": "Jordan Smith",
      "opened_at": "",
      "phone": "",
      "role": "First Party",
      "sent_at": "2026-10-12T10:01:00.000Z",
      "signing_url": "https://docuseal.com/s/pAMimKcyrLjqVt",
      "slug": "pAMimKcyrLjqVt",
      "status": "sent",
      "submission_id": "2001",
      "template": {
        "id": "1001",
        "name": "Service Agreement"
      },
      "updated_at": "2026-10-12T10:01:00.000Z",
      "uuid": "884d545b",
      "values": [
        {
          "field": "Full Name",
          "value": "Jordan Smith"
        }
      ]
    }
  ],
  "submitters_order": "preserved",
  "template": {
    "external_id": "",
    "folder_name": "Default",
    "id": "1001",
    "name": "Service Agreement"
  },
  "updated_at": "2026-10-12T10:01:00.000Z",
  "variables": {}
}
```

### Update template

Rename a template, move it to another folder, rename or add signer roles, or archive or restore it. Returns the whole updated template.

**Inputs**

- Template (`template_id`, text, required): Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
- New name (`name`, text): Leave empty to keep the current name.
- Move to folder (`folder_name`, text): Leave empty to keep it where it is.
- Signer roles (`roles`, list): Role names, in order. Existing roles are renamed by position and extra names are added as new roles.
- Archive (`archive`, text): Archive the template, restore it from the archive, or leave it. One of: `keep` (Leave as it is), `archive`, `unarchive` (Restore from archive). Default: `keep`.

**Outputs**

- `archived` (true/false): Whether the template is archived
- `archived_at` (text): When it was archived, or empty
- `author` (object): Who created it
- `created_at` (text): When it was created
- `documents` (list): The template's documents
- `external_id` (text): Your own id for the template, if set
- `field_names` (list): Field names, the keys a signer's 'values' can use
- `fields` (list): Fillable fields
- `folder_id` (text): Folder id
- `folder_name` (text): Folder name
- `id` (text): Template id
- `name` (text): Template name
- `roles` (list): Signer role names, such as 'First Party'
- `shared_link` (true/false): Whether its public signing link is on
- `slug` (text): Template slug, used in its public link
- `source` (text): How it was created: native, api, embed or mcp
- `updated_at` (text): When it was last changed

**Example output**

```json
{
  "archived": false,
  "archived_at": "",
  "author": {
    "email": "alex@example.com",
    "id": "1",
    "name": "Alex Doe"
  },
  "created_at": "2026-10-12T10:00:00.000Z",
  "documents": [
    {
      "filename": "service-agreement",
      "id": "5001",
      "preview_image_url": "https://docuseal.com/file/hash/0.jpg",
      "url": "https://docuseal.com/file/hash/service-agreement.pdf",
      "uuid": "d94e615f"
    }
  ],
  "external_id": "",
  "field_names": [
    "Full Name",
    "Signature"
  ],
  "fields": [
    {
      "name": "Full Name",
      "required": true,
      "role": "First Party",
      "type": "text",
      "uuid": "594bdf04"
    },
    {
      "name": "Signature",
      "required": true,
      "role": "First Party",
      "type": "signature",
      "uuid": "a1b2c3d4"
    }
  ],
  "folder_id": "1",
  "folder_name": "Default",
  "id": "1001",
  "name": "Service Agreement",
  "roles": [
    "First Party"
  ],
  "shared_link": true,
  "slug": "iRgjDX7WDK6BRo",
  "source": "api",
  "updated_at": "2026-10-12T10:00:00.000Z"
}
```
