SignSecureSignSecure Docs

Getting Started

Send your first document for signing using the SignSecure API.

View Markdown

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.pdf

Only 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

RoleDescription
signerMust sign the document
approverMust approve (no signature required)
ccReceives a copy, no action needed

Signature Methods

MethodDescription
electronicDraw or type a signature (free)
aadhaar_otpAadhaar eSign with OTP verification (costs credits)
dsc_usbDigital Signature Certificate via USB token (free)
allRecipient 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"
}

Next Steps

  • Set up Webhooks to get notified in real-time instead of polling
  • Use Templates to reuse document layouts with predefined recipients
  • Check your Credits balance and usage

On this page