Someone books, buys or joins → the thing they hold
Not every document is a table of numbers. Some of them get scanned at a door.
Trigger → artefact
A booking is confirmed, a voucher is bought, a parcel is packed, a customer joinsa pass, a card, a label or a letter — at the real page size, with a code that scans
These are the documents nobody files. They are carried on a phone, printed on a thermal roll, or handed across a counter — and they fail differently from an invoice. A wrong total is an argument; a QR that will not scan is a queue at the door.
So the page size is the real one — A5 for a pass, A5 landscape for a voucher, 101.6 × 152.4 mm for a label — and the codes are drawn as vectors during the render, not pasted in as an image that goes soft at 300 DPI. There is almost no arithmetic here, which is the point: the caller sends the strings, and what comes back is the artefact.
Built with the HTML API. Need a designed image or certificate instead? Use the Canvas API — same data, same free year.
Event pass — rendered by the template this page calls.
What ships in this category
The documents, and the part of each that is hard.
Event pass
A5 admission pass: attendee, tier, dates and venue, the entitlements it opens, and a QR given enough clearance to scan off a screen.
Hard part A vector QR with the quiet zone kept, at a page size a scanner actually meets.
template_id 660b0f05-93a5-4f05-b5b4-33248025f2a4
Gift voucher
A5 landscape card: a saturated face carrying the value in your brand colour, and a paper half carrying the code, the message and the terms.
Hard part A full-bleed colour face at A5 landscape that survives print without a white hairline.
template_id 40e09323-4b68-412f-9641-4212bd1c7a61
Shipping label
The 4 × 6 label a warehouse prints thousands of a day: heavy addresses, a service band, and a Code 128 barcode of the tracking number.
Hard part Code 128 drawn to spec at thermal-printer resolution, on a non-A4 page.
template_id d936cb21-6192-417c-8885-69a5b304596b
Welcome letter
One page on your stationery when someone joins or a plan starts: the key dates, a numbered checklist, and a QR to the portal.
Hard part Nothing arithmetic — which is why it has to look like it came from you, not from us.
template_id 1ca8360e-4447-41d3-9a85-1097f3a91d43
The whole integration
One call. Named fields. No SDK to install.
the call your product makesbash
# one call when the ticket is issued
curl https://api.pixldocs.com/v1/render \
-H "Authorization: Bearer $PIXLDOCS_KEY" \
-H "Content-Type: application/json" \
-d '{
"template_id": "660b0f05-93a5-4f05-b5b4-33248025f2a4",
"format": "pdf",
"data": {
"organiser": "Northbound Conf",
"event_name": "Northbound 2026",
"attendee_name": "Rina Takahashi",
"ticket_id": "NB26-0731-A",
"event_date": "24-25 September 2026",
"venue_name": "The Foundry, Hall 2",
"scan_value": "https://northbound.example.com/pass/NB26-0731-A",
"entitlements": [{ "item": "All talks, both days" }]
}
}' --output pass.pdf
Run against the API before publishing: 200, application/pdf, 25 KB at A5 — and the QR in it is vector, so it is the same code at screen size and at 300 DPI.
The contract
Exactly what you send, exactly what you get.
These templates take named keys — no positional arguments, no layout to describe. Send a row array and the pagination follows it.
Send as many as you have. Pagination, running totals and the carried-forward header are the renderer's problem, not yours.
What you would ask next.
Will the QR actually scan?
It is drawn as vector paths with the quiet zone preserved, so it does not degrade when the pass is printed or zoomed. What we do not do is validate the payload — if you send a URL that 404s, we print it faithfully.
Our labels go to a thermal printer, not A4.
The label template is 101.6 × 152.4 mm with zero margins, which is the 4 × 6 roll. Any page size can be set per template; we do not force A4 on documents that are not A4.
Can these carry our brand, not a generic look?
The workspace brand kit supplies the logo, accent colour and typeface, and the voucher and pass take a brand colour per call, so one template can serve several brands.
Ten thousand passes for one event?
Same burst path as payroll: submit in batches of 100 and poll the ids. We have measured 1,000 documents end to end; beyond that is arithmetic, not a promise.
Your system already knows when the document is owed.