Quickstart

Get started

API quickstart

Send a real document to yourself, sign it, and download the signed PDF, all through the API. It takes about five minutes, and every request on this page can be copied as it is once your key is set.

Before you start

  • A Pro or Teams plan, and to be the workspace's primary owner or a Teams admin, who are the people who can create keys.
  • A Read and send key from API settings. Inkly shows it once, so copy it straight away.
  • A template with one signer role. If you do not have one, create a template first: a one-page PDF with a signature field is enough.

Only have a PDF? Send a PDF walks through uploading it and placing the fields instead.

Keep the key in an environment variable called INKLY_API_KEY, which every example reads. In a terminal:

Set your key
export INKLY_API_KEY="your key"

Call the API from a server or a terminal, never from a browser. It sends no CORS headers, and a key in browser code can be copied by anyone.

There is no test mode. The document you send in step 3 is real and legally binding, and it counts as one of your API documents for the month. Send it only to your own email address.

1. Check your key

Ask the API who you are. Any valid key can make this request, and it costs nothing.

curl "https://www.inkly.so/api/v1/me" \
  -H "Authorization: Bearer $INKLY_API_KEY"

The response names your workspace and shows how many API documents you have left this month:

The response
{
  "key": {
    "name": "CRM integration",
    "last_four": "x7Qa",
    "scopes": [
      "templates:read",
      "documents:read",
      "documents:send"
    ]
  },
  "workspace": {
    "id": "6c0e2b91-5d47-4a83-b2f6-7e9a1c3d8f50",
    "name": "Northwind Studio",
    "plan": "pro"
  },
  "allowance": {
    "limit": 250,
    "used": 12,
    "remaining": 238,
    "resets_at": "2026-12-01T00:00:00.000Z"
  }
}

A 401 means the key is wrong or revoked: check that you copied all of it. A 403 with plan_required means the workspace is not on Pro or Teams.

2. Find a template

List your templates and copy the id of the one you want to send.

curl "https://www.inkly.so/api/v1/templates?limit=25" \
  -H "Authorization: Bearer $INKLY_API_KEY"

Then get that template to find its role. Copy the role_id under roles:

curl "https://www.inkly.so/api/v1/templates/a2d94c10-6e7b-4f38-8c15-1f3e9b7d6c02" \
  -H "Authorization: Bearer $INKLY_API_KEY"

3. Send it to yourself

Replace the template_id and role_id with yours, and the name and email with your own. If the template has more than one role, add an entry for each, all with your email.

curl -X POST "https://www.inkly.so/api/v1/documents" \
  -H "Authorization: Bearer $INKLY_API_KEY" \
  -H "Idempotency-Key: crm-8841-send-1" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "a2d94c10-6e7b-4f38-8c15-1f3e9b7d6c02",
    "recipients": [
      {
        "role_id": "c81e7f42-0b39-4d6a-a7c4-92e15d3f8b76",
        "name": "Your name",
        "email": "you@example.com"
      }
    ]
  }'

The Idempotency-Key header is any unique value you choose. If the request times out, send it again with the same key and Inkly returns the first result instead of sending a second document.

A 201 response means the document is out for signature. Copy document.id from it for the next steps. If the template has prefilled fields marked required, the send returns prefilled_value_missing: add their values and send again with a new Idempotency-Key.

4. Sign it

Open the invitation from Inkly in your inbox and sign the document. Once you finish, the document is complete and Inkly saves the signed PDF and emails you a copy.

5. Check the status

Get the document with the ID you copied in step 3:

curl "https://www.inkly.so/api/v1/documents/3f1c2a7e-8b4d-4e21-9a6f-5d0c7e1b2a34" \
  -H "Authorization: Bearer $INKLY_API_KEY"

status is sent while anyone still has to sign, and completed once everyone has. Each recipient has their own status too, from pending to viewed to signed.

6. Download the signed PDF

Once the status is completed, ask for the signed PDF. You get a download link that works for 5 minutes and needs no key:

curl "https://www.inkly.so/api/v1/documents/3f1c2a7e-8b4d-4e21-9a6f-5d0c7e1b2a34/signed-pdf" \
  -H "Authorization: Bearer $INKLY_API_KEY"
The response
{
  "url": "https://files.example.com/signed/consulting-agreement.pdf?token=example",
  "expires_at": "2026-11-02T15:09:05.123Z",
  "file_name": "Consulting agreement.pdf"
}

Download the file from url and store it with your own records. The Certificate of Completion is a separate download.

Next steps