Postmark website screenshot

Postmark

Postmark is an email delivery service that helps businesses send and track transactional and broadcast email reliably, replacing SMTP with a scalable service that surfaces detailed delivery analytics, bounce tracking, open and click tracking, and dedicated IP addresses.

1 APIs 16 Features
EmailsMessagingTransactional EmailDeliverabilitySMTP

APIs

Postmark API

The Postmark API provides programmatic access to send and track transactional and broadcast emails, manage servers, templates, message streams, bounces, suppressions, statistics...

Agent Skills

postmark-inbound

AGENT SKILL

postmark-send-email

AGENT SKILL

postmark-templates

AGENT SKILL

postmark-webhooks

AGENT SKILL

postmark

AGENT SKILL

Collections

GraphQL

Postmark GraphQL Schema

This document describes a conceptual GraphQL schema for the Postmark transactional email API. Postmark provides a REST API for sending and tracking transactional and broadcast e...

GRAPHQL

Pricing Plans

Postmark Plans Pricing

4 plans

PLANS

Rate Limits

Postmark Rate Limits

2 limits

RATE LIMITS

FinOps

Features

Free: 100 emails/month
Basic: $15/mo for 10K emails
Pro: $16.50/mo for 10K emails with templates and webhooks
Platform: $18/mo for 10K emails with multiple servers and dedicated IPs
Email API and SMTP server
Templates with versioning (Pro+)
Webhooks for delivery, bounce, open, click, spam, subscription events
Bounce and spam complaint handling
Server tokens for per-environment isolation
Send up to 500 emails per batch request
Inbound email parsing
Message Streams (broadcast vs transactional)
OpenTracker beacon for opens/clicks
Suppression management
Dedicated IPs (Platform)
Best-in-class deliverability

Event Specifications

Postmark Webhooks

AsyncAPI description of Postmark's outbound webhook surface. Postmark delivers event notifications by issuing HTTP POST requests with a JSON body to a URL the customer configure...

ASYNCAPI

JSON Structure

Postmark Structure

0 properties

JSON STRUCTURE

Resources

🔗
AgentSkills
AgentSkills
🔗
Website
Website
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
💰
Pricing
Pricing
📝
Signup
Signup
🔗
Login
Login
📰
Blog
Blog
💬
Support
Support
🟢
StatusPage
StatusPage
🔗
Templates
Templates
📄
ChangeLog
ChangeLog
📜
TermsOfService
TermsOfService
📜
PrivacyPolicy
PrivacyPolicy
👥
GitHub
GitHub
🔗
Twitter
Twitter
🔗
LinkedIn
LinkedIn

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Postmark API
  version: 1.0.0
items:
- info:
    name: Bounceid
    type: folder
  items:
  - info:
      name: Postmark Get a single bounce
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/bounces/:bounceid
      params:
      - name: bounceid
        value: <integer>
        type: path
        description: The ID of the bounce to retrieve.
    docs: Postmark Get a single bounce
  - info:
      name: Postmark Get bounce dump
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/bounces/:bounceid/dump
      params:
      - name: bounceid
        value: <integer>
        type: path
        description: The ID of the bounce to retrieve.
    docs: Postmark Get bounce dump
- info:
    name: Activate
    type: folder
  items:
  - info:
      name: Postmark Activate a bounce
      type: http
    http:
      method: PUT
      url: http://{{baseurl}}/bounces/:bounceid/activate
      params:
      - name: bounceid
        value: <integer>
        type: path
        description: The ID of the bounce to retrieve.
    docs: Postmark Activate a bounce
- info:
    name: Bounces
    type: folder
  items:
  - info:
      name: Postmark Get bounces
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/bounces
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: type
        value: <string>
        type: query
        description: Filter by type of bounce
      - name: inactive
        value: <boolean>
        type: query
        description: Filter by emails that were deactivated by Postmark due to the bounce. Set to true or false. If this isn't
          specified it will return both active and inactive.
      - name: emailFilter
        value: <string>
        type: query
        description: Filter by email address
      - name: messageID
        value: <string>
        type: query
        description: Filter by messageID
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
    docs: Postmark Get bounces
- info:
    name: Default
    type: folder
  items:
  - info:
      name: Postmark Get bounced tags
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/bounces/tags
    docs: Postmark Get bounced tags
  - info:
      name: Postmark Get delivery stats
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/deliverystats
    docs: Postmark Get delivery stats
- info:
    name: Email
    type: folder
  items:
  - info:
      name: Postmark Send a single email
      type: http
    http:
      method: POST
      url: http://{{baseurl}}/email
    docs: Postmark Send a single email
  - info:
      name: Postmark Send an email using a Template
      type: http
    http:
      method: POST
      url: http://{{baseurl}}/email/withTemplate
    docs: Postmark Send an email using a Template
- info:
    name: Batch
    type: folder
  items:
  - info:
      name: Postmark Send a batch of emails
      type: http
    http:
      method: POST
      url: http://{{baseurl}}/email/batch
    docs: Postmark Send a batch of emails
  - info:
      name: Postmark Send a batch of email using templates.
      type: http
    http:
      method: POST
      url: http://{{baseurl}}/email/batchWithTemplates
    docs: Postmark Send a batch of email using templates.
- info:
    name: Bypass
    type: folder
  items:
  - info:
      name: Postmark Bypass rules for a blocked inbound message
      type: http
    http:
      method: PUT
      url: http://{{baseurl}}/messages/inbound/:messageid/bypass
      params:
      - name: messageid
        value: <string>
        type: path
        description: The ID of the message which should bypass inbound rules.
    docs: Postmark Bypass rules for a blocked inbound message
- info:
    name: Inbound
    type: folder
  items:
  - info:
      name: Postmark Inbound message details
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/inbound/:messageid/details
      params:
      - name: messageid
        value: <string>
        type: path
        description: The ID of the message which should bypass inbound rules.
    docs: Postmark Inbound message details
  - info:
      name: Postmark Retry a failed inbound message for processing
      type: http
    http:
      method: PUT
      url: http://{{baseurl}}/messages/inbound/:messageid/retry
      params:
      - name: messageid
        value: <string>
        type: path
        description: The ID of the message which should bypass inbound rules.
    docs: Postmark Retry a failed inbound message for processing
  - info:
      name: Postmark Inbound message search
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/inbound
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: recipient
        value: <string>
        type: query
        description: Filter by the user who was receiving the email
      - name: fromemail
        value: <string>
        type: query
        description: Filter by the sender email address
      - name: subject
        value: <string>
        type: query
        description: Filter by email subject
      - name: mailboxhash
        value: <string>
        type: query
        description: Filter by mailboxhash
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: status
        value: <string>
        type: query
        description: Filter by status (`blocked`, `processed`, `queued`, `failed`, `scheduled`)
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
    docs: Postmark Inbound message search
- info:
    name: Messages
    type: folder
  items:
  - info:
      name: Postmark Clicks for a all messages
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/outbound/clicks
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: recipient
        value: <string>
        type: query
        description: Filter by the user who was receiving the email
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: client_name
        value: <string>
        type: query
        description: Filter by client name, i.e. Outlook, Gmail
      - name: client_company
        value: <string>
        type: query
        description: Filter by company, i.e. Microsoft, Apple, Google
      - name: client_family
        value: <string>
        type: query
        description: Filter by client family, i.e. OS X, Chrome
      - name: os_name
        value: <string>
        type: query
        description: Filter by full OS name and specific version, i.e. OS X 10.9 Mavericks, Windows 7
      - name: os_family
        value: <string>
        type: query
        description: Filter by kind of OS used without specific version, i.e. OS X, Windows
      - name: os_company
        value: <string>
        type: query
        description: Filter by company which produced the OS, i.e. Apple Computer, Inc., Microsoft Corporation
      - name: platform
        value: <string>
        type: query
        description: Filter by platform, i.e. webmail, desktop, mobile
      - name: country
        value: <string>
        type: query
        description: Filter by country messages were opened in, i.e. Denmark, Russia
      - name: region
        value: <string>
        type: query
        description: Filter by full name of region messages were opened in, i.e. Moscow, New York
      - name: city
        value: <string>
        type: query
        description: Filter by full name of region messages were opened in, i.e. Moscow, New York
    docs: Postmark Clicks for a all messages
  - info:
      name: Postmark Opens for all messages
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/outbound/opens
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: recipient
        value: <string>
        type: query
        description: Filter by the user who was receiving the email
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: client_name
        value: <string>
        type: query
        description: Filter by client name, i.e. Outlook, Gmail
      - name: client_company
        value: <string>
        type: query
        description: Filter by company, i.e. Microsoft, Apple, Google
      - name: client_family
        value: <string>
        type: query
        description: Filter by client family, i.e. OS X, Chrome
      - name: os_name
        value: <string>
        type: query
        description: Filter by full OS name and specific version, i.e. OS X 10.9 Mavericks, Windows 7
      - name: os_family
        value: <string>
        type: query
        description: Filter by kind of OS used without specific version, i.e. OS X, Windows
      - name: os_company
        value: <string>
        type: query
        description: Filter by company which produced the OS, i.e. Apple Computer, Inc., Microsoft Corporation
      - name: platform
        value: <string>
        type: query
        description: Filter by platform, i.e. webmail, desktop, mobile
      - name: country
        value: <string>
        type: query
        description: Filter by country messages were opened in, i.e. Denmark, Russia
      - name: region
        value: <string>
        type: query
        description: Filter by full name of region messages were opened in, i.e. Moscow, New York
      - name: city
        value: <string>
        type: query
        description: Filter by full name of region messages were opened in, i.e. Moscow, New York
    docs: Postmark Opens for all messages
  - info:
      name: Postmark Outbound message details
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/outbound/:messageid/details
      params:
      - name: messageid
        value: <string>
        type: path
        description: The ID of the message which should bypass inbound rules.
    docs: Postmark Outbound message details
  - info:
      name: Postmark Outbound message search
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/outbound
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: recipient
        value: <string>
        type: query
        description: Filter by the user who was receiving the email
      - name: fromemail
        value: <string>
        type: query
        description: Filter by the sender email address
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: status
        value: <string>
        type: query
        description: Filter by status (`blocked`, `processed`, `queued`, `failed`, `scheduled`)
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
    docs: Postmark Outbound message search
- info:
    name: Message Identifier
    type: folder
  items:
  - info:
      name: Postmark Retrieve Message Clicks
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/outbound/clicks/:messageid
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: messageid
        value: <string>
        type: path
        description: The ID of the message which should bypass inbound rules.
    docs: Postmark Retrieve Message Clicks
  - info:
      name: Postmark Retrieve Message Opens
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/outbound/opens/:messageid
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: messageid
        value: <string>
        type: path
        description: The ID of the message which should bypass inbound rules.
    docs: Postmark Retrieve Message Opens
- info:
    name: Dump
    type: folder
  items:
  - info:
      name: Postmark Outbound message dump
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/messages/outbound/:messageid/dump
      params:
      - name: messageid
        value: <string>
        type: path
        description: The ID of the message which should bypass inbound rules.
    docs: Postmark Outbound message dump
- info:
    name: Outbound
    type: folder
  items:
  - info:
      name: Postmark Get click counts
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/clicks
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get click counts
  - info:
      name: Postmark Get browser plaform usage
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/clicks/platforms
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get browser plaform usage
  - info:
      name: Postmark Get email open counts
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/opens
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get email open counts
  - info:
      name: Postmark Get email platform usage
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/opens/platforms
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get email platform usage
  - info:
      name: Postmark Get email read times
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/opens/readtimes
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get email read times
  - info:
      name: Postmark Get outbound overview
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get outbound overview
  - info:
      name: Postmark Get bounce counts
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/bounces
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get bounce counts
  - info:
      name: Postmark Get sent counts
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/sends
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get sent counts
  - info:
      name: Postmark Get spam complaints
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/spam
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get spam complaints
  - info:
      name: Postmark Get tracked email counts
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/tracked
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get tracked email counts
- info:
    name: Browser Families
    type: folder
  items:
  - info:
      name: Postmark Get browser usage by family
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/clicks/browserfamilies
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get browser usage by family
- info:
    name: Locations
    type: folder
  items:
  - info:
      name: Postmark Get clicks by body location
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/clicks/location
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get clicks by body location
- info:
    name: Emailclients
    type: folder
  items:
  - info:
      name: Postmark Get email client usage
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/stats/outbound/opens/emailclients
      params:
      - name: tag
        value: <string>
        type: query
        description: Filter by tag
      - name: fromdate
        value: <string>
        type: query
        description: Filter messages starting from the date specified. e.g. `2014-02-01`
      - name: todate
        value: <string>
        type: query
        description: Filter messages up to the date specified. e.g. `2014-02-01`
    docs: Postmark Get email client usage
- info:
    name: Templates
    type: folder
  items:
  - info:
      name: Postmark Get the Templates associated with this Server
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/templates
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
    docs: Postmark Get the Templates associated with this Server
  - info:
      name: Postmark Test Template Content
      type: http
    http:
      method: POST
      url: http://{{baseurl}}/templates/validate
    docs: Postmark Test Template Content
- info:
    name: Alias
    type: folder
  items:
  - info:
      name: Postmark Delete a Template
      type: http
    http:
      method: DELETE
      url: http://{{baseurl}}/templates/:templateIdOrAlias
      params:
      - name: templateIdOrAlias
        value: <string>
        type: path
        description: The 'TemplateID' or 'Alias' value for the Template you wish to delete.
    docs: Postmark Delete a Template
- info:
    name: Triggers
    type: folder
  items:
  - info:
      name: Postmark List inbound rule triggers
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/triggers/inboundrules
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
    docs: Postmark List inbound rule triggers
  - info:
      name: Postmark Search triggers
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/triggers/tags
      params:
      - name: count
        value: <integer>
        type: query
        description: Number of bounces to return per request. Max 500.
      - name: offset
        value: <integer>
        type: query
        description: Number of bounces to skip.
      - name: match_name
        value: <string>
        type: query
        description: Filter by delivery tag
    docs: Postmark Search triggers
  - info:
      name: Postmark Delete a single trigger
      type: http
    http:
      method: DELETE
      url: http://{{baseurl}}/triggers/tags/:triggerid
      params:
      - name: triggerid
        value: <integer>
        type: path
        description: The ID of the Inbound Rule that should be deleted.
    docs: Postmark Delete a single trigger
- info:
    name: Triggerid
    type: folder
  items:
  - info:
      name: Postmark Delete a single trigger
      type: http
    http:
      method: DELETE
      url: http://{{baseurl}}/triggers/inboundrules/:triggerid
      params:
      - name: triggerid
        value: <integer>
        type: path
        description: The ID of the Inbound Rule that should be deleted.
    docs: Postmark Delete a single trigger
- info:
    name: Servers
    type: folder
  items:
  - info:
      name: Postmark Get Server Configuration
      type: http
    http:
      method: GET
      url: http://{{baseurl}}/server
    docs: Postmark Get Server Configuration
bundled: true