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.
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.
POST /v1/envelopes with the template id, your variables and one recipient per role.delivery: "embedded").envelope.completed webhook with every typed value.envelope.sealed arrives./variables/client/email.Idempotency-Key on POSTs and a retry replays the first response.bf_test_ keys create watermarked envelopes that are never billed. See Authentication.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.