Getting Started
Send your first document for signing using the SignSecure API.
This guide walks you through the full flow — from creating a document to sending it for signing — using curl. Replace YOUR_API_KEY with your actual API key.
1. Create an API Key
Go to Settings > API Keys in the dashboard and create a new key. Copy it immediately — it won't be shown again.
export API_KEY="signsecure_your_key_here"2. Create a Document
Create a document and get a presigned upload URL for your PDF:
curl -X POST https://api.signpad.signsecure.in/api/v1/documents \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fileName": "contract.pdf",
"fileType": "application/pdf",
"fileSize": 52400,
"title": "Service Agreement"
}'Response:
{
"id": "doc_abc123",
"title": "Service Agreement",
"status": "draft",
"uploadUrl": "https://s3.amazonaws.com/...",
"fileKey": "uploads/doc_abc123/contract.pdf",
"expiresIn": 3600,
"createdAt": "2026-03-11T10:00:00.000Z"
}3. Upload the PDF
Use the uploadUrl from the previous response to upload your file via a PUT request:
curl -X PUT "UPLOAD_URL_FROM_RESPONSE" \
-H "Content-Type: application/pdf" \
--data-binary @contract.pdfOnly application/pdf files up to 10 MB are supported.
4. Add Recipients
Add one or more recipients to the document:
curl -X POST https://api.signpad.signsecure.in/api/v1/documents/doc_abc123/recipients \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipients": [
{
"name": "Jane Doe",
"email": "jane@example.com",
"role": "signer",
"order": 1,
"signatureMethod": "electronic"
},
{
"name": "Bob Smith",
"email": "bob@example.com",
"role": "approver",
"order": 2
}
]
}'Recipient Roles
| Role | Description |
|---|---|
signer | Must sign the document |
approver | Must approve (no signature required) |
cc | Receives a copy, no action needed |
Signature Methods
| Method | Description |
|---|---|
electronic | Draw or type a signature (free) |
aadhaar_otp | Aadhaar eSign with OTP verification (costs credits) |
dsc_usb | Digital Signature Certificate via USB token (free) |
all | Recipient chooses at signing time |
5. Send for Signing
Send the document to all recipients:
curl -X POST https://api.signpad.signsecure.in/api/v1/documents/doc_abc123/send \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflow": {
"mode": "sequential",
"verificationMethod": "email_verification",
"message": "Please review and sign this agreement."
}
}'sequential— recipients sign in order.parallel— all sign at once.email_verification— recipient verifies via email code.link_only— direct link, no verification.
6. Check Progress
Poll the signing status:
curl https://api.signpad.signsecure.in/api/v1/documents/doc_abc123/status \
-H "Authorization: Bearer $API_KEY"Response:
{
"documentId": "doc_abc123",
"status": "pending",
"totalRecipients": 2,
"completedCount": 1,
"percentage": 50,
"recipients": [
{
"name": "Jane Doe",
"email": "jane@example.com",
"status": "signed",
"signedAt": "2026-03-11T11:20:00.000Z",
"order": 1
},
{
"name": "Bob Smith",
"email": "bob@example.com",
"status": "pending",
"order": 2
}
]
}When all recipients complete their actions, the document status becomes completed.
7. Download the Signed Document
Once complete, get a download URL for the signed PDF:
curl https://api.signpad.signsecure.in/api/v1/documents/doc_abc123/file \
-H "Authorization: Bearer $API_KEY"{
"url": "https://s3.amazonaws.com/...",
"expiresIn": 3600,
"fileName": "contract.pdf"
}