One call to send
A single request carries both the design and the audience. Reference a template, attach recipients inline or as a file, and rendering starts immediately.
How campaigns work
Design once in the web app. Then create campaigns, load recipients and send letters.
curl -X POST http://localhost:3000/api/v1/campaigns \
-H "x-api-key: drse_your_api_key" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer promo",
"templateId": "<template-uuid>",
"recipients": [
{ "name": "Alice Andersson", "street": "1 First St", "postCode": "111 11", "postTown": "Stockholm", "country": "SE" }
]
}'That creates a list, imports the recipient, renders a personalised document and queues it for print. Check the state at GET /api/v1/campaigns/:id
There is no unsend
A campaign that reaches processing is being printed. It cannot be recalled, edited or stopped. Treat campaign creation as an irreversible, billable action — and always send an Idempotency-Key to avoid duplication.
Two ways to supply content
Reference a template by id — designed in the web app, the only manual step — or send your own print-ready PDF. Raw editor content is not supported.
| If you want to… | Start here |
|---|---|
| Send something today | Quickstart |
| Understand the model first | Introduction |
| Send to a reusable audience | Campaign from a saved list |
| Send addresses you already hold | Campaign with inline recipients |
| Upload a spreadsheet | Campaign from a CSV or Excel file |
| Print your own artwork | Campaign from a PDF |
| Add a QR code you can repoint later | Track QR scans |
| Look up a field or status code | API reference |
| Go live safely | Production checklist |