Postmark · Authentication Profile

Postmark Authentication

Authentication

Postmark authenticates every REST request with a static API token sent in a custom HTTP header. There is no OAuth 2.0, no OIDC, no mTLS and no scoped credential of any kind — a token grants everything at its level. Derived automatically from the OpenAPI first, but every spec in openapi/ declares an EMPTY components.securitySchemes, so the whole profile below is authored from Postmark's own authentication documentation.

Postmark declares 3 security scheme(s) across its OpenAPI definitions.

EmailsMessagingTransactional EmailDeliverabilitySMTPEmail APIWebhookInbound EmailEmail TemplatesEmail Analytics
Methods: Schemes: 3 OAuth flows: API key in:

Security Schemes

X-Postmark-Server-Token apiKey
· in: header ()
X-Postmark-Account-Token apiKey
· in: header ()
SMTP Token smtp-credential
· in: smtp-auth ()

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: https://postmarkapp.com/developer/api/overview#authentication
docs: https://postmarkapp.com/developer/api/overview#authentication
description: >-
  Postmark authenticates every REST request with a static API token sent in a
  custom HTTP header. There is no OAuth 2.0, no OIDC, no mTLS and no scoped
  credential of any kind — a token grants everything at its level. Derived
  automatically from the OpenAPI first, but every spec in openapi/ declares an
  EMPTY components.securitySchemes, so the whole profile below is authored from
  Postmark's own authentication documentation.
provider: Postmark
providerId: postmark
baseURL: https://api.postmarkapp.com
transport_security: >-
  TLS enforced. Postmark stopped accepting API requests over plain HTTP
  (announced 2022-09-01, https://postmarkapp.com/updates).

schemes:
  - id: serverToken
    type: apiKey
    in: header
    name: X-Postmark-Server-Token
    level: server
    description: >-
      Server-level privileges. Found on the API Tokens tab of a Postmark server.
      Accessible to Account Owners, Account Admins, and users with Server Admin
      privileges on that server.
    used_by:
      - Email (single, batch, template, bulk)
      - Bounces
      - Templates
      - Messages (outbound + inbound search and details)
      - Stats
      - Webhooks
      - Message Streams
      - Suppressions
      - Triggers / inbound rules
      - Current server configuration (GET/PUT /server)
    scopes: []

  - id: accountToken
    type: apiKey
    in: header
    name: X-Postmark-Account-Token
    level: account
    description: >-
      Account-level privileges. Found on the API Tokens tab of the Postmark
      account. Accessible to the Account Owner and Account Admins only.
    used_by:
      - Servers (list/create/edit/delete)
      - Domains
      - Sender signatures
      - Data removal requests
    scopes: []

  - id: smtpToken
    type: smtp-credential
    in: smtp-auth
    name: SMTP Token
    level: server
    description: >-
      Separate credential class for SMTP sending, introduced 2021-07-29 to
      support Broadcast Message Streams over SMTP. Not used by the REST API.
    used_by:
      - SMTP submission
    scopes: []

conventions:
  header_case_sensitivity: >-
    Postmark documents that both the header name and its value are case
    insensitive.
  missing_or_wrong_token: HTTP 401 Unauthorized
  bad_token_error_code: >-
    ErrorCode 10 — "Bad or missing API token" — returned in the 422 JSON error
    envelope when the token is present but not valid for the operation.
  test_token: >-
    POSTMARK_API_TEST is a published, documented sentinel value. Sending it in
    X-Postmark-Server-Token validates the request without delivering mail. It is
    a real published value, not a secret. See sandbox/postmark-sandbox.yml.

gaps:
  - >-
    No scoped or least-privilege credential exists. Postmark's own MCP server
    README states it plainly: "Neither supports sub-scoped permissions — a
    Server Token grants full access to all operations on the server it belongs
    to." The vendor's recommended mitigation is structural (dedicate a server to
    the integration), not a permissions model.
  - >-
    No documented token rotation or expiry policy. Tokens are long-lived and
    rotated manually from the UI.
  - >-
    Every OpenAPI file in openapi/ declares no securitySchemes and no security
    requirement, so a code generator reading the spec alone produces an
    unauthenticated client. overlays/ carries the repair.
  - >-
    IP allow-listing against Postmark's API was deprecated on 2023-07-18
    (https://postmarkapp.com/updates), removing a network-layer control that
    previously supplemented the static token.