API overview
Base URL, authentication, versioning policy, and the full map of v1 resources.
The letssign.now REST API is a single, versioned surface. Everything you
integrate against lives under /api/v1/.
Base URL & auth
https://www.letssign.now/api/v1
Authorization: Bearer lsk_live_…All requests authenticate with a workspace API key (Authorization: Bearer).
Mint and manage keys in Settings → API. Requests are rate-limited per key
(a 429 carries a Retry-After).
Versioning
/api/v1is stable. We only make additive changes within it (new optional fields, new endpoints) — never breaking ones.- A breaking change would ship under
/api/v2;v1keeps working. - Always pin to the version in the path.
Resources
| Resource | Endpoints | What it does |
|---|---|---|
| Signing requests | POST /signing-requests, GET/DELETE /signing-requests/{id}, /remind, /withdraw | Send a PDF (bytes or file_url) for signature with explicit/anchor/auto/manual placement. |
| Documents | POST /documents, GET /documents/{id}, /signed, /audit-trail | Create from a file_url, fetch the signed PDF + audit trail. |
| Templates | GET /templates, POST /templates/{id}/instantiate | List templates and instantiate a locked one with field_values (placeholder filling). |
| Fields | GET /fields | Discover the workspace field & API-object registry — keys, types, enum options, examples, max length — so you know what field_values to send. |
| Embedded sessions | POST /embedded/sessions, GET /embedded/sessions/{id} | White-label / in-app signing sessions. |
Note: template instantiation also responds at the legacy path
/api/templates/{id}/instantiate. That alias is kept for backwards
compatibility — new integrations should use /api/v1/templates/{id}/instantiate.
Two ways to start a signature
- Direct —
POST /api/v1/signing-requestswith a one-off PDF (fileorfile_url) and explicit field positions. Best for ad-hoc documents. - Template —
POST /api/v1/templates/{id}/instantiateagainst a locked template, supplyingfield_values. Best for the same contract sent many times. Discover the fields to send viaGET /api/v1/fields.
