Appearance
Limits
Every limit the API enforces, in one place.
Files
| What | Limit | Over-limit response |
|---|---|---|
| CSV recipients file | 5 MB | 413 File too large. Maximum 5MB. |
| Excel recipients file | 10 MB | 413 File too large. Maximum 10MB. |
| PDF background | 20 MB | 400 PDF must be under 20 MB |
| Logo image | 5 MB | 400 Logo file must be under 5 MB |
| Return-address logo | 5 MB | 400 Logo file must be under 5 MB |
| Each placed image | 5 MB | 400 Image file must be under 5 MB |
| Images per campaign | 5 | 400 At most 5 images are allowed |
| Whole multipart campaign body | 40 MB | 413 Request body too large. Maximum 40MB. |
Two different codes for "too big"
Per-part image and PDF limits report 400 validation_failed, while the recipients-file and whole-body limits report 413 payload_too_large. Handle both.
Accepted image types: PNG and JPEG only. Anything else is 400 Logo must be a PNG or JPG image / Image must be a PNG or JPG image.
Recipients
| What | Limit |
|---|---|
Inline recipients per campaign create | 5,000 rows |
| Custom fields per recipient | 16 |
| Custom-field policies per request | 16 |
Beyond 5,000 recipients, either import into a list first and send with listId, or split into several campaigns. There is no limit on how many recipients a list may hold.
Field lengths
| Field | Max |
|---|---|
Campaign name | 200 |
List name | 200 |
Recipient name | 200 |
Recipient street | 255 |
Recipient postCode | 20 |
Recipient postTown | 100 |
Recipient country | 100 |
| Custom-field key | 64 (alphanumeric + underscore) |
Custom-field value | 512 |
returnAddress | 1,000 |
QR description | 500 |
search query | 200 |
Idempotency-Key | 255 (minimum 1) |
Exceeding any of these is 400 validation_failed with the field named in details.fieldErrors.
Pagination
| What | Value |
|---|---|
Default limit | 20 |
Maximum limit | 100 |
Minimum limit | 1 |
Requests
| What | Limit |
|---|---|
| Rate, per key | 100 requests / 60 s |
| Rate, per account (all keys together) | 300 requests / 60 s, burst 60 |
| Rate, per IP | A flood shield; not published |
| Key expiry | 1–365 days, if set at creation |
See Rate limits.
Retention
| What | Behaviour |
|---|---|
| Inactive list | Deleted after 90 days without activity |
| Campaigns of a deleted list | Kept, with listId and listName set to null |
Activity means adding a recipient, importing, or using the list in a campaign. Reading does not count. See Lists & recipients.
Uniqueness
| Rule |
|---|
One QR code per campaign — a second is 409 Campaign already has a QR code |
One campaign per Idempotency-Key per account — a repeat replays the original |
A QR slug is globally unique and permanent |
PDF expectations that are not enforced
Your responsibility
The API validates only that a PDF part is declared application/pdf, is under 20 MB, and begins with a PDF signature. It does not check:
- page size (must be A4, 210 × 297 mm),
- page count (1, or 2 with
hasBackPage), - orientation,
- whether artwork avoids the reserved address zones.
A non-conforming PDF is accepted and printed as-is. See PDF campaigns.
No documented limit
These have no API-enforced ceiling, which is not a promise that they are unbounded:
- recipients per list,
- lists per account,
- campaigns per account,
- concurrent in-flight campaigns.
If you are planning a send far beyond your normal volume, confirm capacity before relying on it.