v1.1
REST API

API Documentation

Complete reference for the Inscriben REST API. Integrate legally defensible electronic signatures, multi-document envelopes, biometric capture, and blockchain audit permanence into your software.

Base URL:https://app.inscriben.com
Authentication

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

HTTP Request Header
http
Authorization: Bearer ss_YOUR_API_KEY

Available Key Scopes

Full Access Scope
ALL METHODS

Enables all operations including uploading documents, dispatching signature requests, sending reminders, and voiding agreements (GET, POST, DELETE).

Read Only Scope
GET ONLY

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

IP Allowlisting

Restrict API calls to authorized static IPv4/IPv6 addresses or CIDR blocks.

Domain Restrictions

Limit API key usage to authorized domain origins (CORS filtering).

Key Expiration

Define automatic expiration timestamps for automated key rotation.

Rate Limiting

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)

ParameterTypeRequiredDescription
fileFileOptionalSingle document file (PDF). Use this OR 'files' — not both.
filesFile[]OptionalMultiple PDF files (field name 'files', max 5). When 2+ files are provided, an envelope is auto-created. Use this OR 'file'.
namestringRequiredDisplay name for the document or envelope
securityLevelstringOptionalSecurity level: 'standard' or 'advanced'
signatoriesJSON arrayRequiredArray of signatory objects with name and email
sendNotifications"true" | "false"OptionalWhether to send invitation emails (default: "true"). Pass "false" to suppress automatic emails.
createEnvelope"true"OptionalWhen using single file: pass "true" to create an envelope. Returns envelopeId for grouping subsequent calls.
envelopeIdstringOptionalAdd this document to an existing envelope (from a previous call's response).
signAllPages"true" | "false"OptionalWhen "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"OptionalControls 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)

200 OK — application/json
json
{
  "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

cURL Request
bash
# ── 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.
Status & Error Codes

Standard HTTP status codes and error responses returned by the API

CodeStatusDescription
401UnauthorizedInvalid or missing API key in the Authorization header
403ForbiddenInsufficient key scope, IP/domain restriction violation, or access denied
404Not FoundRequested document, envelope, or resource does not exist
402Payment RequiredInsufficient credits available on your organization account
429Too Many RequestsRate limit exceeded (standard ceiling: 100 requests per minute)
500Internal Server ErrorAn unexpected server error occurred while processing the request
Code Examples

Production-ready client snippets for uploading documents and adding signatories

send-for-signature — cURL
curl
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"}]'
Rate Limits & Quotas

Platform limits, throttling rules, and standard HTTP response headers

100

Requests / minute

Default ceiling per API key

Per API Key

Granular per-key throttling

HTTP 429

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:

Live Rate Limit Response Headers
http
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1707800400