All integrations

Stannp

MARKETING · MARKETING

Postcards, letters, campaigns, and recipients posted 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.

stannp_get_v1_accounts_balanceREAD

Get Account Balance via GET /v1/accounts/balance. Check your account balance.

api
stannp_get_v1_campaigns_get_by_idREAD

Get Campaign via GET /v1/campaigns/get/{id}. Get details for a specific campaign.

api
stannp_get_v1_campaigns_listREAD

List Campaigns via GET /v1/campaigns/list. Get a list of your campaigns.

api
stannp_get_v1_files_foldersREAD

List Folders via GET /v1/files/folders. List folders in your secure file transfer area.

api
stannp_get_v1_groups_listREAD

List Groups via GET /v1/groups/list. Get a list of mailing groups on your account. Supports pagination.

api
stannp_get_v1_letters_get_by_idREAD

Get Letter via GET /v1/letters/get/{id}. Obtain the mailpiece object for the specified letter ID. Measured 2026-09-16: an id that does not exist answers HTTP 400 {"error":"Could not find the resource"}, not the 404 the reference's status table implies.

api
stannp_get_v1_postcards_get_by_idREAD

Get Postcard via GET /v1/postcards/get/{id}. Obtain the mailpiece object for the specified postcard ID. Measured 2026-09-16: an id that does not exist answers HTTP 400 {"error":"Could not find the resource"}, not the 404 the reference's status table implies.

api
stannp_get_v1_qrcode_createREAD

Create QR Code via GET /v1/qrcode/create. Generate a QR code image. **Requires a PUBLIC KEY** (not a private API key). The `data` parameter accepts any content, typically a URL. Use template variables (e.g., `{{url}}`) for personalised QR codes per recipient during mail merge. Returns a JPEG image. Returns a JPEG image, not the {success, data} envelope: this tool answers {content_type, content_length, content_base64} instead, and refuses to inline anything over its byte bound. Measured 2026-09-16: size=100 -> 4,692 bytes, size=2000 -> 168,344 bytes. The reference says this endpoint "Requires a PUBLIC KEY (not a private API key)"; measured, the account's own API key is accepted.

api
stannp_get_v1_recipients_get_by_idREAD

Get Recipient via GET /v1/recipients/get/{id}. Get a single recipient by ID.

api
stannp_get_v1_recipients_listREAD

List Recipients via GET /v1/recipients/list. Get a list of recipient objects. Include group_id to filter by group. Supports pagination via offset and limit.

api
stannp_get_v1_reporting_list_by_startdate_by_enddateREAD

List Reported Mailpieces via GET /v1/reporting/list/{startdate}/{enddate}/{status}/{tag}. Retrieve a list of mailpiece objects sent within a date range. Status and tag filters are optional. status and tag are OPTIONAL trailing path segments at Stannp, which no ledger can express; this tool takes them as optional arguments and composes the path. All four shapes were measured 200 on 2026-09-16, including tag-without-status, which sends an empty status segment.

api
stannp_get_v1_reporting_summary_by_startdate_by_enddateREAD

Get Reporting Summary via GET /v1/reporting/summary/{startdate}/{enddate}. Retrieve a status summary on individual items within a date range. Dates in YYYY-MM-DD format. The end date includes everything on that day.

api
stannp_get_v1_templates_listREAD

List Templates via GET /v1/templates/list. Get the templates created on your account.

api
stannp_post_v1_accounts_topupWRITE

SPENDS REAL MONEY: this CHARGES THE SAVED PAYMENT CARD on the Stannp account for the amount given. There is no test mode. Top Up Account via POST /v1/accounts/topup. Top up your balance using a saved default card. Consider enabling auto top-up to ensure sends are not impacted by a low balance.

api
stannp_post_v1_addresses_validateREAD

Validate Address via POST /v1/addresses/validate. Validate a postal address. Currently supports UK and US addresses.

api
stannp_post_v1_campaigns_approveWRITE

IRREVERSIBLE: approving a campaign locks its design and recipient selection, and is the step before booking dispatches it. There is no test mode and no un-approve. Approve Campaign via POST /v1/campaigns/approve. Approve a campaign. This locks the design and recipient selection. Once approved, changes cannot be made.

api
stannp_post_v1_campaigns_available_datesREAD

Get Campaign Available Dates via POST /v1/campaigns/availableDates. Get available dates for booking a campaign.

api
stannp_post_v1_campaigns_bookWRITE

SPENDS REAL MONEY: booking a campaign DISPATCHES every mailpiece in it and takes payment from the account balance. There is NO test mode on this call. Price it first with the campaign-cost tool and approve it deliberately. Book Campaign via POST /v1/campaigns/book. Book a campaign for dispatch. Payment is taken from your balance.

api
stannp_post_v1_campaigns_costREAD

Get Campaign Cost via POST /v1/campaigns/cost. Get the cost breakdown and rates for a campaign.

api
stannp_post_v1_campaigns_createWRITE

Create Campaign via POST /v1/campaigns/create. Create a new campaign. Measured 2026-09-16: the response is {"success":true,"data":"571884"} -- the campaign id as a bare string, NOT the {"id": ...} object the reference shows. Creates a DRAFT. Nothing is printed, posted or charged until the campaign is approved and then booked.

api
stannp_post_v1_campaigns_deleteWRITE

DESTRUCTIVE: this deletes the campaign and its recipient selection. Only a campaign that has not been booked can be deleted. Delete Campaign via POST /v1/campaigns/delete. Delete a campaign. Only campaigns that have not been booked can be deleted.

api
stannp_post_v1_campaigns_sampleREAD

Sample Campaign via POST /v1/campaigns/sample. Produce a PDF sample of your campaign. The link is valid for 30 minutes.

api
stannp_post_v1_files_create_folderWRITE

Create Folder via POST /v1/files/createFolder. Create a folder in your secure file transfer area.

api
stannp_post_v1_files_uploadWRITE

Upload File via POST /v1/files/upload. Upload a file to your secure file transfer area.

api
stannp_post_v1_groups_add_by_group_idWRITE

Add Recipients To Group via POST /v1/groups/add/{group_id}. Add recipients to an existing mailing list. Measured 2026-09-16: adding a recipient that is already in the group answers {"success":true,"data":0} -- the count added, not an error.

api
stannp_post_v1_groups_calculate_by_group_idWRITE

Recalculate Group via POST /v1/groups/calculate/{group_id}. Recalculate a group to update its statistics.

api
stannp_post_v1_groups_deleteWRITE

DESTRUCTIVE: this deletes the mailing group, and with delete_recipients=true it DELETES its recipients outright -- they stop existing in every other group too. Delete Group via POST /v1/groups/delete. Delete a mailing list.

api
stannp_post_v1_groups_newWRITE

Create Group via POST /v1/groups/new. Create a new empty mailing list.

api
stannp_post_v1_groups_purgeWRITE

DESTRUCTIVE: this removes every recipient from the group, and with delete_recipients=true it DELETES those recipients outright -- they stop existing in every other group too. Purge Group via POST /v1/groups/purge. Remove all recipients from a mailing list.

api
stannp_post_v1_groups_remove_by_group_idWRITE

Remove Recipients From Group via POST /v1/groups/remove/{group_id}. Remove recipients from a group. This only removes the recipient from the group and does not delete the recipient.

api
stannp_post_v1_letters_cancelWRITE

DESTRUCTIVE: cancelling stops a mailpiece the account has ALREADY PAID FOR from being posted, and cannot be undone. It succeeds only before production starts. Cancel Letter via POST /v1/letters/cancel. Cancel a letter if processing has not yet started. Measured 2026-09-16: a mailpiece that cannot be cancelled answers HTTP 400 {"error":"We could not find any items which can be cancelled"} -- the same status for "no such id" and "too late to cancel".

api
stannp_post_v1_letters_createWRITE

SPENDS REAL MONEY: this PRINTS AND POSTS a physical letter and charges the Stannp account. Send test=true to produce a sample PDF instead, at no charge; a test response is identifiable by "id": 0 and "status": "test". Omitting test posts real mail. Create Letter via POST /v1/letters/create. Create a single letter with mail merge for address and variable data.

api
stannp_post_v1_letters_postWRITE

SPENDS REAL MONEY: this PRINTS AND POSTS a physical letter and charges the Stannp account. Send test=true to produce a sample PDF instead, at no charge; a test response is identifiable by "id": 0 and "status": "test". Omitting test posts real mail. Post Pre-addressed Letter via POST /v1/letters/post. Post a letter that already has the address on the PDF. The API uses OCR to extract the recipient address from the document. The address is read OFF THE PDF by OCR: measured 2026-09-16, a PDF with no postal address answers HTTP 400 {"error":"We couldn't OCR the recipient"} even with test=true.

api
stannp_post_v1_pdf_mergeWRITE

Merge PDFs via POST /v1/pdf/merge. Merge multiple PDF files into a single file.

api
stannp_post_v1_postcards_cancelWRITE

DESTRUCTIVE: cancelling stops a mailpiece the account has ALREADY PAID FOR from being posted, and cannot be undone. It succeeds only before production starts. Cancel Postcard via POST /v1/postcards/cancel. Cancel a postcard if processing has not yet started. Measured 2026-09-16: a mailpiece that cannot be cancelled answers HTTP 400 {"error":"We could not find any items which can be cancelled"} -- the same status for "no such id" and "too late to cancel".

api
stannp_post_v1_postcards_createWRITE

SPENDS REAL MONEY: this PRINTS AND POSTS a physical postcard and charges the Stannp account. Send test=true to produce a sample PDF instead, at no charge; a test response is identifiable by "id": 0 and "status": "test". Omitting test posts real mail. Create Postcard via POST /v1/postcards/create. Create and send a single postcard. Performs a mail merge to place the address and any variable data.

api
stannp_post_v1_recipient_events_createWRITE

Create Recipient Event via POST /v1/recipientEvents/create. Create a recipient event for tracking campaign engagement and conversions. Events can trigger automated communication. Measured 2026-09-16: the response is {"success":true,"data":"0"} -- a string, not the integer the reference shows.

api
stannp_post_v1_recipients_deleteWRITE

DESTRUCTIVE: this permanently deletes the recipient from the account. It is removed from every group it belonged to and cannot be recovered. Delete Recipient via POST /v1/recipients/delete. Permanently delete a recipient from your account.

api
stannp_post_v1_recipients_importWRITE

Import Recipients via POST /v1/recipients/import. Import a data file into your account.

api
stannp_post_v1_recipients_newWRITE

Create Recipient via POST /v1/recipients/new. Create a new recipient.

api
stannp_post_v1_selections_newWRITE

Create Selection via POST /v1/selections/new. Create an auto-filter selection for a group. Measured 2026-09-16: the response is {"success":true,"data":true}, NOT the [{"id": "1234"}] array the reference shows; the new selection's id is not returned.

api
stannp_post_v1_sms_createWRITE

SPENDS REAL MONEY: this SENDS an SMS and charges the Stannp account. Send test=true to price the message without sending it; a test response is identifiable by "id": 0 and "status": "test". Send SMS via POST /v1/sms/create. Send an SMS message to a recipient's mobile device. NOT AVAILABLE ON EVERY ACCOUNT: measured 2026-09-16, this account answers 404 {"success":false,"error":"Resource not found"} to every form of this call. That is NOT the router's 404, which names the unmatched segment ("Resource 'definitely-not-a-route' not found"), so the route is mounted and the SMS feature -- which the response body describes with a profile_id and a sender-id profile_type -- is what the account lacks.

api

Put Stannp behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.