Skip to content

Contracts in, signed out.

Bona Fide is e-signature as an API. Turn a template and your data into a ready-to-sign envelope, let people sign inside your product or on a hosted page, and receive a sealed PDF that anyone can verify.

Templates

Upload a PDF (or a Word file) and place fields, or write the contract in Document mode. Variables are a JSON Schema, so the API validates your data before anything is sent. Versions are immutable once published.

Envelopes

One POST /v1/envelopes renders a template with your variables and starts routing to recipients by role and order. Dry runs, idempotency keys and externalId de-duplication come built in.

Signing, your way

Email links, a hosted page, or the <bf-signing> web component (React and Vue wrappers) inside your own app, with short-lived, single-use sessions minted by your backend.

Evidence anyone can check

Every completed document gets a PAdES document timestamp from a public timestamp authority, and its fingerprint goes into a Merkle tree whose roots Bona Fide signs with Ed25519. Anyone can verify a copy, no account needed.

  1. Design a template in the dashboard or through the API, then publish a version.
  2. Send an envelope: POST /v1/envelopes with the template id, your variables and one recipient per role.
  3. Sign: recipients get an email link, or you mint a signing session and embed it (delivery: "embedded").
  4. Complete: when the last recipient signs, you get an envelope.completed webhook with every typed value.
  5. Seal: the sealed PDF (with its certificate of completion) is ready when envelope.sealed arrives.
  6. Verify: anyone can drop the PDF on the verification page or call the public verification API.
  • Errors you can act on. Every error is RFC 9457 problem+json; validation errors carry a JSON Pointer per problem, such as /variables/client/email.
  • Safe retries. Send an Idempotency-Key on POSTs and a retry replays the first response.
  • Free, unlimited test mode. bf_test_ keys create watermarked envelopes that are never billed. See Authentication.
  • Webhooks that follow a standard. Deliveries are signed per Standard Webhooks, retried for three days, and can be replayed.
  • OpenAPI 3.1, generated from the code. The reference and the downloadable openapi.json / openapi.yaml are built from the same zod contracts the API validates with.

The API lives at https://bonafide-api.republic.global. All paths in these docs are relative to it.