Formfeed
Generate PDFs and images from templates and JSON data, one API call per document.
Formfeed renders HTML templates written in Jinja2, Liquid or Handlebars, Word and PowerPoint templates, ad-hoc HTML and public web pages, and merges, protects and watermarks PDFs. Rendering runs in Frankfurt, and rendered files are stored in the EU. Guides, the TypeScript and Python SDKs and the CLI are documented at docs.formfeed.dev.
Authentication: send an API key of your workspace as Authorization: Bearer ff_live_…, or in
the X-API-Key header. Keys are created in the app, each with
the scopes it may use; every operation below names the scope it needs. A key sent from a browser
(a request with an Origin header) is refused unless the key allows that origin. ff_test_…
keys render for free: nothing is counted, outputs are kept for a day, and on the Free plan every
test file carries a mark.
Errors are RFC 9457 problem details with a stable code; each problem's type links to the
page that explains it. The apitemplate.io shim under /compat answers most of its errors in
apitemplate.io's own shape instead. Idempotency: send an Idempotency-Key header on every
POST; for 24 hours a retry with the same key returns the first JSON answer instead of rendering
and charging again. Rate limits: the requests that start work (renders, batches, PDF tools,
the shim, a storage connection's test) share one bucket per workspace that holds the plan's
requests per second. Versioning: the version is in the path, and changes within /v1 are
additive.
Authentication
- HTTP: Bearer Auth
- API Key: apiKeyHeader
- HTTP: Bearer Auth
API key from the workspace: ff_live_… or ff_test_….
Security Scheme Type: | http |
|---|---|
HTTP Authorization Scheme: | bearer |
Bearer format: | API key |
The same API key in the X-API-Key header, as apitemplate.io clients send it.
Security Scheme Type: | apiKey |
|---|---|
Header parameter name: | X-API-Key |
A member's session in the Formfeed app, sent with the workspace in X-Formfeed-Workspace. The routes that take only this refuse every API key and every connected agent with 403.
Security Scheme Type: | http |
|---|---|
HTTP Authorization Scheme: | bearer |
Bearer format: | JWT |
Terms of Service
https://formfeed.dev/legal/terms