Developers

A signature API in three lines.

One POST to send a document for signature. Same per-signer pricing, same OTP signing — now from your own code.

send.sh
curl https://api.onetapsign.com/v1/requests \
-H "Authorization: Bearer $OTS_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Mutual NDA",
"document": { "url":"https://acme.com/nda.pdf" },
"signatories": [{ "name":"Jordan Lee",
"email":"jordan@acme.com",
"phone":"+14155550148" }]
}'
201 CreatedResponse
{
"id": "req_9fa2kx",
"status": "pending",
"title": "Mutual NDA",
"signatories": [{
"name": "Jordan Lee",
"status": "pending",
"signUrl": ".../sign/9fa2-kx"
}]
}

The whole API

Send, track, and a webhook — the three you'll reach for. No SDK required.

POST
/v1/requests

Send a document to one or more signatories. Charges per signer, returns each signer's signing link.

GET
/v1/requests/:id

Check who has signed and who's still pending, plus the sealed PDF when complete. Look up by your own ref with /by-ref.

HOOK
request.completed

Subscribe once and get a callback the instant every signatory is done — plus signatory.signed and more.

Prefer no code? Let your AI agent send over MCP.One server URL, OAuth sign-in, no API key. Works with Claude, Cursor, and any MCP client.See the agents page →

Start building today

Create an account and grab your API keys. Test keys are free — you're only charged on a real send, $1 a signer.

High volume or custom pricing?

Tell us what you're building and we'll get you set up.