Quickstart
kove is a hosted document API: we run the rendering and scaling, you run nothing. The fastest way to see it work is a local render, shown below. The real way to use it is the hosted API, which your coding agent integrates into your app for you. This page covers both.
1. Create a document
Section titled “1. Create a document”Save this as invoice.json. It is a complete, valid document: a header, a table, a totals block, and a footer with page numbers.
{ "page": { "size": "A4", "margin": "18mm" }, "header": { "repeat": true, "text": "Acme Inc. · Invoice F-2026-001" }, "footer": { "repeat": true, "pageNumbers": "Page {page} of {pages}" }, "body": [ { "type": "heading", "text": "Invoice F-2026-001" }, { "type": "fields", "items": [ { "label": "Customer", "value": "Globex Corp" }, { "label": "Date", "value": "2026-06-29" }, { "label": "Due", "value": "2026-07-29" } ] }, { "type": "divider" }, { "type": "table", "repeatHeader": true, "keepRowTogether": true, "columns": [ { "key": "desc", "label": "Description" }, { "key": "qty", "label": "Qty", "align": "right" }, { "key": "price", "label": "Price", "align": "right" }, { "key": "total", "label": "Total", "align": "right" } ], "rows": [ { "desc": "Brand design", "qty": 1, "price": "1200.00", "total": "1200.00" }, { "desc": "Web layout", "qty": 3, "price": "400.00", "total": "1200.00" }, { "desc": "Support (hours)", "qty": 8, "price": "60.00", "total": "480.00" } ] }, { "type": "totals", "keepWithPrevious": true, "lines": [ { "label": "Subtotal", "value": "$2880.00" }, { "label": "Tax 21%", "value": "$604.80" }, { "label": "Total", "value": "$3484.80", "emphasis": true } ] } ]}2. Render it locally
Section titled “2. Render it locally”This is the quickest way to try kove. It runs on your machine, with no account.
npx kove render invoice.json -o invoice.pdfThat is it. npx downloads the CLI, validates the document, compiles it, and renders it with Chromium on your machine. No account, no key.
✓ invoice.pdf (28431 bytes)Open invoice.pdf: the header and footer repeat on every page, the page numbers are in place, and if you add 40 more rows to the table you will see the column header repeat, the rows stay whole, and the totals block stays attached to its table. You did not write a line of CSS.
3. Get an API key
Section titled “3. Get an API key”The hosted API is the product. To use it, sign in once and get a key:
npx kove loginThe browser opens, you sign in (GitHub, Google, or email), and the API key comes back to the terminal on its own. You copy nothing. The free tier is 100 documents per month. See Auth and billing.
4. Let your AI wire the API into your app
Section titled “4. Let your AI wire the API into your app”This is the real path. You do not learn the HTTP API by hand. Open your codebase in a coding agent like Claude Code and tell it what you need:
“Add PDF invoices to my checkout using the kove API. Here is my key.”
The agent reads kove’s OpenAPI spec and simple JSON model, then wires the call, the auth, and your data into your app. You review the change and ship it. Document generation is now part of your product, and you barely notice there is a provider behind it.
When you call the API yourself, it looks like this. The body wraps your document under a document key:
curl -X POST https://api.kove.dev/v1/documents \ -H "Authorization: Bearer $KOVE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "document": { "body": [ { "type": "heading", "text": "Hello, kove" } ] } }'Next step
Section titled “Next step”- HTTP API · the primary surface, the one your AI integrates.
- Document model · every building block and what it does.