Skip to main content

Workflows API

A workflow turns rows of data into rendered, delivered documents: point it at a spreadsheet or push rows to its inbound hook, and every row becomes a branded certificate, badge or report — rendered from your template and optionally emailed to its recipient. Workflows are built in the dashboard; the API surface below is how external systems feed and observe them.

Inbound hooks

Every workflow can expose an inbound hook — a public URL that accepts rows from any system that can send JSON (Zapier, n8n, your backend, a form provider):
The random secret in the URL authenticates the caller. Each accepted row is rendered with the workflow’s template and delivered per the workflow’s settings.

Optional HMAC signing

A URL travels through proxy logs, browser history and referrers — so for higher assurance, enable require signature on the hook. The sender must then also sign the exact raw request body:
where v1 = HMAC_SHA256(signingSecret, t + "." + rawBody). With signing on, a leaked URL alone is no longer enough to inject rows; the signature also rules out payload tampering and replay (timestamps outside the tolerance window are rejected).
Sign the exact bytes you send. Re-serialising JSON after signing changes key order or whitespace and invalidates the signature.

Runs and stats

A run reports per-row progress — counts: { total, rendered, delivered, failed } — so a caller can poll a run until rendered === total or surface partial failures precisely.

Hook management

All management endpoints authenticate with your normal API key as a Bearer token; only the inbound hook URL itself is public.