PDF infrastructure for builders
Ship beautiful PDFs without touching a layout engine.
Describe the document to an AI agent. It writes the HTML, picks the fonts, wires the variables. You call one endpoint, or your MCP-aware editor does it for you, and you get a PDF back.
No credit card · Free tier with generous credits · MCP-ready
How it works
Design your PDFs once. Generate them on demand with one API call.
01
Design your template
Write the HTML and Tailwind yourself, or let an AI agent design it for you — both modes share the same editor and any Google Font.
{{name}}
John Doe
02
Mark transactional variables
Drop Handlebars placeholders, conditions and loops where the data should land. One template, infinite personalized PDFs.
- POST /v1/generate
03
Call one API endpoint
Your backend POSTs the document id and the variables it already has. No SDK to learn, no rendering code to maintain.
- PDFhttps://…/pdf/8c7a…
04
Get a ready-to-serve PDF
We compile, render and host the PDF on our CDN — return the URL to your user or store it for later. Every call is logged in the dashboard.
- No render stack to maintain
- Update templates without redeploying
- Scales from one PDF to thousands
- One endpoint, one dashboard
Claude Code
Opus (1M Context) · Claude Enterprise
> Add a PDF receipt to my Stripe checkout. A4, Inter Tight, total bold.
⏺create_document(name: "receipt")
⎿ Created doc_8c7a…
⏺edit_html(documentId, html)
⎿ Updated HTML · 438 chars
⏺generate(documentId, variables)
⎿ Rendered 2bV3.pdf
⏺Write(src/checkout.ts)
⎿ +24 lines
Done. Template ready, sample PDF rendered, call wired into src/checkout.ts.
AI-native
Your agent ships the PDF. You don't.
The whole Transactional API is exposed through MCP. Your assistant doesn't just chat about templates. It creates them, renders real PDFs against your sample data, and writes the integration code into your project. End-to-end, in one conversation.
- Full API exposed: create, edit, render, list and manage documents straight from chat.
- Renders real PDFs as it iterates, with your sample variables. No guessing.
- Writes the call into your codebase: controller, types, error handling, fallback.
Templates
Like transactional emails. For PDFs.
You already know this mental model. Handlebars variables, conditions, loops, the same DX as Postmark or Resend. The difference: the output is a branded, pixel-stable PDF, designed in HTML + Tailwind with any Google Font.
- Handlebars variables, conditions and each-loops. No DSL to learn.
- Tailwind + raw CSS. Style it like you'd style a landing page.
- Each call gets its own variables. Same template, fully personalized.
- Live preview with sample variables, before a single API call.
<section class="p-12 font-sans">
<h1 class="text-3xl font-bold">Invoice {{invoice.number}}</h1>
<p>For {{customer.name}}</p>
{{#each items}}
<div class="flex justify-between py-2 border-b">
<span>{{label}}</span>
<span>{{amount}} €</span>
</div>
{{/each}}
{{#if paid}}
<span class="text-emerald-600 font-semibold">PAID</span>
{{/if}}
</section>Send the variables your backend already has. Every generation renders a personalized PDF. Same template, infinite documents.
Generation API
Throw away your Puppeteer fleet.
Chromium in Lambda, cold starts, OOM at 3am, missing system fonts. Not your problem anymore. One request, your PDF. Scaled, monitored and managed on our side. Observable on yours.
- Burst to thousands of generations. We handle the load.
- Signed, short-lived URLs you can serve or store immediately.
- Every call logged with status, latency and payload.
API calls
24,118
Success rate
99.94%
p95 latency
412 ms
Pricing
Honest, transparent pricing.
Start free. Scale linearly. Top up when you need an extra burst. Never expires.
Free
Generous monthly credits, full editor, MCP & API access.
Pro
Higher monthly credits, AI assistant, priority rendering.
Top-up
Buy extra generation or AI credits any time. They never expire.
FAQ
Answers, before you sign up.
Ship your first PDF before your coffee gets cold.
Free tier, no card required. Bring an AI agent, or vibe-code with ours.

