Quickstart
On this page
API docs
Get started
Endpoints
Account
Templates
Sending
Documents
Files
OpenAPI
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:
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.
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:
{
"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"{
"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
In a real integration you would not check the status by hand. Add a webhook endpoint and Inkly tells your server the moment the document is completed.