Secure Bearer token authentication for all Inscriben REST endpoints
All API requests require a Bearer token passed in the standard Authorization HTTP header. Requests missing this header or with invalid keys will return a 401 Unauthorized response.
Getting an API Key
Generate production and sandbox API keys from your API Keys settings page. Keys are shown only once upon generation; ensure you store them in a secure secret manager or environment variable.
Example Request Header
Authorization: Bearer ss_YOUR_API_KEY
Available Key Scopes
Enables all operations including uploading documents, dispatching signature requests, sending reminders, and voiding agreements (GET, POST, DELETE).
Restricted read-only access for querying document metadata, checking status, downloading original and signed PDFs, inspecting credits, and verifying audit trails.
Security & Protection Features
Defense-in-depth controls configurable per API key
Restrict API calls to authorized static IPv4/IPv6 addresses or CIDR blocks.
Limit API key usage to authorized domain origins (CORS filtering).
Define automatic expiration timestamps for automated key rotation.
Default limit of 100 requests per minute per key with live telemetry headers.
Endpoint Reference
Showing 12 of 12 endpoints
Form Parameters (multipart/form-data)
| Parameter | Type | Required | Description |
|---|---|---|---|
| file | File | Optional | Single document file (PDF). Use this OR 'files' — not both. |
| files | File[] | Optional | Multiple PDF files (field name 'files', max 5). When 2+ files are provided, an envelope is auto-created. Use this OR 'file'. |
| name | string | Required | Display name for the document or envelope |
| securityLevel | string | Optional | Security level: 'standard' or 'advanced' |
| signatories | JSON array | Required | Array of signatory objects with name and email |
| sendNotifications | "true" | "false" | Optional | Whether to send invitation emails (default: "true"). Pass "false" to suppress automatic emails. |
| createEnvelope | "true" | Optional | When using single file: pass "true" to create an envelope. Returns envelopeId for grouping subsequent calls. |
| envelopeId | string | Optional | Add this document to an existing envelope (from a previous call's response). |
| signAllPages | "true" | "false" | Optional | When "true", the signature is copied to every page of the PDF after signing (default: "false"). Useful for contracts requiring a visible signature on each page. |
| placementMode | "default" | "manual" | "auto" | Optional | Controls where the signature stamp is placed. "default" — bottom-right corner (default). "auto" — scans the PDF for fields like "Sign Here", "Signature:", "Designation:" and places the stamp there; falls back to bottom-right if none found. "manual" — you specify exact coordinates per signatory via a placements[] array inside each signatory object. |
Response (200 OK)
{
"documentId": "doc_abc123",
"name": "Service Agreement",
"hash": "sha256:a1b2c3d4e5f6...",
"envelopeId": "5f88a936-fa42-4791-aa22-638f81fc186d",
"signatories": [
{
"name": "John Doe",
"email": "john@example.com",
"signingUrl": "https://app.inscriben.com/sign/tok_xyz789"
}
]
}cURL Example
# ── Option 1: Single file — default stamp placement (bottom-right) ──
curl -X POST \
https://app.inscriben.com/api/v1/documents/send-for-signature \
-H "Authorization: Bearer ss_YOUR_API_KEY" \
-F "file=@contract.pdf" \
-F 'name=Service Agreement' \
-F 'signatories=[{"name":"John Doe","email":"john@example.com"}]'
# ── Option 2: Auto placement — scan PDF for "Sign Here" / "Signature:" labels ──
curl -X POST \
https://app.inscriben.com/api/v1/documents/send-for-signature \
-H "Authorization: Bearer ss_YOUR_API_KEY" \
-F "file=@contract.pdf" \
-F 'name=Service Agreement' \
-F 'placementMode=auto' \
-F 'signatories=[{"name":"John Doe","email":"john@example.com"}]'
# ── Option 3: Manual placement — specify exact coordinates per signatory ──
# placements[]: array of {page, x, y, width, height} all as % of page dimensions
# x/y = distance from top-left corner; width/height control stamp size
curl -X POST \
https://app.inscriben.com/api/v1/documents/send-for-signature \
-H "Authorization: Bearer ss_YOUR_API_KEY" \
-F "file=@contract.pdf" \
-F 'name=Service Agreement' \
-F 'placementMode=manual' \
-F 'signatories=[{"name":"John Doe","email":"john@example.com","placements":[{"page":1,"x":60,"y":80,"width":30,"height":8}]}]'
# ── Option 4: Multiple files in one call (auto-envelope) ──
curl -X POST \
https://app.inscriben.com/api/v1/documents/send-for-signature \
-H "Authorization: Bearer ss_YOUR_API_KEY" \
-F "files=@nda.pdf" \
-F "files=@contract.pdf" \
-F "files=@annex.pdf" \
-F 'name=Deal Package' \
-F 'signatories=[{"name":"John Doe","email":"john@example.com"}]'
# ── Option 5: Auto-batch (multiple separate calls) ──
# When you call send-for-signature multiple times within 5 seconds
# for the same signatory, documents are automatically grouped
# into one envelope with one invitation email.
# No extra parameters needed — just call normally.Standard HTTP status codes and error responses returned by the API
| Code | Status | Description |
|---|---|---|
| 401 | Unauthorized | Invalid or missing API key in the Authorization header |
| 403 | Forbidden | Insufficient key scope, IP/domain restriction violation, or access denied |
| 404 | Not Found | Requested document, envelope, or resource does not exist |
| 402 | Payment Required | Insufficient credits available on your organization account |
| 429 | Too Many Requests | Rate limit exceeded (standard ceiling: 100 requests per minute) |
| 500 | Internal Server Error | An unexpected server error occurred while processing the request |
Production-ready client snippets for uploading documents and adding signatories
curl -X POST \
https://app.inscriben.com/api/v1/documents/send-for-signature \
-H "Authorization: Bearer ss_YOUR_API_KEY" \
-F "file=@contract.pdf" \
-F 'name=Service Agreement' \
-F 'securityLevel=standard' \
-F 'signatories=[{"name":"John Doe","email":"john@example.com"},{"name":"Jane Smith","email":"jane@example.com"}]'Platform limits, throttling rules, and standard HTTP response headers
Requests / minute
Default ceiling per API key
Granular per-key throttling
Returned if ceiling is exceeded
Standard Rate Limit Response Headers
Every API response includes live rate limit counters so your client application can dynamically regulate request cadence:
X-RateLimit-Limit: 100 X-RateLimit-Remaining: 95 X-RateLimit-Reset: 1707800400