HTML to PDF API
Send HTML, get a PDF back in under a second.
curl -X POST https://api.getpapyr.dev/v1/render/pdf \
-H "Authorization: Bearer pk_live_..." \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>Invoice #1042</h1><p>Amount: $420.00</p>",
"options": { "format": "A4" }
}' \
--output invoice.pdfThat's it. No SDK required.
Everything wrong with the alternatives
We built Papyr because we spent too many hours on the same problems you're hitting right now.
Puppeteer on Linux
Missing system fonts, blank pages, 400 MB Docker images, random crashes in production. Works on your Mac, explodes on your server.
Papyr runs managed Chromium on our infrastructure. Your server sends HTML, we return a PDF.
wkhtmltopdf
Archived in 2023. Unpatched CVSS 9.8 CVE. No Flexbox. No Grid. Renders like it's 2012.
Modern Chromium rendering engine. Every CSS feature that works in Chrome works in Papyr.
Other PDF APIs
Credit-based pricing that runs out mid-month. Per-page charges that explode on reports. Surprise invoices.
Flat per-document pricing. One invoice per month. No surprises.
What you get
Full CSS support
Flexbox, Grid, custom fonts via Google Fonts or @font-face, background images, box shadows — if it renders in Chrome, it renders in Papyr.
Built-in templates
Invoice, receipt, and report templates. Pass JSON data, get a professional PDF back. No HTML required.
Under a second
Managed Chromium pool with concurrency control. No cold starts, no queuing at normal volumes.
Paper formats + margins
A0–A6, Letter, Legal, Tabloid, Ledger. Landscape mode. Per-side margin control down to the millimeter.
AI agent ready
MCP server included. Claude, Cursor, and Windsurf can generate PDFs directly — no integration code.
Simple REST API
One endpoint, Bearer token auth, binary PDF response. OpenAPI spec at /openapi.json. No SDK required.
What teams use it for
Invoices, reports, certificates — documents that have to look right every time.
Simple, predictable pricing
Per document, not per page, not per credit. One invoice a month.
Migrating from Puppeteer or wkhtmltopdf? Drop-in migration guide →