Free to build: unlimited test renders

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.

Templates are optional

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.

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" })

Integrate in minutes

Typed SDKs for TypeScript and Python, a CLI and plain HTTP. Name a template and your editor checks the data before you send it.

  • No dependencies. quirepdf on npm and PyPI, quirepdf-cli for the terminal.
  • Errors name the field. Bad data comes back as a list of problems with paths, not a stack trace.
  • Build for free. Test renders are watermarked, unlimited and never counted.
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

Fast because there's no browser

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.

Six designed documents

Every page here is a real render, made by the same engine that serves the API. Each takes your brand colour and currency.

Built for agents, too

The MCP server gives Claude and other agents three tools: render a document, check data for free, and look up any template's fields.

  • One line to install in Claude Code, Claude Desktop, Cursor or any MCP client.
  • Agents iterate for free with watermarked test renders, then make the final 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.

Pay for the pages you make

Build and test for free. Only successful, non-test renders count, and there are no overage charges.

  • Free

    $0/month

    20 renders a month

    Plus unlimited watermarked test renders

    Start free
  • Starter

    $19/month

    2,000 renders a month

    Side projects and small apps

    Choose Starter
  • Scale

    $129/month

    50,000 renders a month

    High-volume billing runs

    Choose Scale

Questions

Something else? Every docs page is also available as Markdown, and llms.txt lists them all. Or write to [email protected].

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?

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.

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?

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.

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.

Your first PDF is one request away.