Skip to content

Endpoints

All operations, generated from the same OpenAPI document as the interactive reference (each path links to it). Base URL: https://bonafide-api.republic.global. Download the document as JSON or YAML to generate a client or import it into Postman or Insomnia.

Auth is what the operation accepts: an API key (Authorization: Bearer bf_… or x-api-key), a dashboard session (the dashboard’s own calls), a signer token (/v1/signing/*), a viewer token (/v1/viewer/*, from the link in a viewer’s email), or nothing.

Templates

EndpointWhat it doesAuth
POST /v1/templatesCreate a templateAPI key or dashboard
GET /v1/templatesList templatesAPI key or dashboard
GET /v1/templates/{id}Get a templateAPI key or dashboard
DELETE /v1/templates/{id}Delete a template that was never used by an envelope or signing linkAPI key or dashboard
POST /v1/templates/{id}/filesUpload the source PDF (or a .docx, converted to PDF to keep the exact Word layout)API key or dashboard
POST /v1/templates/{id}/importConvert a Word document (.docx) into an editable Document-mode draft body (nothing is stored)API key or dashboard
PUT /v1/templates/{id}/draftCreate or replace the draft versionAPI key or dashboard
POST /v1/templates/{id}/publishPublish the draft as a new immutable versionAPI key or dashboard
GET /v1/templates/{id}/versionsList versions (newest first)API key or dashboard
GET /v1/templates/{id}/versions/{version}Get a version (number, "latest" or "draft")API key or dashboard
GET /v1/templates/{id}/versions/{version}/documentThe base PDF of a version (number, "latest" or "draft"); drafts give the uploaded original unless ?edited=trueAPI key or dashboard
POST /v1/templates/{id}/versions/{version}/renderRender a watermarked PREVIEW PDF with variablesAPI key or dashboard

Envelopes

EndpointWhat it doesAuth
POST /v1/envelopesCreate and send an envelope from a template, with optional send-time routing, CC, viewers and reminders (dry_run=true validates and renders only)API key or dashboard
GET /v1/envelopesList envelopesAPI key or dashboard
GET /v1/envelopes/{id}Get an envelopeAPI key or dashboard
GET /v1/envelopes/{id}/documentDownload the rendered original, the sealed PDF or the standalone certificate of completionAPI key or dashboard
POST /v1/envelopes/{id}/voidVoid an envelope in progressAPI key or dashboard
POST /v1/envelopes/{id}/viewersAdd viewers to an envelope in progress (read-only status page, emailed right away; limited per envelope by plan)API key or dashboard
DELETE /v1/envelopes/{id}/viewers/{viewer}Revoke a viewer: every status link they were sent stops workingAPI key or dashboard
POST /v1/envelopes/{id}/recipients/{recipient}/resendEmail the recipient a fresh signing link (their turn only; at most once a minute)API key or dashboard
GET /v1/envelopes/{id}/eventsThe envelope audit trail with hash-chain verificationAPI key or dashboard
GET /v1/envelopes/{id}/events/streamServer-sent events for one envelope (Last-Event-ID = seq resumes)API key or dashboard

Signing

EndpointWhat it doesAuth
POST /v1/envelopes/{id}/sessionsMint a short-lived, single-use signing session for a recipient (embedded or hosted)API key or dashboard
POST /v1/signing/exchangeExchange a session token (email link / embed) for a short-lived access tokenPublic
GET /v1/signing/sessionLoad the signer viewSigner token
GET /v1/signing/documentThe PDF to display to the signerSigner token
POST /v1/signing/otpSend a one-time code (email; SMS if enabled for the org)Signer token
POST /v1/signing/otp/verifyVerify the one-time codeSigner token
POST /v1/signing/attachmentsUpload a file for an attachment field (multipart: field, file)Signer token
POST /v1/signing/submitSubmit field values, signature and consentSigner token
POST /v1/signing/declineDecline to sign (ends the envelope)Signer token
EndpointWhat it doesAuth
GET /v1/links/{id}Public description of an always-on linkPublic
POST /v1/links/{id}/startVisitor details → email OTP (rate limited)Public
POST /v1/links/{id}/verifyVerify the OTP; creates the envelope and a signing sessionPublic
POST /v1/signing-linksCreate an always-on signing linkAPI key or dashboard
GET /v1/signing-linksList signing linksAPI key or dashboard
PATCH /v1/signing-links/{id}Change, pause or resume a linkAPI key or dashboard
DELETE /v1/signing-links/{id}Delete a link (envelopes it created stay)API key or dashboard

Viewers

EndpointWhat it doesAuth
POST /v1/viewer/exchangeExchange a viewer link token (from the viewer email) for a short-lived access tokenPublic
GET /v1/viewer/envelopeRead-only envelope status for a viewer (the first open is recorded in the audit trail)Viewer token
GET /v1/viewer/documentThe document, when the sender let viewers see it (the sealed PDF once sealed)Viewer token
GET /v1/viewer/streamServer-sent `update` pings when the envelope changes (refetch the status); access token in the queryViewer token

Webhooks

EndpointWhat it doesAuth
POST /v1/webhook-endpointsRegister a webhook endpoint (Standard Webhooks; the secret is returned once)API key or dashboard
GET /v1/webhook-endpointsList webhook endpoints with delivery healthAPI key or dashboard
GET /v1/webhook-endpoints/{id}Get a webhook endpointAPI key or dashboard
PATCH /v1/webhook-endpoints/{id}Change URL, events, description or pauseAPI key or dashboard
DELETE /v1/webhook-endpoints/{id}Delete a webhook endpointAPI key or dashboard
POST /v1/webhook-endpoints/{id}/secretReveal the signing secretDashboard only
POST /v1/webhook-endpoints/{id}/secret/rotateRotate the signing secret (the old one also signs for 24 h)API key or dashboard
GET /v1/webhook-endpoints/{id}/deliveriesRecent delivery attemptsAPI key or dashboard
POST /v1/webhook-endpoints/{id}/testSend a `webhook.test` pingAPI key or dashboard
POST /v1/events/{id}/redeliverDeliver an envelope event to an endpoint againAPI key or dashboard

API keys

EndpointWhat it doesAuth
POST /v1/api-keysCreate an org API key (bf_live_/bf_test_); shown onceDashboard only
GET /v1/api-keysList org API keysDashboard only
DELETE /v1/api-keys/{id}Revoke an API keyDashboard only

Directory

EndpointWhat it doesAuth
GET /v1/scimSCIM endpoint, token state and provisioned usersDashboard only
POST /v1/scim/tokenCreate (or replace) the SCIM bearer token; shown onceDashboard only
DELETE /v1/scim/tokenRevoke the SCIM token (provisioning stops)Dashboard only

Organization

EndpointWhat it doesAuth
GET /v1/organization/settingsFeature flags (e.g. SMS add-on)API key or dashboard
GET /v1/organization/email-brandingEmail branding settings and what the plan allowsAPI key or dashboard
PUT /v1/organization/email-brandingChange email branding (display name, custom message; footer and Powered-by removal by plan)API key or dashboard
POST /v1/organization/email-branding/previewRender a sample email for the organization (optionally with unsaved branding); the plan's limits applyAPI key or dashboard
POST /v1/organization/logoUpload a logo (multipart `file`, PNG/JPEG/SVG/WebP ≤ 512 KB) → public URL to store via Better Auth organization.updateDashboard only
GET /v1/public/logos/{org}/{file}A public organization logoPublic
GET /v1/usageMetered usage for a billing period (YYYY-MM)API key or dashboard

SSO

EndpointWhat it doesAuth
GET /v1/sso/discoverDoes this email sign in with company SSO? (public, rate limited)Public
GET /v1/sso/connectionsSettings and health of the org's SSO connectionsDashboard only
GET /v1/sso/connections/{providerId}Settings and health of one connectionDashboard only
PUT /v1/sso/connections/{providerId}/settingsEnforcement, default role and JIT provisioningDashboard only
POST /v1/sso/connections/{providerId}/testsStart a test login; open `url` in a popup and poll the testDashboard only
GET /v1/sso/connections/{providerId}/tests/{testId}/startRedirect to the IdP for a test login (popup)Dashboard only
GET /v1/sso/connections/{providerId}/tests/{testId}Outcome of a test loginDashboard only
POST /v1/sso/saml-metadataFetch an IdP metadata URL server-sideDashboard only
GET /v1/sso/auditSSO and SCIM administration audit trail (newest first)Dashboard only

Billing

EndpointWhat it doesAuth
GET /v1/billingPlan, usage this period, upcoming invoice and entitlementsAPI key or dashboard
GET /v1/billing/subscriptionPlan and usage (subset of GET /v1/billing)API key or dashboard
POST /v1/billing/checkoutStart a subscription (Stripe Checkout URL) or switch an existing one in placeDashboard only
POST /v1/billing/portalStripe Customer Portal URL (cards, invoices, tax IDs, cancel)Dashboard only
POST /v1/billing/webhooks/stripeStripe webhook receiver (Stripe-Signature verified)Public

Verification

EndpointWhat it doesAuth
GET /.well-known/bona-fide/keys.jsonEd25519 public keys that sign evidence anchors, with validity periods (public)Public
GET /v1/public/anchorsSigned evidence anchors, newest first (public)Public
GET /v1/public/anchors/latestThe latest signed evidence anchor (public)Public
GET /v1/public/anchors/{sequence}A signed evidence anchor by sequence number (public)Public
POST /v1/public/verifyLook up a document by SHA-256: envelope summary, Merkle leaf, inclusion proof and signed anchor (public; hash the file locally)Public