Postmark connector
API KeyCommunicationDeveloper ToolsSend and track transactional and broadcast email with Postmark. Manage templates, message streams, bounces, suppressions, webhooks, and delivery...
Postmark connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Postmark credentials with Scalekit so it can authenticate requests on your behalf. You do this once per environment.
Dashboard setup steps
Register your Scalekit environment with the Postmark connector so Scalekit can authenticate requests on your behalf. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:
-
Get your server API token
- Go to Postmark and open the server you want to connect.
- Go to the API Tokens tab. Postmark creates a default Server API token for every server — copy it, or click Create token for a dedicated one, for example named
Agent Auth.
-
Add the token in Scalekit
- In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Postmark and click Create.
- Paste the Server API token you copied in step 1.
- Click Save.
-
-
Make your first call
Section titled “Make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'postmark'const identifier = 'user_123'// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'postmark_get_bounce_counts',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "postmark"identifier = "user_123"# Make your first callresult = actions.execute_tool(tool_input={},tool_name="postmark_get_bounce_counts",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Template validate — Validate template content without saving it, rendering subject, html_body, and/or text_body against test_render_model to surface syntax errors and preview the rendered output
- Update webhook, template, server info — Update an existing webhook on the current Postmark server by its numeric ID
- Stream unarchive message, archive message — Unarchive a previously archived message stream on the current Postmark server, restoring it to active use before its 30-day deletion window elapses
- Send email with template, email, batch emails with templates — Send a single transactional email rendered from a Postmark template
- Message retry inbound, bypass inbound — Retry processing of an inbound message that previously failed, causing Postmark to attempt delivery to your configured inbound webhook again
- List webhooks, templates, suppressions — List the webhooks configured on the current Postmark server, including each webhook’s URL, message stream scope, HTTP auth/header configuration, and which event triggers (Open, Click, Delivery, Bounce, SpamComplaint, SubscriptionChange) are enabled
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
postmark_activate_bounce#Reactivate a previously deactivated (bounced) email address on the current Postmark server, so future messages sent to it will be attempted again instead of being suppressed. Use postmark_list_bounces or postmark_get_bounce first to find the bounce ID for the address you want to reactivate.1 param
Reactivate a previously deactivated (bounced) email address on the current Postmark server, so future messages sent to it will be attempted again instead of being suppressed. Use postmark_list_bounces or postmark_get_bounce first to find the bounce ID for the address you want to reactivate.
bounce_idintegerrequiredThe numeric ID of the bounce whose associated email address should be reactivated. Example: 42.postmark_archive_message_stream#Archive a message stream on the current Postmark server, removing it from active use. Archived streams are permanently deleted 30 days after archiving unless unarchived. A Server can have at most 10 message streams in total, and the default streams created with the server (e.g. the default Inbound and Outbound streams) cannot be archived.1 param
Archive a message stream on the current Postmark server, removing it from active use. Archived streams are permanently deleted 30 days after archiving unless unarchived. A Server can have at most 10 message streams in total, and the default streams created with the server (e.g. the default Inbound and Outbound streams) cannot be archived.
stream_idstringrequiredThe unique identifier (ID) of the message stream to archive, e.g. "onboarding-emails". Default streams cannot be archived.postmark_bypass_inbound_message#Bypass (unblock) an inbound message that Postmark blocked because it matched an inbound spam or filtering rule, allowing it to be reprocessed and delivered to your configured inbound webhook. Only messages whose current status is Blocked can be bypassed; calling this on a message that isn't blocked has no additional effect. Takes no request body.1 param
Bypass (unblock) an inbound message that Postmark blocked because it matched an inbound spam or filtering rule, allowing it to be reprocessed and delivered to your configured inbound webhook. Only messages whose current status is Blocked can be bypassed; calling this on a message that isn't blocked has no additional effect. Takes no request body.
message_idstringrequiredThe Postmark Message ID (a UUID) of the blocked inbound message to bypass. Obtain this from postmark_list_inbound_messages (filter status=blocked) or from postmark_get_inbound_message.postmark_create_inbound_rule#Create a new inbound rule trigger on the Postmark server to block inbound email processing for a specific email address or domain pattern. Provide a single address (e.g. "spam@example.com") or a wildcard domain pattern (e.g. "*@spamdomain.com") in the Rule field. Once created, any inbound message matching the rule is blocked before it reaches your inbound webhook. The response includes the newly created rule's ID, which is needed later to delete the rule.1 param
Create a new inbound rule trigger on the Postmark server to block inbound email processing for a specific email address or domain pattern. Provide a single address (e.g. "spam@example.com") or a wildcard domain pattern (e.g. "*@spamdomain.com") in the Rule field. Once created, any inbound message matching the rule is blocked before it reaches your inbound webhook. The response includes the newly created rule's ID, which is needed later to delete the rule.
rulestringrequiredThe email address or wildcard domain pattern to block from inbound processing. Examples: "spam@example.com" (single address) or "*@spamdomain.com" (entire domain).postmark_create_message_stream#Create a new message stream on the current Postmark server. A Server can have up to 10 message streams. Provide a unique ID, a display name, and a MessageStreamType of either Transactional or Broadcasts (the default Inbound stream cannot be created via this endpoint). Optionally configure subscription management for Broadcasts streams.5 params
Create a new message stream on the current Postmark server. A Server can have up to 10 message streams. Provide a unique ID, a display name, and a MessageStreamType of either Transactional or Broadcasts (the default Inbound stream cannot be created via this endpoint). Optionally configure subscription management for Broadcasts streams.
message_stream_typestringrequiredThe type of message stream to create. Must be either Transactional or Broadcasts.namestringrequiredHuman-friendly display name for the message stream, shown in the Postmark dashboard.stream_idstringrequiredUnique identifier for the new message stream. Must be unique on the server, lowercase, and may contain letters, numbers, and dashes, e.g. "onboarding-emails". This becomes the stream's ID (Postmark's API field name is "ID").descriptionstringoptionalOptional free-text description of the message stream's purpose.subscription_management_configurationobjectoptionalOptional object controlling unsubscribe handling for Broadcasts streams. Shape: {"UnsubscribeHandlingType": "none"|"Postmark"|"Custom"}. Use "Postmark" to let Postmark host the unsubscribe page, "Custom" if you manage unsubscribes yourself, or "none" to disable unsubscribe handling.postmark_create_suppressions#Manually add one or more email addresses to the suppression list for a specific Postmark message stream, preventing Postmark from sending to those addresses on this stream until the suppression is removed. Accepts up to 50 addresses per call. Each item in the suppressions array must be a raw Postmark-shaped object with a single key, e.g. {"EmailAddress": "user@example.com"}. Returns, for each address, whether the suppression was applied (Status: "Suppressed") or why it could not be (e.g. already suppressed for a different reason).2 params
Manually add one or more email addresses to the suppression list for a specific Postmark message stream, preventing Postmark from sending to those addresses on this stream until the suppression is removed. Accepts up to 50 addresses per call. Each item in the suppressions array must be a raw Postmark-shaped object with a single key, e.g. {"EmailAddress": "user@example.com"}. Returns, for each address, whether the suppression was applied (Status: "Suppressed") or why it could not be (e.g. already suppressed for a different reason).
stream_idstringrequiredThe unique identifier (ID) of the message stream to add suppressions to, e.g. "outbound" or "broadcasts".suppressionsarrayrequiredArray of email addresses to suppress, up to 50 per call. Each item must be a raw Postmark-shaped object with a single key "EmailAddress", e.g. {"EmailAddress": "user@example.com"} — pass these objects directly, do not use a different inner key name. Example value: [{"EmailAddress": "bounce1@example.com"}, {"EmailAddress": "bounce2@example.com"}].postmark_create_template#Create a new email template or layout on the current Postmark server. At least one of html_body or text_body must be provided. subject is required for Standard templates (it does not apply to Layout templates). Use layout_template to associate a Standard template with a parent Layout's alias.7 params
Create a new email template or layout on the current Postmark server. At least one of html_body or text_body must be provided. subject is required for Standard templates (it does not apply to Layout templates). Use layout_template to associate a Standard template with a parent Layout's alias.
namestringrequiredDescriptive name of the template, shown in the Postmark dashboard.aliasstringoptionalUnique alias for the template, used to reference it in the withTemplate send API instead of its numeric ID.html_bodystringoptionalHTML content of the template. Required if text_body is not provided — at least one of html_body or text_body must be set.layout_templatestringoptionalAlias of the parent Layout template this Standard template should render inside. Only relevant when template_type is Standard.subjectstringoptionalSubject line template, rendered with the same placeholder data as the body. Required when template_type is Standard; not used for Layout templates.template_typestringoptionalType of template to create: Standard (a regular email template) or Layout (a wrapper template other templates can inherit from). Defaults to Standard.text_bodystringoptionalPlain text content of the template. Required if html_body is not provided — at least one of html_body or text_body must be set.postmark_create_webhook#Create a new webhook on the current Postmark server. Postmark will POST event payloads to the given HTTPS URL as they occur. Optionally scope the webhook to a single message stream, protect the endpoint with basic auth or custom headers, and choose which event triggers (Open, Click, Delivery, Bounce, SpamComplaint, SubscriptionChange) fire it.5 params
Create a new webhook on the current Postmark server. Postmark will POST event payloads to the given HTTPS URL as they occur. Optionally scope the webhook to a single message stream, protect the endpoint with basic auth or custom headers, and choose which event triggers (Open, Click, Delivery, Bounce, SpamComplaint, SubscriptionChange) fire it.
urlstringrequiredThe HTTPS endpoint Postmark will POST event payloads to whenever an enabled trigger fires.http_authobjectoptionalOptional HTTP basic auth credentials Postmark will send when calling your webhook URL, if your endpoint requires authentication. Shape: {"Username": "...", "Password": "..."}.http_headersarrayoptionalOptional array of custom HTTP headers Postmark will send with each webhook request. Each item shape: {"Name": "...", "Value": "..."}.message_streamstringoptionalOptional message stream ID to scope this webhook to. If omitted, the webhook applies to the server's default stream behavior.triggersobjectoptionalOptional object enabling specific event triggers for this webhook. Shape: {"Open": {"Enabled": bool, "PostFirstOpenOnly": bool}, "Click": {"Enabled": bool}, "Delivery": {"Enabled": bool}, "Bounce": {"Enabled": bool, "IncludeContent": bool}, "SpamComplaint": {"Enabled": bool, "IncludeContent": bool}, "SubscriptionChange": {"Enabled": bool}}. Only include the trigger keys you want to configure; unspecified triggers keep Postmark's defaults (typically disabled).postmark_delete_inbound_rule#Permanently remove an inbound rule trigger from the Postmark server by its ID, restoring normal inbound processing for the previously blocked email address or domain pattern. The ID is the value returned in the ID field when the rule was created (see Create Inbound Rule) or found via List Inbound Rules. This operation cannot be undone — recreate the rule with Create Inbound Rule if it is removed by mistake.1 param
Permanently remove an inbound rule trigger from the Postmark server by its ID, restoring normal inbound processing for the previously blocked email address or domain pattern. The ID is the value returned in the ID field when the rule was created (see Create Inbound Rule) or found via List Inbound Rules. This operation cannot be undone — recreate the rule with Create Inbound Rule if it is removed by mistake.
trigger_idstringrequiredThe ID of the inbound rule trigger to delete, as returned by Create Inbound Rule or found via List Inbound Rules.postmark_delete_suppressions#Remove one or more manually-created suppressions from a specific Postmark message stream, up to 50 addresses per call. Each item in the suppressions array must be a raw Postmark-shaped object with a single key, e.g. {"EmailAddress": "user@example.com"}. Important: suppressions whose Origin is SpamComplaint cannot be removed via this endpoint — Postmark reports those back as not removed. This endpoint uses HTTP POST (not DELETE) per Postmark's own API design, so it is not annotated as a destructive-method tool, even though it permanently removes eligible suppression records.2 params
Remove one or more manually-created suppressions from a specific Postmark message stream, up to 50 addresses per call. Each item in the suppressions array must be a raw Postmark-shaped object with a single key, e.g. {"EmailAddress": "user@example.com"}. Important: suppressions whose Origin is SpamComplaint cannot be removed via this endpoint — Postmark reports those back as not removed. This endpoint uses HTTP POST (not DELETE) per Postmark's own API design, so it is not annotated as a destructive-method tool, even though it permanently removes eligible suppression records.
stream_idstringrequiredThe unique identifier (ID) of the message stream to remove suppressions from, e.g. "outbound" or "broadcasts".suppressionsarrayrequiredArray of email addresses to remove from suppression, up to 50 per call. Each item must be a raw Postmark-shaped object with a single key "EmailAddress", e.g. {"EmailAddress": "user@example.com"}. Note: SpamComplaint-origin suppressions cannot be removed via this endpoint and will be reported back as not removed. Example value: [{"EmailAddress": "bounce1@example.com"}].postmark_delete_template#Permanently delete an email template or layout from the current Postmark server, identified by numeric ID or alias. This action cannot be undone; any Standard templates that reference a deleted Layout will need to be updated.1 param
Permanently delete an email template or layout from the current Postmark server, identified by numeric ID or alias. This action cannot be undone; any Standard templates that reference a deleted Layout will need to be updated.
template_id_or_aliasstringrequiredNumeric ID or alias string of the template to permanently delete.postmark_delete_webhook#Permanently delete a webhook from the current Postmark server by its numeric ID. Postmark will stop sending event notifications to this webhook's URL immediately. This action cannot be undone.1 param
Permanently delete a webhook from the current Postmark server by its numeric ID. Postmark will stop sending event notifications to this webhook's URL immediately. This action cannot be undone.
webhook_idstringrequiredThe numeric ID of the webhook to delete, as returned by List Webhooks or Create Webhook.postmark_get_bounce#Retrieve full details for a single bounce by its Postmark bounce ID, including bounce type, the affected email address, timestamp, description, and whether the address has been deactivated. Use postmark_list_bounces first to find the bounce ID you need.1 param
Retrieve full details for a single bounce by its Postmark bounce ID, including bounce type, the affected email address, timestamp, description, and whether the address has been deactivated. Use postmark_list_bounces first to find the bounce ID you need.
bounce_idintegerrequiredThe numeric ID of the bounce to retrieve, as returned by postmark_list_bounces. Example: 42.postmark_get_bounce_counts#Get bounce counts for a Postmark server broken down by day and by bounce type (e.g. HardBounce, SoftBounce, Transient, SpamNotification) for the requested date range. Use this to diagnose deliverability issues over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get bounce counts for a Postmark server broken down by day and by bounce type (e.g. HardBounce, SoftBounce, Transient, SpamNotification) for the requested date range. Use this to diagnose deliverability issues over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the bounce-count range, formatted YYYY-MM-DD. If omitted, all bounce history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the bounce counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter bounce counts by. Only bounced messages that were originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the bounce-count range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_bounce_dump#Retrieve the raw source (full RFC 822 message content, including headers) of a bounced message by its Postmark bounce ID. Use this to inspect exactly what was sent and why it may have bounced. Use postmark_list_bounces first to find the bounce ID you need.1 param
Retrieve the raw source (full RFC 822 message content, including headers) of a bounced message by its Postmark bounce ID. Use this to inspect exactly what was sent and why it may have bounced. Use postmark_list_bounces first to find the bounce ID you need.
bounce_idintegerrequiredThe numeric ID of the bounce whose raw message source should be retrieved, as returned by postmark_list_bounces. Example: 42.postmark_get_click_browser_usage#Get link click counts for a Postmark server broken down by browser family (e.g. Chrome, Safari, Firefox, Edge) for the requested date range. Requires link tracking to have been enabled on the sent messages. Use this to understand which browsers your recipients use when clicking links. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get link click counts for a Postmark server broken down by browser family (e.g. Chrome, Safari, Firefox, Edge) for the requested date range. Requires link tracking to have been enabled on the sent messages. Use this to understand which browsers your recipients use when clicking links. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the browser-usage range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the browser-usage counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter browser-usage counts by. Only clicks for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the browser-usage range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_click_counts#Get link click counts for a Postmark server broken down by day, reporting both unique clicks (one per recipient) and total clicks (including repeat clicks) for the requested date range. Requires link tracking to have been enabled on the sent messages. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get link click counts for a Postmark server broken down by day, reporting both unique clicks (one per recipient) and total clicks (including repeat clicks) for the requested date range. Requires link tracking to have been enabled on the sent messages. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the click-count range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the click counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter click counts by. Only clicks for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the click-count range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_click_location_stats#Get link click counts for a Postmark server broken down by where in the email the clicked link was located: HTML body, HTML header, text body, or text header, for the requested date range. Requires link tracking to have been enabled on the sent messages. Use this to see whether recipients click links in headers vs. body content. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get link click counts for a Postmark server broken down by where in the email the clicked link was located: HTML body, HTML header, text body, or text header, for the requested date range. Requires link tracking to have been enabled on the sent messages. Use this to see whether recipients click links in headers vs. body content. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the click-location range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the click-location counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter click-location counts by. Only clicks for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the click-location range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_click_platform_usage#Get link click counts for a Postmark server broken down by platform (Desktop, Webmail, or Mobile) for the requested date range. Requires link tracking to have been enabled on the sent messages. Use this to understand which platforms your recipients use when clicking links. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get link click counts for a Postmark server broken down by platform (Desktop, Webmail, or Mobile) for the requested date range. Requires link tracking to have been enabled on the sent messages. Use this to understand which platforms your recipients use when clicking links. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the click-platform-usage range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the click-platform-usage counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter click-platform-usage counts by. Only clicks for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the click-platform-usage range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_delivery_stats#Get a breakdown of delivery statistics for the current Postmark server, including a count of inactive (undeliverable) email addresses and a breakdown of bounce counts by bounce type (e.g. HardBounce, SoftBounce, Transient). Takes no parameters and reflects data for the server whose API token is used to authenticate.0 params
Get a breakdown of delivery statistics for the current Postmark server, including a count of inactive (undeliverable) email addresses and a breakdown of bounce counts by bounce type (e.g. HardBounce, SoftBounce, Transient). Takes no parameters and reflects data for the server whose API token is used to authenticate.
postmark_get_email_client_usage#Get email open counts for a Postmark server broken down by the email client used to open the message (e.g. Outlook, Gmail, Apple Mail) for the requested date range. Use this to understand which email clients your recipients use most. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get email open counts for a Postmark server broken down by the email client used to open the message (e.g. Outlook, Gmail, Apple Mail) for the requested date range. Use this to understand which email clients your recipients use most. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the email-client-usage range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the email-client-usage counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter email-client-usage counts by. Only opens for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the email-client-usage range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_email_open_counts#Get email open counts for a Postmark server broken down by day, reporting both unique opens (one per recipient) and total opens (including repeat opens) for the requested date range. Use this to track engagement trends over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get email open counts for a Postmark server broken down by day, reporting both unique opens (one per recipient) and total opens (including repeat opens) for the requested date range. Use this to track engagement trends over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the open-count range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the open counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter open counts by. Only opens for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the open-count range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_email_platform_usage#Get email open counts for a Postmark server broken down by the platform used to open the message (Desktop, Webmail, or Mobile) for the requested date range. Use this to understand which platforms your recipients use to read email. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get email open counts for a Postmark server broken down by the platform used to open the message (Desktop, Webmail, or Mobile) for the requested date range. Use this to understand which platforms your recipients use to read email. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the platform-usage range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the platform-usage counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter platform-usage counts by. Only opens for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the platform-usage range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_inbound_message#Get full details of a single inbound message by its Postmark Message ID, including parsed headers, sender, recipients, tag, mailbox hash, attachment metadata, processing status, and any processing errors.1 param
Get full details of a single inbound message by its Postmark Message ID, including parsed headers, sender, recipients, tag, mailbox hash, attachment metadata, processing status, and any processing errors.
message_idstringrequiredThe Postmark Message ID (a UUID) of the inbound message to retrieve. Obtain this from postmark_list_inbound_messages or from a Postmark inbound webhook payload.postmark_get_message_clicks#List click (link click tracking) events for a single outbound message, identified by its Postmark Message ID, with pagination via count and offset. Requires Link Tracking to be enabled on the relevant message stream, otherwise no click events will exist for the message.3 params
List click (link click tracking) events for a single outbound message, identified by its Postmark Message ID, with pagination via count and offset. Requires Link Tracking to be enabled on the relevant message stream, otherwise no click events will exist for the message.
countintegerrequiredNumber of click events to return in this page of results.message_idstringrequiredThe Postmark Message ID (a UUID) of the outbound message whose click events you want to list. Obtain this from postmark_list_outbound_messages or from the MessageID returned when the message was sent.offsetintegerrequiredNumber of click events to skip before starting to return results, used together with count to page through the full result set. Use 0 for the first page, then increment by count for each subsequent page.postmark_get_message_opens#List open (email open tracking) events for a single outbound message, identified by its Postmark Message ID, with pagination via count and offset. Requires Open Tracking to be enabled on the relevant message stream, otherwise no open events will exist for the message.3 params
List open (email open tracking) events for a single outbound message, identified by its Postmark Message ID, with pagination via count and offset. Requires Open Tracking to be enabled on the relevant message stream, otherwise no open events will exist for the message.
countintegerrequiredNumber of open events to return in this page of results.message_idstringrequiredThe Postmark Message ID (a UUID) of the outbound message whose open events you want to list. Obtain this from postmark_list_outbound_messages or from the MessageID returned when the message was sent.offsetintegerrequiredNumber of open events to skip before starting to return results, used together with count to page through the full result set. Use 0 for the first page, then increment by count for each subsequent page.postmark_get_message_stream#Retrieve details about a single message stream on the current Postmark server by its stream ID, including its name, description, type (Transactional/Broadcasts/Inbound), archive status, and subscription management configuration.1 param
Retrieve details about a single message stream on the current Postmark server by its stream ID, including its name, description, type (Transactional/Broadcasts/Inbound), archive status, and subscription management configuration.
stream_idstringrequiredThe unique identifier (ID) of the message stream to retrieve, e.g. "outbound" or "onboarding-emails".postmark_get_outbound_message#Get full details of a single outbound message by its Postmark Message ID, including sender, recipients, subject, tag, message stream, current status, and a full history of tracked events (e.g. Sent, Delivered, Opened, Clicked, Bounced) for that message. Does not return the raw SMTP source — use postmark_get_outbound_message_dump for that.1 param
Get full details of a single outbound message by its Postmark Message ID, including sender, recipients, subject, tag, message stream, current status, and a full history of tracked events (e.g. Sent, Delivered, Opened, Clicked, Bounced) for that message. Does not return the raw SMTP source — use postmark_get_outbound_message_dump for that.
message_idstringrequiredThe Postmark Message ID (a UUID) of the outbound message to retrieve. Obtain this from postmark_list_outbound_messages, from the MessageID field returned when the message was sent, or from a Postmark webhook payload.postmark_get_outbound_message_dump#Get the raw, complete SMTP source of a single outbound message by its Postmark Message ID, exactly as it was transmitted to the receiving mail server — including all MIME headers and body parts. Useful for deep debugging of formatting, encoding, or header issues that aren't visible in the parsed details returned by postmark_get_outbound_message.1 param
Get the raw, complete SMTP source of a single outbound message by its Postmark Message ID, exactly as it was transmitted to the receiving mail server — including all MIME headers and body parts. Useful for deep debugging of formatting, encoding, or header issues that aren't visible in the parsed details returned by postmark_get_outbound_message.
message_idstringrequiredThe Postmark Message ID (a UUID) of the outbound message whose raw SMTP source you want to retrieve. Obtain this from postmark_list_outbound_messages or from the MessageID returned when the message was sent.postmark_get_outbound_stats_overview#Get a high-level overview of outbound email activity for a Postmark server: total sent count, bounce counts and rate, spam complaint counts and rate, open counts and rate (unique and total), and click counts and rate (unique and total) for the requested date range. Optionally scope the overview to a specific tag or message stream. Omit all filters to get all-time, all-tag, all-stream totals.4 params
Get a high-level overview of outbound email activity for a Postmark server: total sent count, bounce counts and rate, spam complaint counts and rate, open counts and rate (unique and total), and click counts and rate (unique and total) for the requested date range. Optionally scope the overview to a specific tag or message stream. Omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the overview period, formatted YYYY-MM-DD. If omitted, Postmark includes all-time data up to todate.messagestreamstringoptionalMessage stream ID to scope the overview to (e.g. 'outbound' or 'broadcasts'). If omitted, stats are aggregated across all message streams on the server.tagstringoptionalTag to filter the overview by. Only messages sent with this exact tag are included. If omitted, the overview covers messages with any tag or no tag.todatestringoptionalEnd date (inclusive) for the overview period, formatted YYYY-MM-DD. If omitted, Postmark includes all-time data from fromdate through today.postmark_get_sent_counts#Get the number of emails sent from a Postmark server broken down by day, along with the total sent count for the requested date range. Use this to chart outbound sending volume over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get the number of emails sent from a Postmark server broken down by day, along with the total sent count for the requested date range. Use this to chart outbound sending volume over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the sent-count range, formatted YYYY-MM-DD. If omitted, all send history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the sent counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter sent counts by. Only messages sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the sent-count range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_server_info#Retrieve the full configuration of the current Postmark server, including its name, color, tracking and webhook settings (open/click/bounce/delivery/inbound hook URLs), inbound domain and spam threshold, and SMTP API settings. Takes no parameters and reflects the server whose API token is used to authenticate.0 params
Retrieve the full configuration of the current Postmark server, including its name, color, tracking and webhook settings (open/click/bounce/delivery/inbound hook URLs), inbound domain and spam threshold, and SMTP API settings. Takes no parameters and reflects the server whose API token is used to authenticate.
postmark_get_spam_complaint_counts#Get the number of spam complaints (recipients marking a message as spam) received for a Postmark server broken down by day for the requested date range. Use this to monitor sender reputation risk over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get the number of spam complaints (recipients marking a message as spam) received for a Postmark server broken down by day for the requested date range. Use this to monitor sender reputation risk over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the spam-complaint range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the spam complaint counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter spam complaint counts by. Only complaints for messages originally sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the spam-complaint range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_template#Retrieve a single email template or layout from the current Postmark server by its numeric ID or alias, including its Name, Subject, HtmlBody, TextBody, and associated layout.1 param
Retrieve a single email template or layout from the current Postmark server by its numeric ID or alias, including its Name, Subject, HtmlBody, TextBody, and associated layout.
template_id_or_aliasstringrequiredNumeric ID or alias string of the template to retrieve.postmark_get_tracked_email_counts#Get counts, broken down by day, of how many outbound emails from a Postmark server were sent with open tracking enabled and how many were sent with link (click) tracking enabled, for the requested date range. Use this to see tracking adoption over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.4 params
Get counts, broken down by day, of how many outbound emails from a Postmark server were sent with open tracking enabled and how many were sent with link (click) tracking enabled, for the requested date range. Use this to see tracking adoption over time. Optionally scope results to a specific tag or message stream; omit all filters to get all-time, all-tag, all-stream totals.
fromdatestringoptionalStart date (inclusive) for the tracked-email range, formatted YYYY-MM-DD. If omitted, all history up to todate is included.messagestreamstringoptionalMessage stream ID to scope the tracked-email counts to (e.g. 'outbound' or 'broadcasts'). If omitted, counts are aggregated across all message streams.tagstringoptionalTag to filter tracked-email counts by. Only messages sent with this exact tag are counted. If omitted, all tags (and untagged messages) are included.todatestringoptionalEnd date (inclusive) for the tracked-email range, formatted YYYY-MM-DD. If omitted, counts run through today.postmark_get_webhook#Retrieve the full configuration of a single webhook on the current Postmark server by its numeric ID, including its target URL, message stream scope, HTTP auth/header settings, and which event triggers are enabled.1 param
Retrieve the full configuration of a single webhook on the current Postmark server by its numeric ID, including its target URL, message stream scope, HTTP auth/header settings, and which event triggers are enabled.
webhook_idstringrequiredThe numeric ID of the webhook to retrieve, as returned by List Webhooks or Create Webhook.postmark_list_bounces#List bounces for the current Postmark server with pagination and optional filtering. Returns a paginated array of bounce records (bounce ID, type, email, description, timestamps, and whether the address is inactive/deactivated). Use the type, tag, messageID, date range, or message stream filters to narrow results, and count/offset to page through them.10 params
List bounces for the current Postmark server with pagination and optional filtering. Returns a paginated array of bounce records (bounce ID, type, email, description, timestamps, and whether the address is inactive/deactivated). Use the type, tag, messageID, date range, or message stream filters to narrow results, and count/offset to page through them.
countintegerrequiredNumber of bounces to return in this request. Maximum allowed value is 500. Example: 50.offsetintegerrequiredNumber of bounces to skip before starting to return results, for pagination (0-indexed). Example: 0 for the first page, 500 for the next page when count=500.email_filterstringoptionalFilter bounces to only those for a specific email address. Maps to Postmark's 'emailFilter' query parameter. Example: 'recipient@example.com'.from_datestringoptionalFilter bounces that occurred on or after this date. Format: YYYY-MM-DD. Maps to Postmark's 'fromdate' query parameter. Example: '2026-06-01'.inactivebooleanoptionalFilter by whether the bounced email address has been deactivated (true) or is still active (false). Omit to return both.message_idstringoptionalFilter bounces belonging to a specific Postmark MessageID (the UUID Postmark assigns to a sent message). Maps to Postmark's 'messageID' query parameter. Example: '0ac29aee-c259-4b34-8434-1b3f2a1af9b6'.message_streamstringoptionalFilter bounces by the message stream they were sent through (e.g. 'outbound' or 'broadcasts'). Maps to Postmark's 'messagestream' query parameter.tagstringoptionalFilter bounces to messages that were sent with this specific tag. Example: 'welcome-email'.to_datestringoptionalFilter bounces that occurred on or before this date. Format: YYYY-MM-DD. Maps to Postmark's 'todate' query parameter. Example: '2026-08-01'.typestringoptionalFilter bounces by Postmark bounce type code, e.g. 'HardBounce' or 'SoftBounce'. See Postmark's bounce type documentation for the full list.postmark_list_inbound_messages#List messages received (inbound) by a Postmark inbound server, with optional filters for recipient, sender, tag, subject, mailbox hash, processing status, and date range. Returns summary metadata for each matching message but not the full parsed content — use postmark_get_inbound_message for full details of a specific message. Pagination is mandatory: count and offset must always be supplied.10 params
List messages received (inbound) by a Postmark inbound server, with optional filters for recipient, sender, tag, subject, mailbox hash, processing status, and date range. Returns summary metadata for each matching message but not the full parsed content — use postmark_get_inbound_message for full details of a specific message. Pagination is mandatory: count and offset must always be supplied.
countintegerrequiredNumber of inbound messages to return in this page of results.offsetintegerrequiredNumber of messages to skip before starting to return results, used together with count to page through the full result set. Use 0 for the first page, then increment by count for each subsequent page.from_datestringoptionalFilter to messages processed on or after this date, evaluated in US Eastern time. Format YYYY-MM-DD. Maps to Postmark's fromdate query parameter.from_emailstringoptionalFilter results to messages sent from this exact sender email address. Maps to Postmark's fromemail query parameter.mailbox_hashstringoptionalFilter to messages sent to an inbound address containing this mailbox hash (the portion after the + in a hashed inbound address, e.g. the "sales" portion of hash+sales@inbound.postmarkapp.com). Maps to Postmark's mailboxhash query parameter.recipientstringoptionalFilter results to messages sent to this exact recipient email address (your Postmark inbound address, e.g. hash@inbound.postmarkapp.com).statusstringoptionalFilter results by processing status. Valid values: blocked (rejected by an inbound rule), processed (successfully processed and delivered to your webhook), queued (accepted, awaiting processing), failed (processing attempted and failed), or scheduled (queued for a delayed retry). Defaults to processed when not specified.subjectstringoptionalFilter results to messages whose subject line contains this text.tagstringoptionalFilter results to messages that were received with this exact tag.to_datestringoptionalFilter to messages processed on or before this date, evaluated in US Eastern time. Format YYYY-MM-DD. Maps to Postmark's todate query parameter.postmark_list_inbound_rules#List the inbound rule triggers configured on the Postmark server — the email addresses and domain patterns currently blocked from inbound processing. Supports paging via count (page size) and offset (records to skip). ASSUMPTION: the count/offset pagination parameters and their defaults (count=50, offset=0) are inferred from Postmark's legacy Swagger mirror (postmarkapp.com/swagger/server.yml) for the Inbound Rules section, since the current developer docs site does not separately document paging for this endpoint — verify against a live response if pagination behaves unexpectedly.2 params
List the inbound rule triggers configured on the Postmark server — the email addresses and domain patterns currently blocked from inbound processing. Supports paging via count (page size) and offset (records to skip). ASSUMPTION: the count/offset pagination parameters and their defaults (count=50, offset=0) are inferred from Postmark's legacy Swagger mirror (postmarkapp.com/swagger/server.yml) for the Inbound Rules section, since the current developer docs site does not separately document paging for this endpoint — verify against a live response if pagination behaves unexpectedly.
countintegeroptionalNumber of inbound rule records to return per page. Defaults to 50 (assumed from Postmark's standard list pagination convention — not separately confirmed for this endpoint on the current docs site).offsetintegeroptionalNumber of inbound rule records to skip before starting to return results. Defaults to 0 (assumed from Postmark's standard list pagination convention — not separately confirmed for this endpoint on the current docs site).postmark_list_message_clicks#List click (link click tracking) events for outbound messages sent from a Postmark server, with optional filters for recipient, tag, message stream, and the email client / operating system / platform / geolocation that triggered each click. Requires Link Tracking to be enabled on the relevant message stream, otherwise no click events will exist. Pagination is mandatory: count and offset must always be supplied.15 params
List click (link click tracking) events for outbound messages sent from a Postmark server, with optional filters for recipient, tag, message stream, and the email client / operating system / platform / geolocation that triggered each click. Requires Link Tracking to be enabled on the relevant message stream, otherwise no click events will exist. Pagination is mandatory: count and offset must always be supplied.
countintegerrequiredNumber of click events to return in this page of results.offsetintegerrequiredNumber of click events to skip before starting to return results, used together with count to page through the full result set. Use 0 for the first page, then increment by count for each subsequent page.citystringoptionalFilter by the geolocated city from which the link was clicked.client_companystringoptionalFilter by the company that makes the email client used when the link was clicked (e.g. Google, Microsoft, Apple).client_familystringoptionalFilter by the client family/category used when the link was clicked (e.g. Chrome, Outlook, Mobile Safari).client_namestringoptionalFilter by the name of the email client used to view the message when the link was clicked (e.g. Chrome, Outlook, Apple Mail).countrystringoptionalFilter by the geolocated country from which the link was clicked.message_streamstringoptionalFilter results to click events for messages sent through this message stream ID. Defaults to outbound (the default transactional stream) if not specified. Maps to Postmark's messagestream query parameter.os_companystringoptionalFilter by the company that makes the operating system used when the link was clicked (e.g. Apple, Microsoft).os_familystringoptionalFilter by the operating system family used when the link was clicked (e.g. OS X, Windows, iOS).os_namestringoptionalFilter by the name of the operating system used when the link was clicked (e.g. OS X, Windows, iOS).platformstringoptionalFilter by the type of platform used when the link was clicked. Valid values: webmail, desktop, or mobile.recipientstringoptionalFilter results to click events for messages sent to this exact recipient email address.regionstringoptionalFilter by the geolocated region/state from which the link was clicked.tagstringoptionalFilter results to click events for messages that were sent with this exact tag.postmark_list_message_opens#List open (email open tracking) events for outbound messages sent from a Postmark server, with optional filters for recipient, tag, message stream, and the email client / operating system / platform / geolocation that triggered each open. Requires Open Tracking to be enabled on the relevant message stream, otherwise no open events will exist. Pagination is mandatory: count and offset must always be supplied.15 params
List open (email open tracking) events for outbound messages sent from a Postmark server, with optional filters for recipient, tag, message stream, and the email client / operating system / platform / geolocation that triggered each open. Requires Open Tracking to be enabled on the relevant message stream, otherwise no open events will exist. Pagination is mandatory: count and offset must always be supplied.
countintegerrequiredNumber of open events to return in this page of results.offsetintegerrequiredNumber of open events to skip before starting to return results, used together with count to page through the full result set. Use 0 for the first page, then increment by count for each subsequent page.citystringoptionalFilter by the geolocated city from which the message was opened.client_companystringoptionalFilter by the company that makes the email client used to open the message (e.g. Google, Microsoft, Apple).client_familystringoptionalFilter by the client family/category used to open the message (e.g. Chrome, Outlook, Mobile Safari).client_namestringoptionalFilter by the name of the email client used to open the message (e.g. Chrome, Outlook, Apple Mail).countrystringoptionalFilter by the geolocated country from which the message was opened.message_streamstringoptionalFilter results to open events for messages sent through this message stream ID. Defaults to outbound (the default transactional stream) if not specified. Maps to Postmark's messagestream query parameter.os_companystringoptionalFilter by the company that makes the operating system used to open the message (e.g. Apple, Microsoft).os_familystringoptionalFilter by the operating system family used to open the message (e.g. OS X, Windows, iOS).os_namestringoptionalFilter by the name of the operating system used to open the message (e.g. OS X, Windows, iOS).platformstringoptionalFilter by the type of platform used to open the message. Valid values: webmail, desktop, or mobile.recipientstringoptionalFilter results to open events for messages sent to this exact recipient email address.regionstringoptionalFilter by the geolocated region/state from which the message was opened.tagstringoptionalFilter results to open events for messages that were sent with this exact tag.postmark_list_message_streams#List the message streams configured on the current Postmark server. Message streams separate transactional mail from broadcast/marketing mail so bounce and engagement behavior can be tracked independently. Filter by stream type (All, Inbound, Transactional, Broadcasts) and optionally include archived streams.2 params
List the message streams configured on the current Postmark server. Message streams separate transactional mail from broadcast/marketing mail so bounce and engagement behavior can be tracked independently. Filter by stream type (All, Inbound, Transactional, Broadcasts) and optionally include archived streams.
include_archived_streamsbooleanoptionalWhether to include archived message streams in the results. Defaults to false.message_stream_typestringoptionalFilter streams by type. One of: All, Inbound, Transactional, Broadcasts. Defaults to All.postmark_list_outbound_messages#List messages sent (outbound) from a Postmark server, with optional filters for recipient, sender, tag, subject, delivery status, message stream, and date range. Returns summary metadata for each matching message (Message ID, subject, recipient, tag, status, received/submitted timestamps) but not the full message body — use postmark_get_outbound_message for full details of a specific message. Pagination is mandatory: count and offset must always be supplied, and Postmark caps count at 500 per request.10 params
List messages sent (outbound) from a Postmark server, with optional filters for recipient, sender, tag, subject, delivery status, message stream, and date range. Returns summary metadata for each matching message (Message ID, subject, recipient, tag, status, received/submitted timestamps) but not the full message body — use postmark_get_outbound_message for full details of a specific message. Pagination is mandatory: count and offset must always be supplied, and Postmark caps count at 500 per request.
countintegerrequiredNumber of outbound messages to return in this page of results. Must be between 1 and 500 (Postmark's maximum page size for this endpoint).offsetintegerrequiredNumber of messages to skip before starting to return results, used together with count to page through the full result set. Use 0 for the first page, then increment by count for each subsequent page.from_datestringoptionalFilter to messages processed on or after this date, evaluated in US Eastern time. Format YYYY-MM-DD. Maps to Postmark's fromdate query parameter.from_emailstringoptionalFilter results to messages sent from this exact sender email address. Maps to Postmark's fromemail query parameter.message_streamstringoptionalFilter results to messages sent through this message stream ID (e.g. the default outbound transactional stream, or a specific broadcast stream). Maps to Postmark's messagestream query parameter.recipientstringoptionalFilter results to messages sent to this exact recipient email address.statusstringoptionalFilter results by delivery status. Valid values: queued (accepted by Postmark, not yet sent to a receiving server), sent (handed off to the receiving server), or processed (accepted by Postmark regardless of eventual delivery outcome, including messages that later bounced).subjectstringoptionalFilter results to messages whose subject line contains this text.tagstringoptionalFilter results to messages that were sent with this exact tag.to_datestringoptionalFilter to messages processed on or before this date, evaluated in US Eastern time. Format YYYY-MM-DD. Maps to Postmark's todate query parameter.postmark_list_suppressions#List all suppressed email addresses for a specific Postmark message stream. Suppressions prevent Postmark from sending to an address (e.g. due to a hard bounce, spam complaint, or manual suppression) until the address is reactivated or removed from the suppression list. Optionally filter by suppression reason, origin (who/what created the suppression), a creation-date range, or a single email address. Returns an array of suppression records, each including EmailAddress, SuppressionReason, Origin, and CreatedAt.6 params
List all suppressed email addresses for a specific Postmark message stream. Suppressions prevent Postmark from sending to an address (e.g. due to a hard bounce, spam complaint, or manual suppression) until the address is reactivated or removed from the suppression list. Optionally filter by suppression reason, origin (who/what created the suppression), a creation-date range, or a single email address. Returns an array of suppression records, each including EmailAddress, SuppressionReason, Origin, and CreatedAt.
stream_idstringrequiredThe unique identifier (ID) of the message stream to list suppressions for, e.g. "outbound" or "broadcasts".email_addressstringoptionalFilter results down to a single specific email address. If omitted, suppressions for all addresses in the stream are returned.fromdatestringoptionalStart date (inclusive) to filter suppressions by creation date, formatted YYYY-MM-DD. If omitted, no lower bound is applied.originstringoptionalFilter results by the origin that created the suppression. One of: Recipient (bounce/complaint reported by the recipient), Customer (added manually via API/dashboard), Admin (added by Postmark support). If omitted, suppressions from all origins are returned.suppression_reasonstringoptionalFilter results to suppressions created for this reason. One of: HardBounce, SpamComplaint, ManualSuppression. If omitted, suppressions of all reasons are returned.todatestringoptionalEnd date (inclusive) to filter suppressions by creation date, formatted YYYY-MM-DD. If omitted, no upper bound is applied.postmark_list_templates#List email templates and layouts on the current Postmark server, with pagination via count and offset. Optionally filter by template_type (All, Standard, or Layout) or by the alias of a parent layout template.4 params
List email templates and layouts on the current Postmark server, with pagination via count and offset. Optionally filter by template_type (All, Standard, or Layout) or by the alias of a parent layout template.
countintegeroptionalNumber of templates to return in this page of results.layout_templatestringoptionalFilter results to only templates that use the layout with this alias.offsetintegeroptionalNumber of templates to skip before starting to return results, for pagination.template_typestringoptionalFilter results by template type: All, Standard, or Layout.postmark_list_webhooks#List the webhooks configured on the current Postmark server, including each webhook's URL, message stream scope, HTTP auth/header configuration, and which event triggers (Open, Click, Delivery, Bounce, SpamComplaint, SubscriptionChange) are enabled. Optionally filter to webhooks scoped to a specific message stream.1 param
List the webhooks configured on the current Postmark server, including each webhook's URL, message stream scope, HTTP auth/header configuration, and which event triggers (Open, Click, Delivery, Bounce, SpamComplaint, SubscriptionChange) are enabled. Optionally filter to webhooks scoped to a specific message stream.
message_streamstringoptionalOptional message stream ID to filter webhooks by. If omitted, webhooks for all streams are returned.postmark_retry_inbound_message#Retry processing of an inbound message that previously failed, causing Postmark to attempt delivery to your configured inbound webhook again. Only messages whose current status is Failed can be retried; calling this on a message that isn't in a failed state has no additional effect. Takes no request body.1 param
Retry processing of an inbound message that previously failed, causing Postmark to attempt delivery to your configured inbound webhook again. Only messages whose current status is Failed can be retried; calling this on a message that isn't in a failed state has no additional effect. Takes no request body.
message_idstringrequiredThe Postmark Message ID (a UUID) of the failed inbound message to retry. Obtain this from postmark_list_inbound_messages (filter status=failed) or from postmark_get_inbound_message.postmark_send_batch_emails#Send up to 500 individual transactional emails in a single batch request (max 50MB total payload). Each item in the messages array has the same shape as a single Send Email call (from and to are required per message; the rest are optional). Postmark processes each message independently and returns a per-message result array.1 param
Send up to 500 individual transactional emails in a single batch request (max 50MB total payload). Each item in the messages array has the same shape as a single Send Email call (from and to are required per message; the rest are optional). Postmark processes each message independently and returns a per-message result array.
messagesarrayrequiredArray of email message objects to send in this batch. Maximum 500 items and 50MB total payload. Each item requires from and to; other fields mirror the single Send Email tool.postmark_send_batch_emails_with_templates#Send up to 500 template-rendered transactional emails in a single batch request. Each item in the messages array mirrors a single Send Email with Template call: TemplateId or TemplateAlias identifies the template, TemplateModel supplies the render data, and From/To are required. Postmark processes each message independently and returns a per-message result array.1 param
Send up to 500 template-rendered transactional emails in a single batch request. Each item in the messages array mirrors a single Send Email with Template call: TemplateId or TemplateAlias identifies the template, TemplateModel supplies the render data, and From/To are required. Postmark processes each message independently and returns a per-message result array.
messagesarrayrequiredArray of template-based email message objects to send in this batch. Maximum 500 items. Each item requires From, To, TemplateModel, and exactly one of TemplateId or TemplateAlias.postmark_send_email#Send a single transactional email through Postmark. Requires a From sender address and one or more To recipients (comma-separated, up to 50). At least one of html_body or text_body must be provided. Supports CC/BCC, a reply-to override, custom headers, attachments, free-form metadata, open/link tracking, and routing through a specific message stream.15 params
Send a single transactional email through Postmark. Requires a From sender address and one or more To recipients (comma-separated, up to 50). At least one of html_body or text_body must be provided. Supports CC/BCC, a reply-to override, custom headers, attachments, free-form metadata, open/link tracking, and routing through a specific message stream.
fromstringrequiredSender email address. Can include a display name, e.g. 'Sender Name <sender@example.com>'. Must be a verified Sender Signature or domain on the Postmark server.tostringrequiredRecipient email address(es). Multiple addresses are comma-separated, up to 50 total. Each may include a display name, e.g. 'Name <recipient@example.com>'.attachmentsarrayoptionalArray of file attachments. Each item is an object with Name, Content (base64-encoded file data), ContentType, and an optional ContentID (used to reference inline images from the HTML body via 'cid:').bccstringoptionalBCC recipient email address(es), comma-separated for multiple.ccstringoptionalCC recipient email address(es), comma-separated for multiple.headersarrayoptionalArray of custom email headers to include. Each item is an object with Name and Value keys, e.g. [{"Name":"X-Custom-Header","Value":"value"}].html_bodystringoptionalHTML body content of the email. Required if text_body is not provided — at least one of html_body or text_body must be set.message_streamstringoptionalThe message stream to send this email through. Defaults to 'outbound' for transactional email.metadataobjectoptionalFree-form key-value metadata to attach to the message, returned later in webhooks and message details. Example: {"order-id":"1234"}.reply_tostringoptionalReply-To email address to use instead of the From address.subjectstringoptionalSubject line of the email.tagstringoptionalTag used to categorize this email for tracking and statistics. Maximum 1000 characters.text_bodystringoptionalPlain text body content of the email. Required if html_body is not provided — at least one of html_body or text_body must be set.track_linksstringoptionalLink tracking mode for this email. One of None, HtmlAndText, HtmlOnly, or TextOnly. If omitted, the server's default link-tracking setting is used.track_opensbooleanoptionalWhether to enable open tracking for this email. If omitted, the server's default open-tracking setting is used.postmark_send_email_with_template#Send a single transactional email rendered from a Postmark template. Identify the template by template_id or template_alias (exactly one is required) and supply template_model with the data used to render its placeholders. Supports the same From/To/CC/BCC, headers, attachments, metadata, and tracking options as a regular send.16 params
Send a single transactional email rendered from a Postmark template. Identify the template by template_id or template_alias (exactly one is required) and supply template_model with the data used to render its placeholders. Supports the same From/To/CC/BCC, headers, attachments, metadata, and tracking options as a regular send.
fromstringrequiredSender email address. Can include a display name, e.g. 'Sender Name <sender@example.com>'. Must be a verified Sender Signature or domain on the Postmark server.template_modelobjectrequiredData object used to render the template's placeholder variables. Example: {"name":"Jane","product_url":"https://example.com"}.tostringrequiredRecipient email address(es). Multiple addresses are comma-separated, up to 50 total.attachmentsarrayoptionalArray of file attachments. Each item is an object with Name, Content (base64-encoded file data), ContentType, and an optional ContentID (used to reference inline images from the rendered HTML via 'cid:').bccstringoptionalBCC recipient email address(es), comma-separated for multiple.ccstringoptionalCC recipient email address(es), comma-separated for multiple.headersarrayoptionalArray of custom email headers to include. Each item is an object with Name and Value keys, e.g. [{"Name":"X-Custom-Header","Value":"value"}].inline_cssbooleanoptionalWhether to inline CSS styles into the rendered HTML. Only applies to templates that use a Layout with a <style> block.message_streamstringoptionalThe message stream to send this email through. Defaults to 'outbound' for transactional email.metadataobjectoptionalFree-form key-value metadata to attach to the message, returned later in webhooks and message details. Example: {"order-id":"1234"}.reply_tostringoptionalReply-To email address to use instead of the From address.tagstringoptionalTag used to categorize this email for tracking and statistics. Maximum 1000 characters.template_aliasstringoptionalAlias of the template to render. Required if template_id is not provided — exactly one of template_id or template_alias must be set.template_idintegeroptionalNumeric ID of the template to render. Required if template_alias is not provided — exactly one of template_id or template_alias must be set.track_linksstringoptionalLink tracking mode for this email. One of None, HtmlAndText, HtmlOnly, or TextOnly. If omitted, the server's default link-tracking setting is used.track_opensbooleanoptionalWhether to enable open tracking for this email. If omitted, the server's default open-tracking setting is used.postmark_unarchive_message_stream#Unarchive a previously archived message stream on the current Postmark server, restoring it to active use before its 30-day deletion window elapses. Fails if the stream was not archived or if it has already been permanently deleted.1 param
Unarchive a previously archived message stream on the current Postmark server, restoring it to active use before its 30-day deletion window elapses. Fails if the stream was not archived or if it has already been permanently deleted.
stream_idstringrequiredThe unique identifier (ID) of the archived message stream to restore, e.g. "onboarding-emails".postmark_update_message_stream#Update an existing message stream's display name, description, or subscription management configuration on the current Postmark server. The stream's ID and type cannot be changed after creation.4 params
Update an existing message stream's display name, description, or subscription management configuration on the current Postmark server. The stream's ID and type cannot be changed after creation.
stream_idstringrequiredThe unique identifier (ID) of the message stream to update, e.g. "onboarding-emails".descriptionstringoptionalNew free-text description of the message stream's purpose. Omit to leave unchanged.namestringoptionalNew human-friendly display name for the message stream. Omit to leave unchanged.subscription_management_configurationobjectoptionalOptional object controlling unsubscribe handling for Broadcasts streams. Shape: {"UnsubscribeHandlingType": "none"|"Postmark"|"Custom"}. Omit to leave unchanged.postmark_update_server_info#Update configuration settings for the current Postmark server (the server identified by the API token used to authenticate). Every field is optional and only the fields you provide are changed on Postmark's side; fields left blank are not modified. Use this to rename the server, change its color, toggle open/click tracking, or set webhook URLs for delivery, bounce, open, click, and inbound events.16 params
Update configuration settings for the current Postmark server (the server identified by the API token used to authenticate). Every field is optional and only the fields you provide are changed on Postmark's side; fields left blank are not modified. Use this to rename the server, change its color, toggle open/click tracking, or set webhook URLs for delivery, bounce, open, click, and inbound events.
bounce_hook_urlstringoptionalURL that Postmark will POST to whenever a message sent from this server bounces. Must be a valid HTTPS URL. Maps to Postmark's 'BounceHookUrl' field.click_hook_urlstringoptionalURL that Postmark will POST to whenever a tracked link in a message from this server is clicked. Must be a valid HTTPS URL. Maps to Postmark's 'ClickHookUrl' field.colorstringoptionalColor label shown for this server in the Postmark dashboard. One of: Purple, Blue, Turquoise, Green, Red, Yellow, Grey, Orange. Maps to Postmark's 'Color' field.delivery_hook_urlstringoptionalURL that Postmark will POST to whenever a message sent from this server is successfully delivered. Must be a valid HTTPS URL. Maps to Postmark's 'DeliveryHookUrl' field.enable_smtp_api_error_hooksbooleanoptionalWhether Postmark should call the bounce webhook for SMTP API errors as well as bounces. Maps to Postmark's 'EnableSmtpApiErrorHooks' field.inbound_domainstringoptionalInbound domain to associate with this server's inbound email address, used for parsing incoming email. Maps to Postmark's 'InboundDomain' field.inbound_hook_urlstringoptionalURL that Postmark will POST to whenever this server receives an inbound email. Must be a valid HTTPS URL. Maps to Postmark's 'InboundHookUrl' field.inbound_spam_thresholdintegeroptionalSpamAssassin score threshold above which inbound messages are marked as spam and blocked from forwarding. Higher values are more permissive. Maps to Postmark's 'InboundSpamThreshold' field.include_bounce_content_in_hookbooleanoptionalWhether the bounce webhook payload should include the full bounce content (raw source). Maps to Postmark's 'IncludeBounceContentInHook' field.namestringoptionalDisplay name for this Postmark server, shown in the dashboard. Maps to Postmark's 'Name' field. Example: 'Production Server'.open_hook_urlstringoptionalURL that Postmark will POST to whenever a message sent from this server is opened (requires TrackOpens). Must be a valid HTTPS URL. Maps to Postmark's 'OpenHookUrl' field.post_first_open_onlybooleanoptionalWhether the open webhook should fire only for the first open of a message, rather than every open. Maps to Postmark's 'PostFirstOpenOnly' field.raw_email_enabledbooleanoptionalWhether inbound emails should be posted to the inbound webhook as a raw MIME message instead of Postmark's parsed JSON format. Maps to Postmark's 'RawEmailEnabled' field.smtp_api_activatedbooleanoptionalWhether this server is permitted to send messages via the SMTP API (in addition to the standard email API). Maps to Postmark's 'SmtpApiActivated' field.track_linksstringoptionalDefault link-tracking behavior for messages sent from this server. One of: None, HtmlAndText, HtmlOnly, TextOnly. Maps to Postmark's 'TrackLinks' field.track_opensbooleanoptionalWhether open tracking is enabled by default for messages sent from this server. Maps to Postmark's 'TrackOpens' field.postmark_update_template#Update an existing email template or layout on the current Postmark server, identified by numeric ID or alias. At least one of html_body or text_body should remain set after the update. subject applies to Standard templates and is not used for Layout templates.7 params
Update an existing email template or layout on the current Postmark server, identified by numeric ID or alias. At least one of html_body or text_body should remain set after the update. subject applies to Standard templates and is not used for Layout templates.
namestringrequiredDescriptive name of the template, shown in the Postmark dashboard.template_id_or_aliasstringrequiredNumeric ID or alias string of the template to update.aliasstringoptionalUnique alias for the template, used to reference it in the withTemplate send API instead of its numeric ID.html_bodystringoptionalHTML content of the template. Required if text_body is not also being set to a value — the template must end up with at least one of the two.layout_templatestringoptionalAlias of the parent Layout template this Standard template should render inside.subjectstringoptionalSubject line template, rendered with the same placeholder data as the body. Applies to Standard templates; not used for Layout templates.text_bodystringoptionalPlain text content of the template. Required if html_body is not also being set to a value — the template must end up with at least one of the two.postmark_update_webhook#Update an existing webhook on the current Postmark server by its numeric ID. Any field you omit is left unchanged. Use this to change the target URL, HTTP auth/header configuration, or which event triggers (Open, Click, Delivery, Bounce, SpamComplaint, SubscriptionChange) fire the webhook.5 params
Update an existing webhook on the current Postmark server by its numeric ID. Any field you omit is left unchanged. Use this to change the target URL, HTTP auth/header configuration, or which event triggers (Open, Click, Delivery, Bounce, SpamComplaint, SubscriptionChange) fire the webhook.
webhook_idstringrequiredThe numeric ID of the webhook to update, as returned by List Webhooks or Create Webhook.http_authobjectoptionalOptional replacement HTTP basic auth credentials Postmark will send when calling your webhook URL. Shape: {"Username": "...", "Password": "..."}. Omit to leave unchanged.http_headersarrayoptionalOptional replacement array of custom HTTP headers Postmark will send with each webhook request. Each item shape: {"Name": "...", "Value": "..."}. Omit to leave unchanged.triggersobjectoptionalOptional replacement object enabling specific event triggers for this webhook. Shape: {"Open": {"Enabled": bool, "PostFirstOpenOnly": bool}, "Click": {"Enabled": bool}, "Delivery": {"Enabled": bool}, "Bounce": {"Enabled": bool, "IncludeContent": bool}, "SpamComplaint": {"Enabled": bool, "IncludeContent": bool}, "SubscriptionChange": {"Enabled": bool}}. Omit to leave unchanged; only include the trigger keys you want to change.urlstringoptionalOptional replacement HTTPS endpoint Postmark will POST event payloads to. Omit to leave unchanged.postmark_validate_template#Validate template content without saving it, rendering subject, html_body, and/or text_body against test_render_model to surface syntax errors and preview the rendered output. Provide at least one of subject, html_body, or text_body to validate.7 params
Validate template content without saving it, rendering subject, html_body, and/or text_body against test_render_model to surface syntax errors and preview the rendered output. Provide at least one of subject, html_body, or text_body to validate.
html_bodystringoptionalHTML body content to validate. Provide at least one of subject, html_body, or text_body.inline_css_for_html_test_renderbooleanoptionalWhether to inline CSS styles into the rendered HTML preview. Only relevant when html_body uses a Layout with a <style> block.layout_templatestringoptionalAlias of the parent Layout template to validate this content against, if applicable.subjectstringoptionalSubject line content to validate. Provide at least one of subject, html_body, or text_body.template_typestringoptionalType of template being validated: Standard or Layout. Affects which placeholders (e.g. {{{@content}}}) are considered valid.test_render_modelobjectoptionalSample data object used to render the placeholders in subject, html_body, and text_body for this validation. Example: {"name":"Jane"}.text_bodystringoptionalPlain text body content to validate. Provide at least one of subject, html_body, or text_body.