canonical: https://jentic.com/apis/formfeed.dev/formfeed

# Formfeed

The Formfeed API generates PDFs and images from templates and JSON data, one call per document. It renders HTML templates written in Jinja2, Liquid, or Handlebars, Word and PowerPoint templates, ad-hoc HTML, and public web pages, and it merges, protects, watermarks, converts, and inspects PDFs. Templates are managed as code with versions, release channels, and canary promotion, backed by workspace files, shared partials, and a brand kit. Render events are delivered to webhook endpoints, and rendering runs in the EU or US region.

## For AI agents

Render PDFs and images from HTML, Word, PowerPoint, or URL templates, and merge, protect, watermark, and convert PDFs. Agents can manage templates as code and receive render events on webhooks.

## Scope

Does not handle e-signatures, long-term document storage, or print fulfillment. Use for generating and transforming PDFs and images from templates only.

## Capabilities

- Render PDFs and images from HTML, Word, PowerPoint, or URL templates in one call
- Manage templates as code with versions, release channels, and canary promotion
- Merge, password-protect, watermark, convert, and inspect PDFs
- Store workspace files, shared partials, and a brand kit used by templates
- Validate template data against a template's generated schema
- Deliver render events to webhook endpoints and resend failed deliveries
- Run batch renders and poll a batch job for results

## Use cases

### AI Agent Document Generation

An AI agent connected through Jentic can turn structured data into a finished PDF or image without a human opening a design tool. The agent searches for the render operation, Formfeed returns its input schema, and the agent submits a template id with JSON data and waits for the result. This lets an assistant produce invoices, reports, or certificates on demand.

Example prompt: Create a render from a template with JSON data and wait for the result

### Templates as Code

Manage document templates with versions and release channels, promoting a canary before rolling it out and rolling back when needed. An automation can create a draft version, validate it with sample data, and publish it so downstream renders pick up the change.

Example prompt: Create a draft template version and publish it to a release channel

### PDF Post-Processing

Combine Formfeed rendering with its PDF tools to merge several documents, apply a password, add a watermark, or convert an office file to PDF. This covers the finishing steps a document pipeline needs after the content is rendered.

Example prompt: Merge two PDFs and watermark the resulting document

### Batch Rendering with Webhooks

Submit a batch of renders and poll the batch job, or register a webhook endpoint so Formfeed pushes completion events as each document finishes. This scales document generation beyond one-at-a-time calls for mail merges and bulk exports.

Example prompt: Create a batch of renders and register a webhook to receive completion events

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/renders` | Create a render |
| GET | `/renders/{id}/result` | Wait for a render result |
| POST | `/templates` | Create a template |
| POST | `/templates/{id}/versions/{number}/publish` | Publish a template version |
| POST | `/pdf/merge` | Merge PDFs |
| POST | `/pdf/watermark` | Watermark a PDF |
| POST | `/renders/batch` | Create a batch of renders |
| POST | `/webhooks` | Create a webhook endpoint |

## Key resources

- **Renders** — Create, read, and batch renders of PDFs and images
- **Templates** — Templates, versions, release channels, and data schema
- **PDF tools** — Merge, protect, watermark, convert, and inspect PDFs
- **Files and Brand** — Workspace files, shared partials, and the brand kit
- **Webhooks** — Render-event delivery with resend and listen sessions

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 69 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 59 / 100
  - Developer Experience & Jentic Compatibility: 69 / 100
  - AI-Readiness & Agent Experience: 74 / 100
  - Agent Usability: 92 / 100
  - Security: 60 / 100
  - AI Discoverability: 57 / 100
- **View full report:** https://jentic.com/apis/formfeed.dev/formfeed/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Formfeed by hand means setting up Bearer key auth, choosing the EU or US regional host, and handling idempotency keys and RFC 9457 error details yourself. Through Jentic you install once, import Formfeed from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Formfeed separates render operations from template, file, and workspace management, so a rule can hold your agent to rendering while template, file, and workspace edits stay out of reach. You choose the operations it may call, so a destructive one like archiving a template or deleting a workspace is not included unless you add it.
- **Credential handling:** Your Formfeed API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'render a PDF from a template' or 'merge PDFs', and Jentic returns the matching Formfeed operation with its input schema so the agent calls the right endpoint without reading the docs.

## Related APIs

- **CraftMyPDF** — Generate PDFs and images from drag-and-drop templates.
- **PDFMonkey** — Render PDFs from HTML templates with a managed dashboard.
- **PDF Generator API** — Template-based PDF generation with a browser-based editor.
- **PDF.co** — Broad PDF toolkit for parsing, conversion, and data extraction.

## FAQ

### What authentication does the Formfeed API use?

Formfeed authenticates with a Bearer API key per its OpenAPI spec: send a workspace key in the Authorization header, or in the X-API-Key header. Test keys render for free. Through Jentic the key is stored encrypted by your own Jentic One instance and injected at call time, so it never reaches the agent's prompt or logs.

### Can I merge and watermark PDFs with the Formfeed API?

Yes. Beyond rendering, Formfeed offers PDF tools to merge multiple PDFs, password-protect a PDF, watermark it, convert an office document to PDF, and inspect a PDF's structure.

### Is there a Formfeed MCP server?

You don't need an MCP server to give your agent Formfeed. Jentic connects it directly from the API Directory: import the API, store your key once, and your agent calls the render and PDF-tool endpoints it needs.

### Can I limit what my agent is allowed to do with the Formfeed API?

Yes. Write a rule that allows only the render and result-polling operations, so a document agent can produce PDFs while nothing can archive a template or delete a file, and every call it makes is logged.

### What are the rate limits for the Formfeed API?

The OpenAPI spec does not publish specific rate limits; they depend on your Formfeed plan. Formfeed exposes an account endpoint and a usage endpoint you can read to track the current period, and documents limits at docs.formfeed.dev.

### How do I render a PDF with the Formfeed API through Jentic?

Search Jentic for an intent like 'render a PDF from a template', and it returns the Formfeed render operation with its input schema so your agent calls it with a template id and data. Your stored key is injected at call time. To run it on your own infrastructure, install Jentic One from its GitHub repo.
