API access on every account · REST + webhooks

The eSignature API
with no monthly fee

Send documents for signature, embed signing in your own app and get a webhook the moment it's signed. No developer plan, no envelope allowance to outgrow — you pay when a document goes out, and nothing when it doesn't.

$0/month $1.50/envelope

Free to sign up. Build against drafts and pay nothing until you send.

The whole integration

One POST request sends a document for signature

Build a template once in the designer, then send it from your code with the signers' names and emails. GoodSign emails the signers, chases the slow ones, and posts to your webhook when it's done.

Request

curl --request POST \
  --url https://goodsign.io/api/usetemplate \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "uuid": "YOUR_TEMPLATE_UUID",
    "doc_name": "Services Agreement - Acme",
    "webhook": "https://example.com/hooks/goodsign",
    "metadata": {"deal_id": 4821},
    "signers": [
      {"key": "signer1", "name": "Jane Smith",
       "email": "jane@acme.com", "reminder_days": 1}
    ]
  }'

Response

{
  "success": true,
  "doc": {
    "uuid": "1f0c9a52-...",
    "name": "Services Agreement - Acme",
    "status": "sent",
    "webhook": "https://example.com/hooks/goodsign"
  },
  "warnings": [],
  "credit": 49
}

The API docs generate this request for each of your templates, with your real signer keys and field names filled in.

What you can build

Everything the dashboard does, from your code

Send from a template

Design the document once, then send it with a signer list and pre-filled field values. Sequential signing with send_in_order, a CC address, and your own email subject and message.

Upload any PDF

Generate the PDF yourself and post it to /api/uploadpdf. Text tags such as [sign|Client] and [date|Client] in the document become real signature and date fields, wherever they land on the page.

Embedded signing

Pass email_external and GoodSign stays silent: you get a signing link per signer to open in an iframe, a webview or your own branded email. How embedding works.

Webhooks

Nine events, from signer_opened to document_complete, posted to a URL you set per document. No polling. Webhook guide.

Identity and reminders

Turn on SMS verification per document with smsverify, set reminder intervals per signer, and nudge or void a document with one call each.

Signed PDF and audit trail

Download the completed PDF with its audit certificate attached: signer emails, IP addresses and timestamps. Attach your own metadata JSON and it comes back with the document.

API pricing

What it costs before you send a single document

Most eSignature APIs sit behind a developer plan with a yearly commitment and a monthly envelope allowance. That suits steady high volume. It's a poor fit for a client portal that sends ten contracts in a busy month and none in a quiet one.

API Cheapest way in Minimum spend Allowance
GoodSign Any account. No plan to pick. $0 No cap. $1.50 per envelope, credits never expire.
DocuSign Developer Starter plan US$600 / year 40 envelopes a month
Dropbox Sign API Essentials 50 US$900 / year 50 requests a month
Adobe Acrobat Sign Enterprise and developer tiers only Sales quote Not published

Competitor prices in USD as published on each vendor's own pricing page, September 2026, billed annually. An envelope on GoodSign covers one document pack with unlimited signers and unlimited users on your account. If you send thousands of documents a month, a flat-rate API can work out cheaper per document — the full numbers, with break-even points, are in our eSignature API pricing comparison.

The reference

A small API you can hold in your head

JSON over HTTPS, authenticated with a bearer token you create and revoke at /apikeys.

POST /api/usetemplate Send a document from a template, or create it as a draft
POST /api/uploadpdf Upload a PDF; text tags become fields and signers
GET /api/templates List your templates with their signer keys
GET /api/document/{uuid} Status, signer progress and your metadata
POST /api/documents List documents by status
POST /api/document/{uuid}/remind Remind one signer, or /remindall for everyone outstanding
POST /api/document/{uuid}/void Cancel a sent document
GET /api/download/{uuid} The signed PDF with its audit certificate
GET /api/test Check your token works

SDKs

Open-source clients for Node, PHP and Ruby, or plain HTTP from anything else.

Test with drafts

Add "draft": true to any send and the document is created but not sent. Check it in your dashboard, fix your payload, and spend nothing while you build.

Postman

Explore every endpoint from the Postman collection linked in the API docs.

For AI agents

Or skip the integration and hand it to your agent

GoodSign runs an MCP server, listed on the official MCP Registry, with the same API key. Claude Code, Codex or any MCP client can list your templates, send a document, chase signers and fetch the signed PDF — no glue code. Same price: one credit per envelope.

claude mcp add --transport http goodsign https://goodsign.io/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Questions

eSignature API questions

The API costs $1.50 per envelope sent, the same price as sending from the dashboard. There is no monthly fee, no developer plan and no per-user charge. Credits never expire, and a month where you send nothing costs $0. SMS verification uses one extra credit, and purchases of 1,000 or more credits get a 20% discount.

Yes. GoodSign has no plans to choose between, so there is nothing to upgrade. Every account can create an API key and use every endpoint, including webhooks and embedded signing, from the first document.

Creating an account and an API key is free, and you can build your whole integration without paying: pass "draft": true and the document is created but not sent, so no credit is used. You only pay when a document actually goes out for signature.

Yes. Send with "email_external": true and GoodSign sends no emails at all. The response includes a signing_links array with one URL per signer, which you can open in an iframe, a webview or your own email. Use "notifyonly" instead if you still want GoodSign to email everyone the finished document.

Nine: document_sent, document_complete, document_voided, signer_opened, signer_complete, signer_rejected, signer_bounced, signer_reported and signer_attachments_complete. Set a webhook URL per document in the send request. Each call posts the document uuid and its new status.

Yes. A document sent by API goes through exactly the same signing flow as one sent from the dashboard, and the signed PDF carries the same audit certificate: signer emails, IP addresses and timestamps. Electronic signatures are recognised under the US ESIGN Act and UETA, eIDAS in Europe, and equivalent laws in Australia and New Zealand.

Send your first document from code today

Create an account, grab a key, build against drafts for free. $1.50 an envelope when you go live, and new accounts get 50% off their first credit top up.

Also built by us

That chat bubble in the corner is tiny.help

It’s how we answer every GoodSign customer — live chat, email and the AI you already pay for, all in one inbox. One line of HTML and it’s on your site too.

Take a look at tiny.help $29 a month. Live in two minutes. Cancel in one click.

All rights reserved © GoodSign Limited 2026
2 Stuart St, Ponsonby, Auckland 1011, New Zealand..