Why templates as JSON
Your templates are plain files. They live in your repository, next to the code that uses them:Version-controlled
git diff shows exactly what changed about your invoice. git revert undoes it. No separate template store to keep in sync with your code.No HTML, no browser
Tipar renders with QuestPDF, not a headless Chromium. You describe a document, not a web page — so there are no CSS surprises and no print stylesheet to fight.
Copy-pasteable
A template is just JSON. Move it between projects, generate it from your own code, review it in a pull request like anything else.
Predictable
The template maps directly to layout primitives (
column, row, text, table). What you write is what gets laid out.How it works
Write a template
Plain JSON describing the page. Keep it in your repo. See Templates.
POST your data
Send
template + data to POST /generate with your API key. Anything that speaks HTTPS — a Stripe webhook, a database row, a cron job — can produce a document.Is Tipar a fit?
Where to go next
Quickstart
Your first PDF in a few minutes.
Authentication
Create and use an API key.
Templates
Learn the template language.
Template schema
The complete node-by-node reference.
Want to try it without a key? The public playground renders a watermarked PDF straight from the browser — no signup. Under the hood it’s the same renderer as the API.