Automette docs
Signing

Signing API

Everything in this section can also be done from code, with the same API key as the rest of the API, or from an AI assistant connected through MCP.

Send a document

POST /api/v1/sign_requests creates a request and sends it. There are three ways to give the document:

From a signing template, with one signer for each role, in the template's order:

{
  "signing_template_id": "eae427f4279c4bc6a0d043ffe",
  "signers": [{ "name": "Ana Silva", "email": "ana@example.com" }]
}

From a file, with a signature page added for each signer:

{
  "title": "Service agreement",
  "file": { "url": "https://example.com/agreement.pdf" },
  "signers": [
    { "name": "Ana Silva", "email": "ana@example.com" },
    { "name": "Ben Okafor", "email": "ben@example.com" }
  ],
  "in_order": true
}

From a file, with fields placed by you. x, y, width and height are fractions of the page, measured from its top left corner. page starts at 1, and signer is the signer's position in the list, starting at 0.

{
  "file": { "name": "agreement.pdf", "content_base64": "JVBERi0x..." },
  "signers": [{ "name": "Ana Silva", "email": "ana@example.com" }],
  "fields": [
    { "signer": 0, "type": "signature",   "page": 2, "x": 0.1, "y": 0.78, "width": 0.3,  "height": 0.06 },
    { "signer": 0, "type": "date_signed", "page": 2, "x": 0.5, "y": 0.8,  "width": 0.18, "height": 0.03 }
  ]
}

The file can be a PDF or a Word file (.docx), up to 25 MB, given as an https url or as content_base64.

OptionDefault
titlethe file nameThe document's name in emails and in the app
messagenoneIncluded in the email
in_orderfalseEmail signers one after another. Files only; a template keeps its own order
expires_in_days301 to 365
sendtruefalse saves a draft to finish in the app
append_certificatetrue, or the template's settingPut the certificate of completion on the signed PDF's last page

Field types: signature, initials, date_signed, name, text, checkbox.

Check a request

GET /api/v1/sign_requests/{id} returns the request with each signer's status. When status is completed, signed_file_url is a link to the signed PDF and certificate_file_url a link to the certificate of completion on its own. Both work for an hour; ask again for fresh ones.

{
  "object": "sign_request",
  "id": "a8f509d586dc4979ab64c0123",
  "status": "completed",
  "signers": [
    { "id": "…", "name": "Ana Silva", "email": "ana@example.com", "order": 1, "status": "signed", "signed_at": "2026-10-29T07:12:03.000Z" }
  ],
  "signed_file_url": "https://…",
  "certificate_file_url": "https://…",
  "append_certificate": true,
  "signed_sha256": "…"
}

Other endpoints

EndpointDoes
GET /api/v1/sign_requestsLists requests, newest first. ?status=completed filters them
POST /api/v1/sign_requests/{id}/remindEmails one signer their link again. Body: { "signer_id": "…" }
POST /api/v1/sign_requests/{id}/voidCancels a sent request and tells the signers. Body: { "reason": "…" } (optional)
GET /api/v1/signing_templatesLists signing templates with their roles

From an AI assistant

Over MCP, the same actions are the tools list_signing_templates, send_for_signature, get_sign_request, list_sign_requests and cancel_sign_request.

Last updated on

On this page