Quickstart
Create an API key, make your first request, send an envelope for signature and get notified by webhook — in about ten minutes.
On this page
You will need a Signkoi account (the free plan works) and a PDF to send. Every example uses an environment variable for the key, so set it once in your shell.
1. Create an API key
- Sign in and open Developer → API keys.
- Choose Create key, give it a name (for example “Quickstart”) and keep Full access for this tutorial.
- Copy the key straight away — it is shown only once.
export SIGNKOI_API_KEY="paste-your-key-here"Keep keys on your server
An API key acts as you. Never put it in browser or mobile app code, and never commit it to a repository.
2. Make your first request
GET/v1/me returns the account the key belongs to and the key's scopes — a quick way to check that authentication works.
curl https://signkoi.com/api/v1/me \
-H "Authorization: Bearer $SIGNKOI_API_KEY"{
"object": "account",
"id": "1842",
"name": "Rina Koh",
"email": "rina@acme.example",
"locale": "en",
"timezone": "Europe/London",
"api_key": {
"id": "311",
"name": "CRM integration",
"scopes": [
"envelopes:read",
"envelopes:write",
"account:read"
],
"expires_at": null
},
"plan": "pro",
"usage": {
"documents_this_period": 37,
"document_limit": 200
}
}A 401 means the key is missing or wrong; see Authentication.
3. Send an envelope
One request uploads the PDF, adds the signer and sends the invitation. Without explicit fields, Signkoi places a signature box on the last page for the first signer; the envelopes guide shows how to place fields yourself. Upload the file as multipart (curl, Python, PHP) or inline as base64 in JSON (Node).
curl https://signkoi.com/api/v1/envelopes \
-H "Authorization: Bearer $SIGNKOI_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-F file=@agreement.pdf \
-F title="Consulting agreement" \
-F 'recipients=[{"name":"Maya Patel","email":"maya@example.com"}]' \
-F 'metadata={"crm_deal_id":"D-10492"}' \
-F send=1The response is the envelope with status: "sent". Maya gets an email with a secure link — she signs in any browser, no account needed. The Idempotency-Key makes the request safe to retry: if the connection drops and you send it again with the same key, you get the original response instead of a second envelope (see Idempotency).
Counts against your plan
Envelopes created through the API use your monthly document allowance like uploads on the website. When it is used up the API answers 402 with code plan_limit.
4. Track it
Retrieve the envelope with GET/v1/envelopes/{id} to see its status and each recipient's progress, or list envelopes with filters using GET/v1/envelopes.
curl -G https://signkoi.com/api/v1/envelopes \
-H "Authorization: Bearer $SIGNKOI_API_KEY" \
--data-urlencode "status=sent" \
--data-urlencode "metadata[crm_deal_id]=D-10492"Once everyone has signed, status becomes completed and files.signed and files.certificate link to the sealed PDF and the certificate of completion.
5. Get notified by webhook
Instead of polling, register an HTTPS endpoint with POST/v1/webhooks. Save the secret from the response: you need it to verify signatures.
curl -X POST https://signkoi.com/api/v1/webhooks \
-H "Authorization: Bearer $SIGNKOI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/signkoi",
"events": [
"envelope.completed",
"envelope.declined",
"recipient.completed"
]
}'Then send yourself a signed test event with POST/v1/webhooks/{id}/test.