Postscript · Authentication Profile

Postscript Authentication

Authentication

Postscript secures its APIs with apiKey across 2 declared security schemes, as derived from its OpenAPI definitions.

SMSMarketingMessagingE-CommerceShopifyRCSSubscribersWebhookCompliance
Methods: apiKey Schemes: 2 OAuth flows: API key in: header

Security Schemes

sec0 apiKey
· in: header (Authorization)
X-Postscript-Shop-Token apiKey
· in: header (X-Postscript-Shop-Token)

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: https://developers.postscript.io/docs/api-authentication
docs: https://developers.postscript.io/docs/api-authentication
spec_source: openapi/_original/postscript-partner-api-openapi.yml
provider: Postscript
api: Postscript Partner API v2
summary:
  types:
  - apiKey
  api_key_in:
  - header
  oauth2_flows: []
  oauth: false
  note: >-
    Static private API keys only. Postscript operates no OAuth or OpenID Connect surface — every
    /.well-known/openid-configuration and /.well-known/oauth-authorization-server probe returned 404
    (postscript.io, developers.postscript.io, app.postscript.io) or 401 (api.postscript.io) on
    2026-08-13, and no authorization or token endpoint appears anywhere in the documentation. There
    is therefore no scope model and no scopes/ artifact for this provider.
schemes:
- name: sec0
  type: apiKey
  in: header
  parameter: Authorization
  format: 'Bearer <private_api_key>'
  description: >-
    The private API key of the calling identity, sent as a bearer token. Declared as an apiKey scheme
    with x-bearer-format bearer in Postscript's own published OpenAPI fragments rather than as an
    http/bearer scheme.
  sources:
  - openapi/postscript-compliance-api-openapi.yml
  - openapi/postscript-events-api-openapi.yml
  - openapi/postscript-identity-api-openapi.yml
  - openapi/postscript-keywords-api-openapi.yml
  - openapi/postscript-messages-api-openapi.yml
  - openapi/postscript-subscribers-api-openapi.yml
  - openapi/postscript-webhooks-api-openapi.yml
- name: X-Postscript-Shop-Token
  type: apiKey
  in: header
  parameter: X-Postscript-Shop-Token
  description: >-
    Delegation header. A partner acting on behalf of a Shopify shop sends its own partner key in
    Authorization and that shop's private key here. Shops calling for themselves omit it. It is
    declared as an operation-level header parameter on all twenty published operations rather than as
    a securityScheme, so a generic OpenAPI-driven client will not treat it as credential material.
  required_for: partners
  sources:
  - openapi/_original/postscript-partner-api-openapi.yml
identities:
- role: shop
  key_type: private API key
  key_prefix: sk_
  obtained_from: https://app.postscript.io/account/api
  note: >-
    Shops generate a Security Key Pair in the Postscript dashboard. The PUBLIC key (pk_ prefix) is
    not valid for API authorization — only the private key is.
- role: partner
  key_type: private partner API key
  key_prefix: sk_partner_
  obtained_from: https://dash.partnerstack.com/application?company=postscript&group=partnerpending
  note: >-
    Partner keys are issued by the Postscript team through the partner application, not self-serve.
    Trigger management needs the partner key alone; anything acting on a shop's data also needs that
    shop's key in X-Postscript-Shop-Token.
legacy:
  scheme: http basic
  supported: true
  format: 'Authorization: Basic base64(<private_api_key>:)'
  note: Username is the private API key, password is empty. Still supported alongside bearer.
verification_endpoint:
  operation: verify-identity
  path: GET /api/v2/me
  description: Returns the identity a token resolves to, letting a caller confirm which shop or partner it is acting as.
key_management:
  rotation: Shops can regenerate their Security Key Pair from the dashboard.
  revocation_note: >-
    Rotating a shop's keys used to invalidate v1 object identifiers, which is why v2 introduced
    prefixed ids decoupled from the key pair.
  expiry: none published
  scopes: none
security_guidance:
  from_provider: >-
    Postscript explicitly warns against calling the API from a browser/front-end because the private
    key cannot be hidden there, and recommends proxying through your own backend or an intermediary
    such as Zapier.
  transport: HTTPS only; api.postscript.io answered TLS 1.3 on probe, with no HSTS header set.
access_gating:
  note: >-
    Since April 2022, custom API access for an individual shop requires an enterprise plan (shops
    with access before that date are grandfathered). Shops on any plan may still generate keys for
    use with approved Integration Partners, and Integration Partners keep full API access regardless
    of the shop's plan.
  source: https://developers.postscript.io/docs/who-has-access-to-the-partner-api

Work with this as data

Every security artifact here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for security posture

4 MCP tools reach this
  • find_securityBrowse and filter every security artifact in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This security artifact
curl "https://apis.io/api/v1/security/postscript-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.