Listrak · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Listrak

8 actions 8 updates update extends openapi/listrak-contact-api-openapi.yml
Derived by API Evangelist Built from the contracts Listrak publishes. Listrak did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-profilex-apievangelist-reviewedOAuth2x-error-envelopex-idempotencyx-paginationx-rate-limitsx-versioning

Targets 2

$.info
$.components.securitySchemes

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Listrak
  version: 1.0.0
x-generated: '2026-08-13'
x-method: generated
x-source: >-
  Derived from Listrak's own published documentation (the prose embedded in each spec's
  info.description) and from openapi/_original/*.json. Nothing here invents behaviour - every value
  restates something Listrak publishes, in a machine-readable place.
x-extends-note: >-
  This overlay applies to the refined per-resource specs in openapi/. It exists because the tag-split
  refinement of Listrak's Email/SMS/Data/Privacy Swagger 2.0 documents kept only the AWS API Gateway
  `Authorizer` apiKey declaration and dropped the real OAuth 2.0 clientCredentials scheme, its token
  URL and its scope map. Applying this overlay restores the auth contract Listrak actually documents
  and adds the rate-limit, error-envelope and idempotency facts that live only in prose. The
  harvested originals in openapi/_original/ are never mutated.
extends: openapi/listrak-contact-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-profile: https://apis.io/provider/listrak
    x-apievangelist-reviewed: '2026-08-13'
- target: $.components.securitySchemes
  update:
    OAuth2:
      type: oauth2
      description: >-
        OAuth 2.0 client_credentials. POST grant_type=client_credentials, client_id and
        client_secret as application/x-www-form-urlencoded to the token endpoint, then send the
        result as `Authorization: Bearer <token>`. Credentials are issued per Integration in the
        Listrak application and the client secret cannot be recovered once lost.
      flows:
        clientCredentials:
          tokenUrl: https://auth.listrak.com/OAuth2/Token
          scopes:
            Contact: Read, create, update, subscribe and unsubscribe contacts on a list.
            Event: Contact events used to drive triggered and behavioral sends.
            List: Lists, folders, IP pools, imports and resources nested under a list.
            Message: Messages, saved messages, content, campaigns, split tests and sends.
            Report: Message activity, link clickers and summary reporting reads.
            Segmentation: Profile (segmentation) fields, field groups and field values.
            Customer: Import retail customer records (Data Import API).
            Order: Import retail order records (Data Import API).
            Product: Import retail product catalog records (Data Import API).
            Review: Import product reviews and rating summaries (Data Import API).
- target: $.info
  update:
    x-error-envelope:
      media_type: application/json
      rfc9457: false
      fields: [status, error, message]
      code_field: error
      registry: errors/listrak-error-codes.yml
      example: '{"status":401,"error":"ERROR_UNAUTHORIZED","message":"Authorization was denied for this request."}'
- target: $.info
  update:
    x-idempotency:
      supported: false
      header: null
      note: >-
        Listrak documents no idempotency key and no retry-dedup contract on any of its eight REST
        APIs. A retried send is a second message. The Data Import collection POSTs are re-runnable
        only because they upsert on merchant-owned natural keys.
- target: $.info
  update:
    x-pagination:
      style: cursor
      request:
        cursor: {default: Start}
        count: {default: 1000, maximum: 5000}
      response:
        next: nextPageCursor
      note: The Media REST API instead uses page-number pagination with pageNumber/pageSize/totalCount.
- target: $.info
  update:
    x-rate-limits:
      published_for: [Privacy REST API]
      privacy:
      - {limit: 20, window: 10 seconds}
      - {limit: 60, window: 1 minute}
      status_on_exhaustion: 429
      response_headers: []
      retry_after: false
      note: >-
        Only the Privacy REST API publishes numbers. Mobile App Push and Two-Way SMS declare 429
        without a threshold. No Listrak API emits a rate-limit response header, so clients must use
        blind exponential backoff.
- target: $.info
  update:
    x-versioning:
      scheme: uri-path
      current: v1
      breaking_change_policy_published: true
      deprecation_policy_published: false
      sunset_header: false
- target: $.info
  update:
    x-agent-surface:
      mcp_server: false
      agent_card: false
      asyncapi: false
      webhooks: 1
      webhook_signature_verification: false
      engagement_events: poll-only
      note: >-
        Email and SMS engagement (opens, clicks, bounces, unsubscribes) has no webhook and must be
        polled from the reporting operations. This is the largest agent-readiness gap in the surface.

Work with this as data

Every overlay 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 openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay 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 overlay
curl "https://apis.io/api/v1/overlays/listrak-security-and-semantics-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.