# Signed > The e-signature API that generates the document for you. Generate a document from a template or HTML, send it for signature, collect a legally binding e-signature with a court-grade audit trail, fire a webhook when done, and store the sealed PDF — one API, one bill, ~$0.15 per envelope. The developer-first alternative to DocuSign. Scope: US + EU, Simple Electronic Signature (SES). The core object is the **envelope** (document + signers + fields + lifecycle + audit trail + sealed PDF). Two entry points: **email/API** when you know the signer and are integrated, and **signing links** (reusable, Stripe-Payment-Link-style) when the signer is unknown. For the complete API in a single file (every endpoint, examples, webhooks, errors, SDKs), see [llms-full.txt](https://signed.sh/llms-full.txt). ## Docs - [Introduction](https://docs.signed.sh/introduction): the envelope object, lifecycle, and email-vs-link. - [Quickstart](https://docs.signed.sh/quickstart): key → send an envelope → get the sealed PDF + certificate. - [How Signed compares](https://docs.signed.sh/comparison): honest feature matrix vs DocuSign / SignatureAPI. - [Signing links](https://docs.signed.sh/guides/signing-links): one reusable link, no API call per signature. - [Webhooks](https://docs.signed.sh/guides/webhooks): envelope.* events + Standard Webhooks verification. - [Audit trail & sealing](https://docs.signed.sh/guides/audit-trail): certificate of completion + PAdES seal. - [Errors](https://docs.signed.sh/guides/errors): typed error envelope + status codes. - [Production checklist](https://docs.signed.sh/guides/production-checklist): infra, cron, sealing, and legal gates before launch. - [SDKs](https://docs.signed.sh/sdks): official TypeScript SDK now; Python client coming next. - [AI & LLM access](https://docs.signed.sh/ai): llms.txt, llms-full.txt, OpenAPI, and agent test mode. ## API - `POST /v1/envelopes` — generate the document and send it for signature (returns the envelope id). - `GET /v1/envelopes` — list envelopes, newest first, cursor-paginated (`limit`, `status`, `cursor` → `data`, `has_more`, `next_cursor`). - `GET /v1/envelopes/{id}` — retrieve status, the sealed document URL, the certificate of completion, and metadata. - `PATCH /v1/envelopes/{id}` — update developer-owned metadata. - `POST /v1/envelopes/{id}/void` — void an in-flight envelope. - `POST /v1/signing_links` — create a reusable signing link (checkout). - `POST /v1/render` — render a template/HTML to PDF. Envelope create also accepts `metadata` (≤30 keys). Public fields are anchor-based today. ## SDKs - TypeScript: `npm install @signed/sdk` — `signed.envelopes.create({ document, signers, fields, metadata })`. Also `retrieve`, `update`, `void`, `list` (auto-paginating async iterator), `listPage`, and `waitUntilCompleted`. Zero dependencies, typed errors, automatic idempotency + retries, built-in webhook verification. - Python: coming next. - Source + OpenAPI: https://github.com/trysolodev/signed.sh/blob/main/openapi.yaml ## Authentication Bearer token. Keys look like `sk_live_…` or `sk_test_…` (test never bills and watermarks output).