
Fallback document
Any JSON becomes a clean document
No template sent, none matched, so Quire laid the data out itself: header from title and from/to, short fields in a panel, the array as a table.
render(data)One API call turns your app's data into invoices, receipts, quotes and reports. No template to design first: Quire reads the shape of your data and sets the page.
npx quirepdf-cli login
✓ Saved render of data.json. Edit the JSON and the page re-renders.
One endpoint, three outcomes. Quire picks the template your data fits, or lays it out cleanly. Name one only when you want that exact layout.

Fallback document
No template sent, none matched, so Quire laid the data out itself: header from title and from/to, short fields in a panel, the array as a table.
render(data)
Detected invoice
The data had what an invoice needs (number, dates, seller, customer, items), so the invoice template was picked automatically.
render(data)
Named certificate
Asking for template=certificate validates the data against that template's schema and renders exactly that layout.
render(data, { template: "certificate" })Typed SDKs for TypeScript and Python, a CLI and plain HTTP. Name a template and your editor checks the data before you send it.
quirepdf on npm and PyPI, quirepdf-cli for the terminal.import { Quire } from "quirepdf";
import { writeFile } from "node:fs/promises";
const quire = new Quire(); // reads QUIRE_API_KEY
const pdf = await quire.render(order); // any JSON object
await writeFile("order.pdf", pdf.bytes);from quirepdf import Quire
quire = Quire() # reads QUIRE_API_KEY
quire.render(order).save("order.pdf")curl https://api.quirepdf.dev/v1/render \
-H "Authorization: Bearer $QUIRE_API_KEY" \
-H "Content-Type: application/json" \
-d @order.json -o order.pdfnpx quirepdf-cli login [email protected]
npx quirepdf-cli render order.json # writes order.pdf$ npx quirepdf-cli render bad.json -t invoice ✗ data has 2 problems • seller is required • items[0].qty must be a number
Most PDF APIs print HTML in headless Chrome. Quire typesets your data directly with a compiled engine.
4ms
one-page document, median
48ms
fourteen pages, 300 line items
54MB
server memory under load
For comparison, headless Chrome takes about 48 ms warm and 147 ms cold for a simple page on a similar laptop (pdf4.dev), and 85–200 MB per conversion (Kyotu). Quire figures are medians measured in October 2026 with unique data on every render.
Every page here is a real render, made by the same engine that serves the API. Each takes your brand colour and currency.
The MCP server gives Claude and other agents three tools: render a document, check data for free, and look up any template's fields.
$ claude mcp add quire \
--env QUIRE_API_KEY=qk_live_… \
-- npx -y quirepdf-mcpMake a PDF receipt for Maya Chen's annual Team plan, $1,188, paid today by Visa ending 4242.
● render_document saved receipt-2026-10-03.pdf, receipt template, 1 page
Done. The receipt is in your working folder. I filled the payment method and marked it paid.
Build and test for free. Only successful, non-test renders count, and there are no overage charges.
$0/month
20 renders a month
Plus unlimited watermarked test renders
Start free$19/month
2,000 renders a month
Side projects and small apps
Choose Starter$49/month
10,000 renders a month
Growing products
Choose Pro$129/month
50,000 renders a month
High-volume billing runs
Choose ScaleSomething else? Every docs page is also available as Markdown, and llms.txt lists them all. Or write to [email protected].
No. Send any JSON object to POST /v1/render and you get a PDF back. If your data looks like an invoice, receipt, quote, credit note, statement or certificate, Quire uses that template. Otherwise it lays the data out as a clean document: a header from title, from and to, short fields in a details panel, and arrays as tables.
Building is free: test renders (watermarked) are unlimited on every plan, and the free plan adds 20 clean PDFs a month with no card. Paid plans are $19, $49 and $129 a month for 2,000, 10,000 and 50,000 renders. Only successful, non-test renders count; validation is free.
Yes. Every template takes your brand colour (accent) and currency symbol, and uses your company name for the letter mark. Uploading fully custom templates is on the roadmap.
No. Each document is rendered in memory and returned in the response. Quire keeps a monthly count of renders per account for billing, not the data or the PDFs.
There's no browser involved. Quire typesets with a compiled engine, so a one-page invoice renders in about 4 ms, page breaks and repeating table headers come out right, and you don't run Chrome in production. You send data, not HTML.
A compiled typesetting engine running inside our Rust service, not a browser. It lays out your data directly, which is why a one-page invoice takes about 4 ms, and why page breaks and repeating table headers come out right. You never deal with it: you send JSON and get a PDF.
Yes. The MCP server (npx -y quirepdf-mcp) gives agents like Claude tools to render documents, check data and look up template fields. The CLI and SDKs also have machine-readable output.
Anything that can make an HTTP request. There are typed SDKs for TypeScript/JavaScript (npm i quirepdf) and Python (pip install quirepdf), plus a CLI.