Skip to content

Intelliprint API

Send letters and postcards from code. One API, two types, zero print infrastructure.

POST to /prints with the content and recipients you want to mail. Letters or postcards, one recipient or thousands, inline HTML or a PDF file. Printed in our Leeds facility, posted via Royal Mail, same-day dispatch before 3pm.

One call in, tracked mail out

Trigger a letter. Get the delivery data back.

POST /v1/prints
JSON
{
  "template_id": "tmpl_letter_welcome",
  "list_id": "list_9f3a21",
  "recipient": {
    "name": "{first_name} {last_name}",
    "address_line1": "{address_line1}",
    "postcode": "{postcode}"
  }
}

Printed, enclosed, and handed to Royal Mail — same day if sent before 3pm.

webhook: print.delivered
JSON
{
  "event": "print.delivered",
  "print_id": "prt_7c1e4b2a",
  "carrier": "royal_mail",
  "delivered_at": "2026-07-01T09:42:00Z"
}

Why build on Intelliprint

An API built for the business it actually runs.

One endpoint, one model

Letters and postcards share one endpoint. Create a print job with text, HTML, or a PDF — send to one recipient or a mailing list of thousands. OpenAPI 3 spec published.

Test mode built in

Use testmode=true on any request to run it through the full pipeline without printing or charging. Validate your integration end-to-end before you send real mail.

Node SDK + OpenAPI

npm install intelliprint. Official Node.js SDK published. Types, request helpers, and retries out of the box. OpenAPI spec for generating clients in other languages.

Same-day dispatch

Print jobs received before 3pm are printed, enveloped, and handed to Royal Mail the same day. ISO 27001 throughout, documents deleted after printing.

What the API does

Five resources. Every sending operation exposed.

Every resource in the API, mapped to what it does.

Print jobs

POST /prints to create a letter or postcard print job. Set type to letter or postcard, pass content (HTML/text), a PDF file, or a template ID. Confirm to submit for printing.

Recipients & mailing lists

Pass one or many recipients inline, or reference a saved mailing list. Addresses verified against Royal Mail's PAF before anything goes to print.

Backgrounds (letterheads)

Save reusable letterhead backgrounds per account. Applied at print time so you don't re-upload branding with every letter.

Postage & printing control

Configure postage class (1st/2nd Class, Signed, Special Delivery), envelope size (C5/C4/C4+/A4 box), and scheduled mailing date per print job.

Metadata on everything

Attach arbitrary JSON to any print job via the metadata field. Perfect for carrying your own request IDs, user references, or downstream reconciliation data.

Draft or one-shot flow

Create a draft print job, preview it, make edits, and confirm when ready. Or skip straight to confirmed for automated workflows. Lifecycle is your choice.

Webhooks

Status events are delivered through Svix — the same webhook infrastructure used by Clerk, Resend, and many other developer platforms. That gives you signed webhooks, retry logic, event replay, and a full delivery log out of the box.

Subscribe to print job lifecycle events — when a job is confirmed, when it's dispatched by Royal Mail, when it's delivered, when it's returned — to close the loop in your own systems. Trigger CRM updates, fire follow-up emails, reconcile accounts, or surface delivery status to your own users. Full event catalogue and payloads live in the API docs.

Signing secrets are per-endpoint. Rotate them any time from the dashboard. Failed deliveries are retried with exponential backoff; every attempt is logged and inspectable.

API FAQ

Common developer questions.

How do I authenticate?

Bearer token in the Authorization header. Generate API keys from your account dashboard — separate keys per environment (test/live) if you want clean isolation. Keys can be rotated any time without downtime.

Is there a sandbox?

Set testmode=true on any /prints request. The request runs through the full pipeline — validation, address verification, pricing calculation, webhook dispatch — but no physical mail is printed and no charge is raised. Switch it off when you're ready to send real mail.

Do you publish SDKs?

Yes. Official Node.js SDK on npm — install with npm install intelliprint. For other languages, the full OpenAPI 3.1 spec is published: generate a typed client in Python, PHP, Ruby, Go, Java, TypeScript, or anywhere else with an OpenAPI generator. If your team lives in a specific stack and the SDK gap is painful, let us know.

Why multipart/form-data and not JSON?

POST /prints accepts multipart/form-data because most real use cases involve uploading a PDF. If you're sending inline HTML or text content with no file attachment, it's still multipart/form-data — just without the file field. The Node SDK and any OpenAPI-generated client handles this for you.

How do you handle versioning?

URL path versioning (currently /v1/). Breaking changes ship in a new version with a deprecation window. Non-breaking additions — new fields, new endpoints, new enum values — ship in place. Changes are documented in the changelog and, where relevant, announced to API account owners.

Can I send thousands of letters in one call?

Yes. One /prints request can carry thousands of recipients inline, or reference a mailing list you've previously uploaded. Same endpoint, same pattern — the API doesn't charge you extra for making fewer calls. Plan a large burst send? Mention it to us in advance so we can confirm our production queue is ready.

Build now

Read the docs. Send your first letter.

Sign up for an account, grab your test API keys, and have a letter moving through our pipeline in minutes. Docs at intelliprint.net/reference.