SignEnvoy docs
Sign in Start in the sandbox

Get started

SignEnvoy developer docs

The REST API for sending, tracking, and downloading sealed signature requests. API version 1.7.0-m9.

Base URL and authentication

All endpoints live under https://app-staging.signenvoy.com/v1. Authenticate resource requests with an API key in the Authorization header:

Authorization: Bearer senv_live_...

Keys come in two modes. senv_live_ keys send real, legally binding envelopes, and each one that completes is billed. senv_test_ keys make watermarked, non-binding envelopes that are never counted or billed. Every workspace starts with a test key, and you can copy a test key again from Settings, API keys whenever you need it. A live key is shown once, when it is created. Create and revoke keys there, or with the /v1/keys endpoints. Every workspace has API access; live keys work once the workspace has gone live.

Errors

API errors returned by the gateway are application/problem+json documents (RFC 9457) with a stable type of the form /problems/<slug> and a docs_url member that links the page for that slug. Switch on type, never on title or detail, which are human-readable and may change. The error reference lists every slug.

A request malformed enough that our network edge refuses it before it reaches the API, such as a path containing an encoded NUL (%00), gets a plain 400 with an HTML body instead. Check that Content-Type is application/problem+json before you parse an error body, and treat any other error as an HTTP status with no type:

if (!res.ok) {
  const type = res.headers.get("content-type") ?? "";
  const problem = type.startsWith("application/problem+json")
    ? await res.json()
    : null;
  throw new Error(problem?.type ?? `HTTP ${res.status}`);
}

Response headers and retries

Rate headers appear after authentication and entitlement checks pass. The usage header appears on responses from resource handlers; early refusals and idempotent replays omit it. Health, OpenAPI, and device-flow responses omit these headers, except device rate-limit refusals carry rate headers. Proxy failures and interrupted streams may not have a problem body.

X-SignEnvoy-Envelopes-This-Period Live envelopes completed this calendar month (UTC), the number the bill is priced from. It counts up and is never a limit. An envelope counts when everyone has signed, not when it is sent, so one you have sent is not in it until it completes. Test envelopes are never counted.
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset Fair-use rate limit state. A 429 carries Retry-After.
X-SignEnvoy-Warning Present while a subscription is past due: the request succeeded, but billing needs attention.
Idempotency-Key (request) Send one on authenticated resource POST requests to make retries safe for 24 hours. Device-flow requests are excluded. A replay returns the stored response with Idempotency-Replayed: true.

Where to go

  • Quickstart: seven curl commands from a key to a sealed PDF.
  • API reference: every operation and schema, rendered from the OpenAPI document.
  • Webhook events and verifying signatures.
  • Event stream: tail events live over SSE while you develop a handler.
  • Device-flow sign-in: how a terminal obtains an API key a person approves.
  • Templates: roles and fields placed once, prefills by field name, versions, and templates as code.
  • Folders and search: organize envelopes without touching them, and find them by title, recipient, or template.
  • Recipient authentication: the signing link alone, or the link plus a one-time code; what the certificate records.
  • Bulk send: one template, many rows, validated whole and tracked per row.
  • Signing links: get each recipient's ceremony URL, choose who delivers it, and redirect to the signing page from your own app.
  • Your account: reset a password, change your address, recover a workspace, transfer ownership, export, and delete.
  • Embedding the signing page: run the ceremony inside your own web or mobile app from a single-use embed session, and react to its events.
  • The CLI: install senv and every command it offers.
  • Error reference: every problem type, with what to do about each.

The specification

The API is described by an OpenAPI 3.1 document served at https://app-staging.signenvoy.com/v1/openapi.json and mirrored at /openapi.json. It is the contract: the official clients are generated from it, and its operation set is pinned by a test in the app repository so it cannot drift.