# wesign.now API > wesign.now (formerly letssign.now) is a Swiss-made e-signature platform. Its v1 REST API sends a PDF, or a document made from a locked template, to one or more signers by email — optionally with a per-signer SMS code, for an advanced electronic signature (AES) — seals the signed PDF (PAdES) and time-stamps it (RFC 3161), and reports each step through HMAC-signed webhooks. The base URL is https://api.wesign.now/v1; https://api.letssign.now/v1 is a permanent alias with the same routes and keys. Every call sends `Authorization: Bearer ` with a workspace API key: `wsk_live_…`, or `lsk_live_…` for keys minted before the rename, which are accepted forever. `/v1` is the only version: additive changes ship without notice, and a change that can break a working call is announced at least 90 days ahead. Exceptions take effect at once and are still flagged `breaking`: refusing input that never had an effect, and fixes that make the API do what the docs said (https://www.wesign.now/docs/versioning). The OpenAPI document's `info.version` is its release date; every change is listed with a stable `id` in the machine-readable changelog. Notes for assistants: - The current OpenAPI spec is https://www.wesign.now/openapi.json (info.version 2026-10-01). Errors are JSON `{ error, code, meta? }`: branch on `code`, never on the message. - The docs are in English. Every page below is also in https://www.wesign.now/llms-full.txt as plain Markdown, generated from the same source when this deployment was built. - API keys come with Enterprise and legacy Teams workspaces (Settings → API). `GET /v1/me` reports what the key's workspace may use (`capabilities`) and its monthly SMS allowance. - Questions the docs do not answer: support@wesign.now — what to include is in the Integrator FAQ (https://www.wesign.now/docs/integrator-faq). ## Overview - [API documentation](https://www.wesign.now/docs): Send any PDF for signing with a single POST. The letssign.now API reference, errors, recipes, support. ## Guides - [Quickstart](https://www.wesign.now/docs/quickstart): From zero to a signed PDF in under five minutes — terminal-only, no SDK. - [Template quickstart](https://www.wesign.now/docs/template-quickstart): From zero to a sealed PDF made from a template. A one-signer rich-text letter, or a two-signer PDF your system fills and two people sign in order. - [Prepare a fill in your app](https://www.wesign.now/docs/prepare-a-fill): Read a template's contract, ask your user for what it needs, dry-run, then send. Required fields, missing_optional and standard field names. - [Integrator FAQ](https://www.wesign.now/docs/integrator-faq): Short answers an integrating app, or its AI assistant, can quote — observers, AES by SMS, the SMS allowance, checking phone numbers, languages, signer names, parallel signing, field keys and dates, and how to reach us. ## Reference - [API overview](https://www.wesign.now/docs/api-overview): Base URL, authentication, versioning policy, and the full map of v1 resources. - [OpenAPI spec](https://www.wesign.now/docs/openapi): The machine-readable v1 contract — import it into Postman, Insomnia or a client generator. - [Authentication](https://www.wesign.now/docs/authentication): Bearer API keys — minting, rotating, revoking. The keys are workspace-scoped — no tenant header needed. - [Signing requests](https://www.wesign.now/docs/signing-requests): Create, read, correct the phone, remind, and withdraw — the endpoints around the signing_request resource. - [Placement modes](https://www.wesign.now/docs/placement-modes): Where signature fields land on the PDF — anchors, auto-append, explicit. Visualised, with when-to-use guidance. Manual placement is retired. - [Anchor placeholders](https://www.wesign.now/docs/anchor-placeholders): The [[ls:KIND:ROLE]] marker syntax used by placement="anchors". - [SMS verification](https://www.wesign.now/docs/sms-verification): The SMS second factor end to end — the fields, the two gate modes, what the invitation and the page show before the code, the signer's side, the monthly allowance, and the events you receive. - [Observers](https://www.wesign.now/docs/observers): CC-style spectators on a signing request — notified when it goes out and when every signer has signed. They never sign. - [Documents](https://www.wesign.now/docs/documents): Holistic doc + signers, the signed PDF, the audit-trail PDF. - [Embedded signing](https://www.wesign.now/docs/embedded): Mint a short-lived, single-signer session and render the signing view inside your own page — iframe or mobile webview, your branding, postMessage events, no API key in the browser. - [Fields & placeholders](https://www.wesign.now/docs/fields-placeholders): The two ways content gets filled — positioned fields and inline merge placeholders — who fills each value, line-item collections and standard field names. - [Templates](https://www.wesign.now/docs/templates): List and read templates, instantiate a locked one with field_values, dry-run, review before sending, generate without a signature. - [Webhooks](https://www.wesign.now/docs/webhooks): Real-time signer events delivered to your URL with HMAC-SHA256 signatures and exponential-backoff retries. - [Errors](https://www.wesign.now/docs/errors): Stable error codes mapped to HTTP statuses. Pin your error handling to the code, not the human-readable message. ## Concepts - [Idempotency](https://www.wesign.now/docs/idempotency): Safely retry network blips without double-sending. Stripe-style Idempotency-Key with a pending lock for concurrent retries. - [Rate limits](https://www.wesign.now/docs/rate-limits): 60 requests per minute per API key, counted on a shared counter. RateLimit-* headers on every successful response and every per-key 429, Retry-After on every 429. - [Security](https://www.wesign.now/docs/security): How letssign.now protects documents at rest, in transit, and over their lifetime — with the trade-offs called out. - [How verification works](https://www.wesign.now/docs/verification): What /verify actually does when you drop a PDF — hash lookup, PAdES validation, eIDAS QES detection, the lot. - [Versioning](https://www.wesign.now/docs/versioning): What may change inside /v1 and how you hear about it — notice periods, deprecation signals, dated spec snapshots and the machine-readable changelog. ## Help - [Recipes](https://www.wesign.now/docs/recipes): End-to-end integration patterns — Portant, a two-signer template, Zapier, agent-generated PDFs, CRM sync. - [Support](https://www.wesign.now/docs/support): Response times, contact channels, status, common gotchas, security disclosure. - [Changelog](https://www.wesign.now/docs/changelog): Public API changes. Reverse-chronological. Breaking changes flagged. ## Machine-readable - [OpenAPI spec, current](https://www.wesign.now/openapi.json): OpenAPI 3.1, info.version 2026-10-01. Every /v1 path, request and response schema, error code per status and webhook event. - [OpenAPI spec, frozen 2026-10-01](https://www.wesign.now/openapi/2026-10-01.json): the spec of the 2026-10-01 release. Each release's spec is kept at `/openapi/.json`, so two releases can be diffed. - [OpenAPI spec, frozen 2026-09-25](https://www.wesign.now/openapi/2026-09-25.json): the spec of the 2026-09-25 release. Each release's spec is kept at `/openapi/.json`, so two releases can be diffed. - [OpenAPI spec, frozen 2026-09-24](https://www.wesign.now/openapi/2026-09-24.json): the spec of the 2026-09-24 release. Each release's spec is kept at `/openapi/.json`, so two releases can be diffed. - [API changelog, JSON](https://www.wesign.now/api-changelog.json): every visible API change, newest first — a stable id, type, breaking flag, effective date and the action an integrator must take. - [All docs in one file](https://www.wesign.now/llms-full.txt): every page listed above as plain Markdown, in this order.