Intelliprint
MESSAGING · MESSAGING
Letters and postcards printed and posted in the UK from the account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
intelliprint_delete_backgrounds_by_idWRITEDelete a background via DELETE /backgrounds/{id}. Permanently delete a background. Intelliprint REFUSES the deletion if any print job has used this background in the last 90 days, because it keeps the artwork for reproduction until those jobs are archived -- so a 400 on a real id is usually that rule, not a mistake. An unknown id answers 400 "No such background". There is no undo and no recycle bin: Intelliprint's API offers no way to restore what this call removes. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_delete_mailing_lists_by_idWRITEDelete a mailing list via DELETE /mailing_lists/{id}. Permanently delete a mailing list AND every recipient in it. There is no undo. Print jobs already created from the list are not affected. An unknown id answers 400 "No such mailing_list" and deletes nothing. There is no undo and no recycle bin: Intelliprint's API offers no way to restore what this call removes. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_delete_mailing_lists_by_mailing_list_recipients_by_idWRITEDelete a mailing list recipient via DELETE /mailing_lists/{mailing_list}/recipients/{id}. Permanently remove one recipient from a mailing list. There is no undo. An unknown mailing list or recipient id answers 400 `parameter_invalid` and removes nothing. There is no undo and no recycle bin: Intelliprint's API offers no way to restore what this call removes. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_delete_prints_by_idWRITECancel or delete a print job via DELETE /prints/{id}. Cancel or delete a print job. For a CONFIRMED job this cancels every mail item still `waiting_to_print` and refunds their cost to the account; letters already sent or in processing are neither cancelled nor refunded, so the job may survive partially. For an UNCONFIRMED (draft) job it deletes the job outright. Intelliprint answers 200 with the updated print job, or 202 `{"deleted": true, "id": ..., "object": "print"}` while the cancellation is still being applied. An unknown id answers 400 "No such print" and changes nothing. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_backgroundsREADList backgrounds via GET /backgrounds. List the stored background artworks (letterheads and the like) that print jobs can reference by id, optionally narrowed to one team (`team` must be a `team_...` id). The reply is `{"object": "list", "data": [...], "total_available": N, "has_more": bool}`; page with `limit` (1-1000, default 10) and `skip`. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_backgrounds_by_idREADGet a background via GET /backgrounds/{id}. Fetch one background by id. The `pdf` field is a SIGNED URL to a preview PDF, minted fresh on every retrieval and valid for one hour -- treat it as a short-lived link, not a stable address. An unknown id answers 400 "No such background". Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_mailing_listsREADList mailing lists via GET /mailing_lists. List the account's mailing lists with their recipient counts. The reply is `{"object": "list", "data": [...], "total_available": N, "has_more": bool}`; page with `limit` (1-1000, default 10) and `skip`. This is where a mailing list id (`mal_...`) comes from; recipient ids are `malrcp_...` (measured 2026-09-20 -- the spec's example `mal_rcp_eg` has an extra underscore). Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_mailing_lists_by_idREADGet a mailing list via GET /mailing_lists/{id}. Fetch one mailing list by id, with its name, recipient count, address validation state and `longest_address_line`. An unknown id answers 400 "No such mailing_list". Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_mailing_lists_by_mailing_list_recipientsREADList mailing list recipients via GET /mailing_lists/{mailing_list}/recipients. List the recipients of one mailing list. The reply is `{"object": "list", "data": [...], "total_available": N, "has_more": bool}`; page with `limit` (1-1000, default 10) and `skip`. This is where a recipient id comes from. An unknown mailing list id answers 400 "No such mailing_list". Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_mailing_lists_by_mailing_list_recipients_by_idREADGet a mailing list recipient via GET /mailing_lists/{mailing_list}/recipients/{id}. Fetch one recipient of a mailing list by its id, with its address, `address_validation_status` and variables. An unknown mailing list or recipient id answers 400 `parameter_invalid`. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_printsREADList print jobs via GET /prints. List the account's print jobs (letters and postcards), newest first by default, with optional filters. BY DEFAULT ONLY LIVE-MODE JOBS ARE RETURNED: pass `testmode=true` to see the jobs created in test mode instead -- the two are separate lists, not a superset. `confirmed` separates jobs that have been released for printing from drafts; `letters.status` takes one status or a comma-separated list (`waiting_to_print,printing`); `reference` is an exact, case-sensitive match. The reply is `{"object": "list", "data": [...], "total_available": N, "has_more": bool}`; page with `limit` (1-1000, default 10) and `skip`. This is where a print job id (`print_...`) comes from. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_get_prints_by_idREADGet a print job via GET /prints/{id}. Fetch one print job by id: its type, recipients, per-letter statuses, cost, confirmation state and test-mode flag. An id the account does not hold answers 400 `parameter_invalid` "No such print: <id>" (Intelliprint reports an unknown id as an invalid parameter, not as a 404 -- a 404 here means the ROUTE is wrong, not the id). Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_post_backgrounds_by_idWRITEUpdate a background via POST /backgrounds/{id}. Rename a background or change which team may use it from the dashboard (`team` is a `team_...` id, or null to make it available to everyone). The artwork itself cannot be replaced through this integration: uploads are multipart and are not offered. Both body fields are optional. Validation runs before the record is looked up (an unknown body field is refused with 400 `parameter_unknown`), and an unknown id answers 400 "No such background". Intelliprint answers 400 with `error.code` (`parameter_missing`, `parameter_unknown`, `parameter_invalid`) and `error.param` naming the exact field, and an unknown body field is REFUSED rather than ignored -- send only documented fields. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_post_mailing_listsWRITECreate a mailing list via POST /mailing_lists. Create a mailing list, optionally seeding it with recipients in bulk. `name` is REQUIRED (measured: `{}` answers 400 `parameter_missing` naming `name`); each recipient carries an `address` whose `line` is required, with `name`, `postcode` and `country` (ISO 3166-1 alpha-2, default GB) optional, plus free-form `variables` for template personalisation. `address_validation.requested` asks for PAF address checking, a paid service that has to be enabled on the account first. Unknown body fields are refused with 400 `parameter_unknown` rather than ignored. Creating a list sends nothing and costs nothing. Intelliprint answers 400 with `error.code` (`parameter_missing`, `parameter_unknown`, `parameter_invalid`) and `error.param` naming the exact field, and an unknown body field is REFUSED rather than ignored -- send only documented fields. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_post_mailing_lists_by_idWRITEUpdate a mailing list via POST /mailing_lists/{id}. Update a mailing list: rename it, and/or add recipients in bulk. Recipients you send are ADDED to the list; set `delete_old_recipients` to true to replace the whole list with the ones you send instead. All body fields are optional. An unknown body field is refused with 400 `parameter_unknown`, and an unknown id answers 400 "No such mailing_list". Intelliprint answers 400 with `error.code` (`parameter_missing`, `parameter_unknown`, `parameter_invalid`) and `error.param` naming the exact field, and an unknown body field is REFUSED rather than ignored -- send only documented fields. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_post_mailing_lists_by_mailing_list_recipientsWRITEAdd a mailing list recipient via POST /mailing_lists/{mailing_list}/recipients. Add ONE recipient to a mailing list. `address` is required and its `line` is the one required field inside it (`name`, `postcode`, `country` optional, country defaults to GB); `variables` is a free-form object of per-recipient template fields. To add many at once, update the mailing list instead. An unknown mailing list id answers 400 "No such mailing_list". Intelliprint answers 400 with `error.code` (`parameter_missing`, `parameter_unknown`, `parameter_invalid`) and `error.param` naming the exact field, and an unknown body field is REFUSED rather than ignored -- send only documented fields. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
intelliprint_post_mailing_lists_by_mailing_list_recipients_by_idWRITEUpdate a mailing list recipient via POST /mailing_lists/{mailing_list}/recipients/{id}. Update one recipient's address and/or variables. Both body fields are optional. An unknown mailing list or recipient id answers 400 `parameter_invalid`. Intelliprint answers 400 with `error.code` (`parameter_missing`, `parameter_unknown`, `parameter_invalid`) and `error.param` naming the exact field, and an unknown body field is REFUSED rather than ignored -- send only documented fields. Intelliprint allows 100 requests per 10 seconds per source IP address (shared across every connection on this platform) and answers 429 `rate_limited` beyond it; wait ten seconds and retry -- a 429 is never a credential problem.
Often connected alongside
Put Intelliprint behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.