Deterministic PDFs from JSON.
In batches.

Typst-powered document engine on a batch-native API. Real pagination, retries, webhooks and signed URLs — no Chromium in the loop.

Read the docs →

$ curl -X POST https://api.pagekiln.dev/v1/batches \
  -d '{"template_id": "tpl_invoice", "items": [ …5000 ]}'
{"batch_id": "job_8f2a…", "total": 5000, "status": "queued"}

Still babysitting headless Chromium?

Cold starts, RAM spikes and Docker tuning — for a single PDF.

Fragile pagination for long tables, statements and reports.

DIY queues, retries, storage and webhooks around a single-render API.

Pricing that stops being predictable the moment volume grows.

Batch-native

One JSON array or NDJSON file in — thousands of PDFs out, with status, partial-failure handling and webhooks.

Document engine

Typst templates with real pagination, tables, page furniture and math — reproducible output, not browser screenshots.

API-first

Templates, versions, keys, usage, batches and webhooks — REST, SDK and CLI before any UI.

Predictable pricing

Document quotas first — no cent-level overage surprises at volume.

Template → JSON → PDFs

1

Upload a Typst template — or start from a starter template.

2

POST your JSON to /v1/render or /v1/batches.

3

Fetch signed URLs, or let a webhook tell you when the batch is done.

🇪🇺 EU-hosted Deterministic, reproducible output Self-host path for regulated teams

Get early access

Leave your email — we'll reach out when the private beta opens. Free tier at launch.