Guide · Templates

E-signature template API

Define your NDA, employment contract, or lease once — with signer roles and pre-placed fields. Then send it to any signer with a single API call, no re-upload, no coordinate math.

How templates work

1

Create the template

Upload your PDF once, place fields visually or via API, define signer roles. Get back a template_id.

2

Instantiate an envelope

POST /v1/envelopes with your template_id and the actual signers for each role. Fields are pre-placed.

3

Send and track

Call /send — signing links are dispatched. Track via signer.signed and envelope.completed webhooks.

Creating a template

POST /v1/templates
# Multipart form-data: upload the PDF + define roles and fields
curl -X POST https://api.getsigned.app/v1/templates \
  -H "Authorization: Bearer $TOKEN" \
  -F "document=@nda.pdf;type=application/pdf" \
  -F 'name=Standard NDA' \
  -F 'roles=[
    {"id": "party_a", "label": "Disclosing Party", "routing_order": 1},
    {"id": "party_b", "label": "Receiving Party",  "routing_order": 2}
  ]' \
  -F 'fields=[
    {"role_id": "party_a", "type": "signature", "page": 3, "x": 120, "y": 680},
    {"role_id": "party_b", "type": "signature", "page": 3, "x": 380, "y": 680},
    {"role_id": "party_a", "type": "date",      "page": 3, "x": 120, "y": 720},
    {"role_id": "party_b", "type": "date",      "page": 3, "x": 380, "y": 720}
  ]'

# Response: { "template_id": "tpl_...", "name": "Standard NDA" }

Sending from a template

POST /v1/envelopes — from template
curl -X POST https://api.getsigned.app/v1/envelopes \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "tpl_...",
    "role_assignments": [
      {
        "role_id":  "party_a",
        "name":     "Acme Corp",
        "email":    "legal@acme.com"
      },
      {
        "role_id":  "party_b",
        "name":     "Jane Smith",
        "email":    "jane@client.io",
        "prefill":  { "date": "2026-07-01" }
      }
    ]
  }'

# Response: { "id": "env_...", "status": "draft" }
# Then POST /v1/envelopes/{id}/send to dispatch signing links.

Why use templates

Upload once, sign many times

Store the PDF and field layout in a template. Each signing request references the template ID instead of uploading the document again — saving bandwidth and eliminating re-configuration per envelope.

Pre-placed fields, no coordinate math per request

Field positions (page, x, y, width, height) are stored in the template. When you create an envelope from a template, the fields are already correctly placed — your API call only needs to supply the signer details.

Role-based signer slots

Templates define signer roles (e.g., "Tenant", "Landlord") rather than specific people. When you instantiate an envelope, you fill each role with the actual signer's name and email for that transaction.

Consistent, auditable documents

Every envelope created from the same template starts from the same original PDF hash. Any future dispute about the document's content starts from a known, verifiable baseline.

Frequently asked questions

What is an e-signature template API?

An e-signature template API lets you define a document once — uploading the PDF, placing signature and form fields, and defining signer roles — then reuse that definition for multiple signing requests. When you create an envelope from a template, you supply the actual signers for each role; the document and field layout are already in place. This eliminates repeated PDF uploads and field configuration for recurring document types like NDAs, employment contracts, or lease agreements.

When should I use a template vs. a one-off envelope?

Use a template when you send the same document type repeatedly, with the same field layout, and only the signers change per request. Use a one-off envelope when the document content or field positions vary per transaction — for example, a dynamically generated contract with customer-specific terms.

Can I pre-fill form fields when creating an envelope from a template?

Yes. When instantiating an envelope from a template, you can supply pre-fill values for text, date, and checkbox fields alongside the signer assignments. This is useful for populating known values (customer name, effective date) before sending — reducing what the signer needs to type.

How do I create a template via the GetSigned API?

POST your PDF and field definitions to /v1/templates, declaring signer roles instead of specific signers. The API returns a template_id. To send a document from that template, POST to /v1/envelopes with the template_id and the actual signer assignments for each role. The envelope is created with the template's PDF and field layout pre-applied.

Is the original PDF stored per template or per envelope?

Both. The template stores the original PDF and its SHA-256 hash as the authoritative baseline. Each envelope created from the template references that baseline — the audit trail records both the template_id and the document hash, so the provenance of every signed document is traceable to the original template.

Related: Integration guide · Multi-signer routing · Embedded signing

Build once, send forever

Get free API keys →