Quire PDFSend JSON, get a PDF

Send JSON. Get a polished PDF.

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
Edit to re-render
packing-list.pdf1 page
Rendered document document

✓ Saved render of data.json. Edit the JSON and the page re-renders.

1
Quire PDFTemplates are optional

Templates are optional

One endpoint, three outcomes. Name a template only when you want that exact layout.

Any JSON becomes a clean document: rendered document

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)
Invoice-shaped JSON gets the invoice: rendered invoice

Detected invoice

Invoice-shaped JSON gets the invoice

The data had what an invoice needs (number, dates, seller, customer, items), so the invoice template was picked automatically.

render(data)
Name a template for exact control: rendered certificate

Named certificate

Name a template for exact control

Asking for template=certificate validates the data against that template's schema and renders exactly that layout.

render(data, { template: "certificate" })
2
Quire PDFThe gallery

Six designed documents

Each takes your brand colour and currency. Open one to see its fields and sample data.

3
Quire PDFFor your code

Typed SDKs, a CLI and plain HTTP

Name a template and your editor checks the data before you send it.

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);
Terminal
$ npx quirepdf-cli render bad.json -t invoice
✗ data has 2 problems
  • seller is required
  • items[0].qty must be a number
4
Quire PDFFor your agents

An MCP server for agents

Ask for a document in plain words. The agent fills in the data and saves the PDF.

Claude Code
$ claude mcp add quire \
    --env QUIRE_API_KEY=qk_live_… \
    -- npx -y quirepdf-mcp

Make 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.

5
Quire PDFSpeed

Fast because there's no browser

Most PDF APIs print HTML in headless Chrome. Quire typesets your data directly with a compiled engine.

Render time and memory, Quire engine and headless Chrome
MeasuredQuireHeadless Chrome
One-page invoice4 ms800–2,000 ms
Four pages, 60 line items12 msNot measured
Fourteen pages, 300 line items48 msNot measured
Server memory under load54 MB200–400 MB per browser
6
Quire PDFPricing

Pay for the pages you make

Plans
PlanRenders a monthPriceGood for
Free100FreeNo card needed
Starter2,000$19/moSide projects and small apps
Pro15,000$49/moGrowing products
Scale75,000$99/moHigh-volume billing runs

Paid plans open shortly. The free plan is live now.

Get a free API key

7
Quire PDFQuestions

Questions

Do I need to design a template before I can render?

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.

How much does it cost?

The free plan includes 100 renders a month with no card. Paid plans are $19, $49 and $99 a month for 2,000, 15,000 and 75,000 renders. Only successful renders count; validation is free.

Can I use my own brand?

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.

Do you store my documents or data?

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.

How is this different from HTML to PDF with Puppeteer or wkhtmltopdf?

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.

What renders the PDFs?

The templates are written in Typst, an open-source typesetting system, and Quire runs its compiler as a library inside a Rust service. You never write Typst to use Quire: you send JSON and get a PDF. If you already know Typst, you'll recognise the typography.

Can AI agents use Quire?

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.

Which languages are supported?

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.