DocuSeal

App · 20 actions

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.

Actions

ActionWhat it does
Archive submissionArchive a signature request so signers can no longer open it.
Archive templateArchive a template so it can no longer be sent.
Clone templateCopy a template with its fields and documents.
Create template from HTMLCreate a reusable template from HTML, placing fillable and signature fields with DocuSeal's field tags.
Create template from PDFCreate a reusable template from a PDF.
Get signerGet one signer: their status, every value they filled in, their documents and the template.
Get submissionGet one signature request: its status, each signer's status and filled-in values, its documents, the audit log link and its event history.
Get submission documentsGet download links for a submission's documents - signed once it is completed, partly filled before.
Get templateGet one template with its signer roles, every field (name, type, which role fills it) and its documents.
List signersList signers (submitters) across submissions, newest first, with their status and filled-in values.
List submissionsList signature requests, newest first, with each one's status and signers.
List templatesList document templates, newest first, with their signer roles and field names.
Merge templatesCombine two or more templates, in order, into one new template.
Send HTML document for signatureSend a one-off document written in HTML for signature, without saving a template first.
Send PDF for signatureSend a one-off PDF for signature, without saving a template first.
Send template for signatureSend a template out for signature to one or more signers, each in a role, optionally pre-filling their fields.
Send template to email addressesSend a one-signer template to each email address as its own submission - the quickest way to collect the same signature from several people.
Update signerChange a signer's name, email or phone, pre-fill field values, re-send their invitation, or sign for them via the API.
Update submissionRename a signature request, change or remove its expiry, or archive or restore it.
Update templateRename a template, move it to another folder, rename or add signer roles, or archive or restore it.

Archive submission

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

Inputs

Submissionsubmission_idtextRequired
The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.

Outputs

archivedtrue/false
Always true
archived_attext
When it was archived
idtext
The archived record's id
Example output
{
  "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

Templatetemplate_idtextRequired
Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.

Outputs

archivedtrue/false
Always true
archived_attext
When it was archived
idtext
The archived record's id
Example output
{
  "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

Templatetemplate_idtextRequired
Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
Name of the copynametext
Leave empty for '<name> (Clone)'.
Folderfolder_nametext
The folder to put the template in. It is created if it is new.
External idexternal_idtext
Your own id for the template, such as one from your app.

Outputs

archivedtrue/false
Whether the template is archived
archived_attext
When it was archived, or empty
authorobject
Who created it
created_attext
When it was created
documentslist
The template's documents
external_idtext
Your own id for the template, if set
field_nameslist
Field names, the keys a signer's 'values' can use
fieldslist
Fillable fields
folder_idtext
Folder id
folder_nametext
Folder name
idtext
Template id
nametext
Template name
roleslist
Signer role names, such as 'First Party'
shared_linktrue/false
Whether its public signing link is on
slugtext
Template slug, used in its public link
sourcetext
How it was created: native, api, embed or mcp
updated_attext
When it was last changed
Example output
{
  "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

HTMLhtmltextRequired
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 namenametext
The new template's name.
Page sizesizetext
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 HTMLhtml_headertext
HTML repeated at the top of every page.
Page footer HTMLhtml_footertext
HTML repeated at the bottom of every page.
Folderfolder_nametext
The folder to put the template in. It is created if it is new.
External idexternal_idtext
Your own id for the template, such as one from your app.
Public signing linkshared_linktrue/false
Let anyone with the template's link fill and sign it.Default: true.

Outputs

archivedtrue/false
Whether the template is archived
archived_attext
When it was archived, or empty
authorobject
Who created it
created_attext
When it was created
documentslist
The template's documents
external_idtext
Your own id for the template, if set
field_nameslist
Field names, the keys a signer's 'values' can use
fieldslist
Fillable fields
folder_idtext
Folder id
folder_nametext
Folder name
idtext
Template id
nametext
Template name
roleslist
Signer role names, such as 'First Party'
shared_linktrue/false
Whether its public signing link is on
slugtext
Template slug, used in its public link
sourcetext
How it was created: native, api, embed or mcp
updated_attext
When it was last changed
Example output
{
  "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

PDFfiletextRequired
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 namedocument_nametextRequired
The name the document is shown under.
Template namenametext
The new template's name.
Fieldsfieldslist
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.
Folderfolder_nametext
The folder to put the template in. It is created if it is new.
External idexternal_idtext
Your own id for the template, such as one from your app.
Public signing linkshared_linktrue/false
Let anyone with the template's link fill and sign it.Default: true.
Flatten the PDFflattentrue/false
Remove the PDF's own form fields, keeping only DocuSeal's.Default: false.
Remove text tagsremove_tagstrue/false
Erase the {{...}} text tags from the PDF once fields are placed.Default: true.

Outputs

archivedtrue/false
Whether the template is archived
archived_attext
When it was archived, or empty
authorobject
Who created it
created_attext
When it was created
documentslist
The template's documents
external_idtext
Your own id for the template, if set
field_nameslist
Field names, the keys a signer's 'values' can use
fieldslist
Fillable fields
folder_idtext
Folder id
folder_nametext
Folder name
idtext
Template id
nametext
Template name
roleslist
Signer role names, such as 'First Party'
shared_linktrue/false
Whether its public signing link is on
slugtext
Template slug, used in its public link
sourcetext
How it was created: native, api, embed or mcp
updated_attext
When it was last changed
Example output
{
  "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

Signersubmitter_idtextRequired
The signer's (submitter's) id. 'Get submission' and 'List signers' return it for each signer.

Outputs

completed_attext
When they signed, or empty
created_attext
When the signer was added
declined_attext
When they declined, or empty
documentslist
The signer's documents
emailtext
Signer email
external_idtext
Your own id for the signer, if set
idtext
Submitter (signer) id
metadataobject
Your own metadata
nametext
Signer name
opened_attext
When they opened it, or empty
phonetext
Signer phone
roletext
The template role they sign as
sent_attext
When the invitation was sent, or empty
signing_urltext
The signer's signing link, when returned
slugtext
Signer slug, used in the signing link
statustext
awaiting, sent, opened, completed or declined
submission_idtext
The submission the signer belongs to
templateobject
The template, when returned
updated_attext
When the signer last changed
uuidtext
Signer uuid
valueslist
Filled-in field values
Example output
{
  "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

Submissionsubmission_idtextRequired
The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.

Outputs

archivedtrue/false
Whether it is archived
archived_attext
When it was archived, or empty
audit_log_urltext
Audit log PDF link, once completed
combined_document_urltext
Combined signed PDF link, once completed
completed_attext
When everyone had signed, or empty
created_attext
When it was created
created_byobject
Who sent it
documentslist
Its documents (signed once completed)
eventslist
What has happened to it, oldest first
expire_attext
When it expires, or empty
idtext
Submission id
nametext
Submission name, or empty
slugtext
Submission slug
sourcetext
How it was created, such as api, invite or link
statustext
pending, completed, declined or expired
submitterslist
The signers
submitters_ordertext
preserved or random
templateobject
The template it was sent from
updated_attext
When it last changed
variablesobject
Template variables used
Example output
{
  "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

Submissionsubmission_idtextRequired
The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.
Merge into one PDFmergetrue/false
Combine several documents into a single PDF.Default: false.

Outputs

countnumber
How many documents
documentslist
Documents with expiring download links
submission_idtext
Submission id
Example output
{
  "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

Templatetemplate_idtextRequired
Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.

Outputs

archivedtrue/false
Whether the template is archived
archived_attext
When it was archived, or empty
authorobject
Who created it
created_attext
When it was created
documentslist
The template's documents
external_idtext
Your own id for the template, if set
field_nameslist
Field names, the keys a signer's 'values' can use
fieldslist
Fillable fields
folder_idtext
Folder id
folder_nametext
Folder name
idtext
Template id
nametext
Template name
roleslist
Signer role names, such as 'First Party'
shared_linktrue/false
Whether its public signing link is on
slugtext
Template slug, used in its public link
sourcetext
How it was created: native, api, embed or mcp
updated_attext
When it was last changed
Example output
{
  "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

Submissionsubmission_idtext
Only the signers of this submission (its id or link).
Name, email or phone containssearchtext
Part of a signer's name, email or phone number.
External idexternal_idtext
Only the signer with this external id.
Signed aftercompleted_afterdate and time
Only signers who completed after this moment.
Signed beforecompleted_beforedate and time
Only signers who completed before this moment.
Number of resultsmax_resultsnumber
How many to return, newest first (up to 500).From 1 to 500. Default: 25.
Continue afteraftertext
To read the next, older page, the 'next_cursor' a previous run of this action returned.

Outputs

countnumber
How many signers were returned
has_moretrue/false
Whether older records remain
next_cursortext
Pass as 'Continue after' to read the next, older records
submitterslist
The signers
Example output
{
  "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

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

Outputs

countnumber
How many submissions were returned
has_moretrue/false
Whether older records remain
next_cursortext
Pass as 'Continue after' to read the next, older records
submissionslist
The submissions
Example output
{
  "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 containssearchtext
Only templates whose name contains this text.
Folderfoldertext
Only templates in the folder with this name.
External idexternal_idtext
Only the template with this external id.
Archived templates onlyarchived_onlytrue/false
List archived templates instead of active ones.Default: false.
Shared with Test Modeshared_with_test_modetrue/false
With a Test Mode key, list the production templates shared into Test Mode.Default: false.
Number of resultsmax_resultsnumber
How many to return, newest first (up to 500).From 1 to 500. Default: 25.
Continue afteraftertext
To read the next, older page, the 'next_cursor' a previous run of this action returned.

Outputs

countnumber
How many templates were returned
has_moretrue/false
Whether older records remain
next_cursortext
Pass as 'Continue after' to read the next, older records
templateslist
The templates
Example output
{
  "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

Templatestemplate_idslistRequired
The templates to combine, at least two, in the order their documents should appear.
Template namenametext
The new template's name.
Folderfolder_nametext
The folder to put the template in. It is created if it is new.
External idexternal_idtext
Your own id for the template, such as one from your app.
Public signing linkshared_linktrue/false
Let anyone with the template's link fill and sign it.Default: true.
Signer rolesroleslist
Role names for the merged template, replacing the originals' roles by position.

Outputs

archivedtrue/false
Whether the template is archived
archived_attext
When it was archived, or empty
authorobject
Who created it
created_attext
When it was created
documentslist
The template's documents
external_idtext
Your own id for the template, if set
field_nameslist
Field names, the keys a signer's 'values' can use
fieldslist
Fillable fields
folder_idtext
Folder id
folder_nametext
Folder name
idtext
Template id
nametext
Template name
roleslist
Signer role names, such as 'First Party'
shared_linktrue/false
Whether its public signing link is on
slugtext
Template slug, used in its public link
sourcetext
How it was created: native, api, embed or mcp
updated_attext
When it was last changed
Example output
{
  "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

HTMLhtmltextRequired
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
SignerssubmitterslistRequired
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 namedocument_nametext
The name the document is shown under.
Submission namenametext
A name for the signature request.
Page sizesizetext
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 HTMLhtml_headertext
HTML repeated at the top of every page.
Page footer HTMLhtml_footertext
HTML repeated at the bottom of every page.
Email the signerssend_emailtrue/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 signerssend_smstrue/false
Also send the invitation by SMS to signers with a phone number.Default: false.
Signing orderordertext
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 atexpire_atdate and time
After this moment the request can no longer be signed.
Email subjectmessage_subjecttext
A custom subject for the invitation email.
Email messagemessage_bodytext
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 emailreply_totext
The address signers' replies to the invitation go to.
BCC the signed copy tobcc_completedtext
An email address that gets a copy of the signed documents.
Redirect after signingcompleted_redirect_urltext
A web page to send signers to once they have signed.

Outputs

countnumber
How many signers
created_attext
When it was created
expire_attext
When it expires, or empty
nametext
Submission name
sourcetext
How it was created
statustext
pending, completed, declined or expired
submission_idtext
The new submission's id
submitterslist
The signers, each with a signing link
submitters_ordertext
preserved or random
Example output
{
  "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

PDFfiletextRequired
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 namedocument_nametextRequired
The name the document is shown under.
SignerssubmitterslistRequired
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).
Fieldsfieldslist
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 namenametext
A name for the signature request.
Email the signerssend_emailtrue/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 signerssend_smstrue/false
Also send the invitation by SMS to signers with a phone number.Default: false.
Signing orderordertext
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 atexpire_atdate and time
After this moment the request can no longer be signed.
Email subjectmessage_subjecttext
A custom subject for the invitation email.
Email messagemessage_bodytext
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 emailreply_totext
The address signers' replies to the invitation go to.
BCC the signed copy tobcc_completedtext
An email address that gets a copy of the signed documents.
Redirect after signingcompleted_redirect_urltext
A web page to send signers to once they have signed.
Flatten the PDFflattentrue/false
Remove the PDF's own form fields, keeping only DocuSeal's.Default: false.
Remove text tagsremove_tagstrue/false
Erase the {{...}} text tags from the PDF once fields are placed.Default: true.

Outputs

countnumber
How many signers
created_attext
When it was created
expire_attext
When it expires, or empty
nametext
Submission name
sourcetext
How it was created
statustext
pending, completed, declined or expired
submission_idtext
The new submission's id
submitterslist
The signers, each with a signing link
submitters_ordertext
preserved or random
Example output
{
  "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

Templatetemplate_idtextRequired
Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
SignerssubmitterslistRequired
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 signerssend_emailtrue/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 signerssend_smstrue/false
Also send the invitation by SMS to signers with a phone number.Default: false.
Signing orderordertext
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 atexpire_atdate and time
After this moment the request can no longer be signed.
Email subjectmessage_subjecttext
A custom subject for the invitation email.
Email messagemessage_bodytext
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 emailreply_totext
The address signers' replies to the invitation go to.
BCC the signed copy tobcc_completedtext
An email address that gets a copy of the signed documents.
Redirect after signingcompleted_redirect_urltext
A web page to send signers to once they have signed.
Template variablesvariablesobject
Values for [[variable]] placeholders in the template, by name.

Outputs

countnumber
How many signers
submission_idtext
The new submission's id
submitterslist
The signers, each with a signing link
Example output
{
  "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

Templatetemplate_idtextRequired
Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
Email addressesemailslistRequired
Each address gets its own copy to sign.
Email the signerssend_emailtrue/false
Email each signer their invitation. Turn off to share the signing links yourself - each signer's 'signing_url' is returned.Default: true.
Email subjectmessage_subjecttext
A custom subject for the invitation email.
Email messagemessage_bodytext
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

countnumber
How many submissions were created
submission_idslist
One new submission per email address
submitterslist
The signers, each with a signing link
Example output
{
  "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

Signersubmitter_idtextRequired
The signer's (submitter's) id. 'Get submission' and 'List signers' return it for each signer.
Namenametext
Leave empty to keep it.
Emailemailtext
Leave empty to keep it.
Phonephonetext
In international format, such as +14155550123.
Field valuesvaluesobject
Values to pre-fill, by field name. They are merged into what is already filled.
External idexternal_idtext
Your own id for the signer.
Metadatametadataobject
Your own key-value data stored on the signer.
Re-send the invitation emailsend_emailtrue/false
Email the signer their invitation again.Default: false.
Mark as signedcompletedtrue/false
Complete the signer's part via the API, using the values given. This cannot be undone.Default: false.
Email subjectmessage_subjecttext
A custom subject for the invitation email.
Email messagemessage_bodytext
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 emailreply_totext
The address signers' replies to the invitation go to.
Redirect after signingcompleted_redirect_urltext
A web page to send signers to once they have signed.

Outputs

completed_attext
When they signed, or empty
created_attext
When the signer was added
declined_attext
When they declined, or empty
documentslist
The signer's documents
emailtext
Signer email
external_idtext
Your own id for the signer, if set
idtext
Submitter (signer) id
metadataobject
Your own metadata
nametext
Signer name
opened_attext
When they opened it, or empty
phonetext
Signer phone
roletext
The template role they sign as
sent_attext
When the invitation was sent, or empty
signing_urltext
The signer's signing link, when returned
slugtext
Signer slug, used in the signing link
statustext
awaiting, sent, opened, completed or declined
submission_idtext
The submission the signer belongs to
templateobject
The template, when returned
updated_attext
When the signer last changed
uuidtext
Signer uuid
valueslist
Filled-in field values
Example output
{
  "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

Submissionsubmission_idtextRequired
The submission's id, or its link from DocuSeal such as https://docuseal.com/submissions/456. 'List submissions' finds one.
New namenametext
Leave empty to keep the current name.
Expires atexpire_atdate and time
A new moment after which it can no longer be signed.
Remove the expiryclear_expirationtrue/false
Let it be signed at any time.Default: false.
Archivearchivetext
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

archivedtrue/false
Whether it is archived
archived_attext
When it was archived, or empty
audit_log_urltext
Audit log PDF link, once completed
combined_document_urltext
Combined signed PDF link, once completed
completed_attext
When everyone had signed, or empty
created_attext
When it was created
created_byobject
Who sent it
documentslist
Its documents (signed once completed)
eventslist
What has happened to it, oldest first
expire_attext
When it expires, or empty
idtext
Submission id
nametext
Submission name, or empty
slugtext
Submission slug
sourcetext
How it was created, such as api, invite or link
statustext
pending, completed, declined or expired
submitterslist
The signers
submitters_ordertext
preserved or random
templateobject
The template it was sent from
updated_attext
When it last changed
variablesobject
Template variables used
Example output
{
  "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

Templatetemplate_idtextRequired
Pick a template, or enter its id or its link from DocuSeal, such as https://docuseal.com/templates/123.
New namenametext
Leave empty to keep the current name.
Move to folderfolder_nametext
Leave empty to keep it where it is.
Signer rolesroleslist
Role names, in order. Existing roles are renamed by position and extra names are added as new roles.
Archivearchivetext
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

archivedtrue/false
Whether the template is archived
archived_attext
When it was archived, or empty
authorobject
Who created it
created_attext
When it was created
documentslist
The template's documents
external_idtext
Your own id for the template, if set
field_nameslist
Field names, the keys a signer's 'values' can use
fieldslist
Fillable fields
folder_idtext
Folder id
folder_nametext
Folder name
idtext
Template id
nametext
Template name
roleslist
Signer role names, such as 'First Party'
shared_linktrue/false
Whether its public signing link is on
slugtext
Template slug, used in its public link
sourcetext
How it was created: native, api, embed or mcp
updated_attext
When it was last changed
Example output
{
  "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"
}

On this page