Quickstart
From signing up to your first generated PDF — five minutes, no theory.
1. Create your account
Sign up with an email and a password. You land on the dashboard with a Free plan (50 generation credits + 20 AI credits, renewed monthly).
2. Create a template
From the Documents tab, click New document and pick a name (e.g. Invoice). You land in the editor with a default Hello-world template.
Replace the body with something concrete — the editor handles HTML, Tailwind classes, and Handlebars expressions:
<section class="p-12 font-sans">
<h1 class="text-3xl font-bold">Invoice {{invoice.number}}</h1>
<p class="mt-2 text-slate-600">Billed to {{customer.name}}</p>
<table class="mt-8 w-full border-collapse">
<thead>
<tr class="border-b">
<th class="text-left py-2">Item</th>
<th class="text-right py-2">Amount</th>
</tr>
</thead>
<tbody>
{{#each items}}
<tr class="border-b">
<td class="py-2">{{label}}</td>
<td class="py-2 text-right">{{amount}} €</td>
</tr>
{{/each}}
</tbody>
</table>
{{#if paid}}
<p class="mt-8 text-emerald-700 font-semibold">PAID</p>
{{/if}}
</section>
Open the Variables panel on the right and seed it with sample data so the preview renders something meaningful:
{
"invoice": { "number": "INV-2026-0142" },
"customer": { "name": "Acme Corp" },
"items": [
{ "label": "Pro subscription", "amount": 1200 },
{ "label": "Top-up — 1k PDFs", "amount": 80.50 }
],
"paid": true
}
The right pane updates live. Click Save when happy.
3. Grab the document UUID
Still in the editor, copy the document's UUID from the integration panel (the long 1d8e5d56-… value). You'll pass it as documentId on every API call.
4. Create an API key
Open API Keys → New key, give it a name (e.g. Production or Dev — laptop). Copy the tk_live_… token immediately — it's shown once and never again. Stash it in your secret manager.
5. Render your first PDF
curl -X POST 'https://api.transactional.dev/v1/generate' \
-H "x-api-token: $TRANSACTIONAL_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"documentId": "1d8e5d56-1a4f-4b62-8c33-2d34a64b2f00",
"variables": {
"invoice": { "number": "INV-2026-0142" },
"customer": { "name": "Acme Corp" },
"items": [
{ "label": "Pro subscription", "amount": 1200 },
{ "label": "Top-up — 1k PDFs", "amount": 80.50 }
],
"paid": true
}
}'
Response:
{
"url": "https://files.transactional.dev/client/42/generated/.../1716470000000.pdf",
"documentId": "1d8e5d56-1a4f-4b62-8c33-2d34a64b2f00"
}
That's your PDF. url is signed and short-lived — download it or stream it to your own bucket immediately.
Where to go next
- Use Transactional from your AI assistant — let Claude or Cursor call
generate_pdffor you. - Calling /v1/generate from Node/Bun — production-grade integration with retries.
- Modeling your variables — what should be a variable vs. inline text.
- Handlebars cheat sheet — the exact subset supported.