Intelliprint API Reference

The Intelliprint API is organized around REST. Every resource has a predictable URL. Every endpoint accepts request bodies encoded as JSON, or with form encoding.
Responses are JSON-encoded, with standard HTTP status codes.
For authentication, we use API keys provided in the Authorization header using HTTP Bearer authentication.
All cost amounts must be converted to GBP by taking the amount and dividing it by 100000000 (10**8). We use integers while accounting for 8 decimal places to avoid floating point errors and still being able to provide accurate bulk usage discounts.


You can generate an API key here.
Intelliprint API uses account-level API keys to authenticate you to your account. There are no separate API keys for test mode. Instead, when you want to create a test Print Job, just set the testmode parameter to true.
Provide your API key in the Authorization header as HTTP Bearer auth.


To test a Print Job, set testmode to true while uploading it.
You do not pay for test Print Jobs, even if you confirm them. They are never sent out.
Test Print Jobs don't show up in the regular list of Print Jobs, you have to set the testmode parameter to true when retrieving the list of Print Jobs to get back testmode Print Jobs.
Print Job objects have a testmode boolean attribute which you can use to check if a particular Print Job is in testmode.
Testmode Print Jobs are deleted from the system a week after they're confirmed.
Here are some demo files you can use for creating a Print Job:
A single demo letter.
Use split_by_content and set the splitting word to Dear.
This file with these splitting options should result in 100 separate letters.

Rate Limits

The Intelliprint API has a rate limit of 100 requests per 1 minute.
If you surpass this limit, the API will reply with the rate_limited error (HTTP status code 429).
If you plan on making more frequent requests than that, you should implement methods that automatically retry a request that fails with the rate_limited error code after waiting for some time.


On top of detailed JSON-encoded error messages, Intelliprint also gives back conventional HTTP status codes you can use to determine the result.
2.x.x status codes mean the request succeeded. 4.x.x status codes mean an error on your end (You can refer to the error.message to learn more). 5.x.x status codes mean an error on Intelliprint's end.
Here is a breakdown of the error object:
This is a human readable message describing the error.
The type of error. One of invalid_request_error, authentication_error, rate_limited or internal_error.
The error code. One of body_too_large, body_incorrect_format, parameter_invalid, parameter_missing, parameter_unknown, no_api_key, invalid_api_key, forbidden, payment_error, not_found, rate_limited or internal_error.
Not always present. The parameter that caused the error.


Use a Background object to add a background to a Print Job.
You need to specify the Background's ID to a Print Job's background.first_page and/or background.other_pages for it to be applied.
The Background Object
The ID of this Background object.
The type of object. This is always background.
The user-provided name of this Background.
The name of the uploaded file.
The Team object this Background belongs to.
The URL for a PNG preview image of this Background.
The UNIX timestamp of when this Background was created.

Create a Background

Create a new Background.
The multipart/form-data encoded file for this Background.
The user-provided name of this Background.
The Team ID to assign this Background to.

Retrieve a Background

Retrieve an existing Background.

Update a Background

Update an existing Background.
The user-provided name of this Background.
The Team ID to assign this Background to.

Delete a Background

Delete a Background.

List Backgrounds

Request Query Parameters
The Team ID for which Backgrounds to return.
The number of Backgrounds to return. Must be between 1 and 1,000. By default, 10 Backgrounds are returned.
The number of results to skip over before returning. Useful for pagination.


Modify your files with Tools.
The Merge Tool Object
The ID of this Merge object.
The type of object. This is always merge.
The download link for the resulting file.

Merge Files

Merge multiple files together.
An array of multipart/form-data encoded files to merge together.