Listrak Message API

The Message API from Listrak — 2 operation(s) for message.

Operations 3

GET /v1/List/{listId}/Message Get all Messages #
POST /v1/List/{listId}/Message Send a Message #
GET /v1/List/{listId}/Message/{messageId} Get a Message #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/listrak-message-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no email required.

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

OpenAPI Specification

listrak-message-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Listrak Message API
  version: v1
  x-logo:
    url: /Email/Resources/Images/Logo.png
  description: 'Operations tagged Message across 2 of this provider''s published API definitions: listrak-email-openapi.json, listrak-email-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.listrak.com/email
tags:
- name: Message
  description: "The Message resource provides a way to send and retrieve messages for a list.\n\n## Filters\n\nFilters can be used to select contacts based on their profile data. They may be supplied when sending a message via the `Filter` field.\n\nFilters may be combined and nested in nearly limitless combinations. A filter is considered valid if it either defines profile data to filter on, or if it defines one or more inner filters. It is not valid to do neither or both. If a filter is defining inner filters, its `Filters` field should be set to an array of one or more filters. Otherwise, it should specify a `CompareType`, a `SegmentationFieldGroup`, a `SegmentationField`, and if applicable, one or more `Values` to apply to filtering logic.\n\nWhen defining multiple filters in a set, the second and subsequent filters must define how they should be joined to the preceding filter. This is specified using the `JoinType` field. Valid values are `And`, `AndNot`, `Or`, and `OrNot`. It is not necessary to specify a `JoinType` for the first (or only) filter in a set, because there is no other filter to join with.\n\nFiltering logic is determined by the `CompareType` field. Below is a table of supported values, a brief description of each, and the number of values required for operation:\n\n| CompareType | Description | Number of values required |\n|-|-|-|\n| `Between` | The field is between the range of the two specified values (inclusive). | 2 |\n| `NotBetween` | The field is not between the range of the two specified values (inclusive). | 2 |\n| `Contains` | The field contains the specified value. | 1 |\n| `NotContains` | The field does not contain the specified value. | 1 |\n| `Equals` | The field equals the specified value (case insensitive). | 1 |\n| `NotEquals` | The field does not equal the specified value (case insensitive). | 1 |\n| `GreaterThan` | The field is greater the specified value. | 1 |\n| `GreaterThanOrEqualTo` | The field is greater than or equal to the specified value. | 1 |\n| `LessThan` | The field is less than the specified value. | 1 |\n| `LessThanOrEqualTo` | The field is less than or equal to the specified value. | 1 |\n| `InCommaList` | The field is one of the specified values in a comma-separated list. | 1 |\n| `NotInCommaList` | The field is not one of the specified values in a comma-separated list. | 1 |\n| `Checked` | The checkbox field is checked. | 0 |\n| `NotChecked` | The checkbox field is not checked. | 0 |\n| `RadioOn` | The radio button is selected. | 0 |\n| `RadioOff` | The radio button is not selected. | 0 |\n| `IsEmpty` | The field is null or empty. | 0 |\n| `IsNotEmpty` | The field is not null or empty. | 0 |\n\nCommon use cases are documented below. The examples assume the following profile configuration:\n\n| Profile field group | Profile field | Value type |\n|-|-|-|\n| Favorites | Color | _Text_ |\n| Favorites | Number | _Numeric_ |\n| Favorites | Movie | _Text_ |\n\nTo select contacts whose favorite color is green:\n\n```\n\"filter\": {\n  \"segmentationFieldGroup\": \"Favorites\",\n  \"segmentationField\": \"Color\",\n  \"compareType\": \"Equals\",\n  \"values\": [\n    {\n      \"value\": \"Green\"\n    }\n  ]\n}\n```\n\nTo select contacts whose favorite color is green _and_ whose favorite number is between 10 and 20:\n\n```\n\"filter\": {\n  filters: [\n    {\n      \"compareType\": \"Equals\",\n      \"segmentationFieldGroup\": \"Favorites\",\n      \"segmentationField\": \"Color\",\n      \"values\": [\n        {\n          \"value\": \"Green\"\n        }\n      ]\n    },\n    {\n      \"compareType\": \"Between\",\n      \"joinType\": \"And\",\n      \"segmentationFieldGroup\": \"Favorites\",\n      \"segmentationField\": \"Number\",\n      \"values\": [\n        {\n          \"value\": \"10\"\n        },\n        {\n          \"value\": \"20\"\n        }\n      ]\n    }\n  ]\n}\n```\n\nTo select contacts whose favorite color is red _or_ whose favorite number is 13:\n\n```\n\"filter\": {\n  filters: [\n    {\n      \"compareType\": \"Equals\",\n      \"segmentationFieldGroup\": \"Favorites\",\n      \"segmentationField\": \"Color\",\n      \"values\": [\n        {\n          \"value\": \"Red\"\n        }\n      ]\n    },\n    {\n      \"compareType\": \"Equals\",\n      \"joinType\": \"Or\",\n      \"segmentationFieldGroup\": \"Favorites\",\n      \"segmentationField\": \"Number\",\n      \"values\": [\n        {\n          \"value\": \"13\"\n        }\n      ]\n    }\n  ]\n}\n```\n\nTo select contacts whose favorite color is green, and additionally either has a favorite number of 13, or otherwise has a favorite movie containing the term `adventures`:\n\n```\n\"filter\": {\n  filters: [\n    {\n      \"compareType\": \"Equals\",\n      \"segmentationFieldGroup\": \"Favorites\",\n      \"segmentationField\": \"Color\",\n      \"values\": [\n        {\n          \"value\": \"Green\"\n        }\n      ]\n    },\n    {\n      \"joinType\": \"And\"\n      \"filters\": [\n        {\n          \"compareType\": \"Equals\",\n          \"segmentationFieldGroup\": \"Favorites\",\n          \"segmentationField\": \"Number\",\n          \"values\": [\n            {\n              \"value\": \"13\"\n            }\n          ]\n        },\n        {\n          \"compareType\": \"Contains\",\n          \"joinType\": \"Or\"\n          \"segmentationFieldGroup\": \"Favorites\",\n          \"segmentationField\": \"Movie\",\n          \"values\": [\n            {\n              \"value\": \"adventures\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n```\n\nTo select contacts whose favorite color is either black, white, or gold:\n\n```\n\"filter\": {\n  filters: [\n    {\n      \"compareType\": \"InCommaList\",\n      \"segmentationFieldGroup\": \"Favorites\",\n      \"segmentationField\": \"Color\",\n      \"values\": [\n        {\n          \"value\": \"Black,White,Gold\"\n        }\n      ]\n    }\n  ]\n}\n```\n\nTo select contacts who do not have a favorite color:\n\n```\n\"filter\": {\n  filters: [\n    {\n      \"compareType\": \"Empty\",\n      \"segmentationFieldGroup\": \"Favorites\",\n      \"segmentationField\": \"Color\"\n    }\n  ]\n}\n```\n"
paths:
  /v1/List/{listId}/Message:
    get:
      tags:
      - Message
      summary: Get all Messages
      description: Returns a collection of messages for the specified list.
      operationId: Message_GetMessageCollection
      parameters:
      - name: listId
        in: path
        description: Identifier used to locate the list.
        required: true
        schema:
          type: integer
          format: int32
      - name: cursor
        in: query
        description: Value indicating the page of data that's being retrieved. The default value is `Start`.
        required: false
        schema:
          type: string
      - name: count
        in: query
        description: Number of data members to be displayed per page. The default value is `1000` and the maximum value is `5000`.
        required: false
        schema:
          type: string
      - name: startDate
        in: query
        description: The start of the date range used for filtering.
        required: false
        schema:
          type: string
      - name: endDate
        in: query
        description: The end of the date range used for filtering.
        required: false
        schema:
          type: string
      - name: includeTestMessages
        in: query
        description: Whether test messages should be included in the collection. The default value is `false`.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionPaged_Message'
              example:
                status: 200
                nextPageCursor: null
                data:
                - messageId: 0
                  sendDate: null
                  messageStatus: null
                  campaignId: 0
                  externalCampaignId: null
                  subject: null
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 400
                error: ERROR_INVALID_PARAMETER
                message: An invalid value was supplied for {Parameter}.
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 404
                error: ERROR_UNABLE_TO_LOCATE_RESOURCE
                message: Unable to locate a resource associated with the listId supplied.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 401
                error: ERROR_UNAUTHORIZED
                message: Authorization was denied for this request.
      security:
      - OAuth 2:
        - List
        - Message
      x-code-samples:
      - lang: C#
        source: 'var client = new HttpClient();


          client.BaseAddress = new Uri("https://api.listrak.com/email/");

          client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);


          var response = await client.GetAsync("v1/List/{listId}/Message");

          '
      - lang: PHP
        source: "$client = new \\GuzzleHttp\\Client([\n\t'base_uri' => 'https://api.listrak.com/email/'\n]);\n\n$res = $client->request('GET', 'v1/List/{listId}/Message',  [\n\t'headers' => ['Authorization' => 'Bearer ' . $accessToken]\n]);\n"
    post:
      tags:
      - Message
      summary: Send a Message
      description: Sends a new message on the specified list.
      operationId: Message_PostMessageResource
      parameters:
      - name: listId
        in: path
        description: Identifier used to locate the list.
        required: true
        schema:
          type: integer
          format: int32
      - name: sendDate
        in: query
        description: The send date for the message.
        required: false
        schema:
          type: string
          format: date-time
      - name: sendTestMessage
        in: query
        description: Whether a test message should be sent. The default value is `false`.
        required: false
        schema:
          type: boolean
      - name: sendReviewMessage
        in: query
        description: Whether a review message should be sent. The default value is `false`.
        required: false
        schema:
          type: boolean
      - name: testEmailAddress
        in: query
        description: Test email address that will be used to preview the scheduled message.
        required: false
        schema:
          type: string
      responses:
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 400
                error: ERROR_INVALID_PARAMETER
                message: An invalid value was supplied for {Parameter}.
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceCreated'
              example:
                status: 201
                resourceId: '{ResourceId}'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 401
                error: ERROR_UNAUTHORIZED
                message: Authorization was denied for this request.
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 404
                error: ERROR_UNABLE_TO_LOCATE_RESOURCE
                message: Unable to locate a resource associated with the listId supplied.
      security:
      - OAuth 2:
        - List
        - Message
      x-code-samples:
      - lang: C#
        source: "var client = new HttpClient();\n\nclient.BaseAddress = new Uri(\"https://api.listrak.com/email/\");\nclient.DefaultRequestHeaders.Add(\"Authorization\", \"Bearer \" + token);\n\nvar response = await client.PostAsJsonAsync(\"v1/List/{listId}/Message?sendDate={sendDate}&sendTestMessage={sendTestMessage}&sendReviewMessage={sendReviewMessage}&testEmailAddress={testEmailAddress}\", new\n{\n   Filter = null,\n   BodyHtml = null,\n   BodyText = null,\n   CodePage = 0,\n   EnablePassalong = false,\n   EnableTracking = false,\n   FromEmail = null,\n   FromName = null,\n   GoogleAnalyticsCampaignName = null,\n   GoogleAnalyticsCampaignContent = null,\n   ReplyEmail = null,\n   ToName = null,\n   EnableUniversalEmailKeySetting = false,\n   CampaignId = 0,\n   ExternalCampaignId = null,\n   Subject = null\n});\n"
      - lang: PHP
        source: "$client = new \\GuzzleHttp\\Client([\n\t'base_uri' => 'https://api.listrak.com/email/'\n]);\n\n$res = $client->request('POST', 'v1/List/{listId}/Message',  [\n\t'headers' => ['Authorization' => 'Bearer ' . $accessToken],\n\t'json' => $jsonBody\n]);\n"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MessageExtendedFilter'
        description: Representation of the message to be sent.
        required: true
    servers:
    - url: https://api.listrak.com/email
  /v1/List/{listId}/Message/{messageId}:
    get:
      tags:
      - Message
      summary: Get a Message
      description: Returns the specified message.
      operationId: Message_GetMessageResource
      parameters:
      - name: listId
        in: path
        description: Identifier used to locate the list.
        required: true
        schema:
          type: integer
          format: int32
      - name: messageId
        in: path
        description: Identifier used to locate the message.
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Resource_MessageExtendedSegmentsApplied'
              example:
                status: 200
                data:
                  messageId: 0
                  sendDate: null
                  messageStatus: null
                  enableUniversalEmailKeySetting: false
                  campaignId: 0
                  bodyHtml: null
                  bodyText: null
                  codePage: 0
                  enablePassalong: false
                  enableTracking: false
                  externalCampaignId: null
                  fromEmail: null
                  fromName: null
                  googleAnalyticsCampaignName: null
                  googleAnalyticsCampaignContent: null
                  replyEmail: null
                  savedAudienceId: 0
                  segmentsApplied: null
                  subject: null
                  toName: null
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 400
                error: ERROR_INVALID_PARAMETER
                message: An invalid value was supplied for {Parameter}.
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 404
                error: ERROR_UNABLE_TO_LOCATE_RESOURCE
                message: Unable to locate a resource associated with the listId and messageId supplied.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 401
                error: ERROR_UNAUTHORIZED
                message: Authorization was denied for this request.
      security:
      - OAuth 2:
        - List
        - Message
      x-code-samples:
      - lang: C#
        source: 'var client = new HttpClient();


          client.BaseAddress = new Uri("https://api.listrak.com/email/");

          client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);


          var response = await client.GetAsync("v1/List/{listId}/Message/{messageId}");

          '
      - lang: PHP
        source: "$client = new \\GuzzleHttp\\Client([\n\t'base_uri' => 'https://api.listrak.com/email/'\n]);\n\n$res = $client->request('GET', 'v1/List/{listId}/Message/{messageId}',  [\n\t'headers' => ['Authorization' => 'Bearer ' . $accessToken]\n]);\n"
    servers:
    - url: https://api.listrak.com/email
components:
  schemas:
    Message:
      description: A Message resource.
      required:
      - externalCampaignId
      - subject
      type: object
      properties:
        messageId:
          format: int32
          description: Identifier used to locate the message.
          type: integer
          readOnly: true
        sendDate:
          format: date-time
          description: Send date of the message.
          type: string
          readOnly: true
        messageStatus:
          description: Status displaying whether the message is sent or scheduled.
          type: string
          readOnly: true
        campaignId:
          format: int32
          description: Identifier of the campaign associated with the message.
          type: integer
        externalCampaignId:
          description: Customer-provided identifier of the campaign associated with the message.
          type: string
        subject:
          description: Subject of the message.
          type: string
    SegmentsApplied:
      description: Segments applied to the message.
      type: object
      properties:
        includedSegments:
          description: List of segments included in the recipient audience.
          type: array
          items:
            type: string
        excludedSegments:
          description: List of segments excluded from the recipient audience.
          type: array
          items:
            type: string
    MessageExtendedSegmentsApplied:
      required:
      - externalCampaignId
      - fromEmail
      - fromName
      - subject
      type: object
      properties:
        messageId:
          format: int32
          description: Identifier used to locate the message.
          type: integer
          readOnly: true
        sendDate:
          format: date-time
          description: Send date of the message.
          type: string
          readOnly: true
        messageStatus:
          description: Status displaying whether the message is sent or scheduled.
          type: string
          readOnly: true
        enableUniversalEmailKeySetting:
          description: Whether to include UniversalEmailKey in URL query string.
          type: boolean
        campaignId:
          format: int32
          description: Identifier of the campaign associated with the message.
          type: integer
        bodyHtml:
          description: HTML body that will be sent in the message.
          type: string
        bodyText:
          description: Text body that will be sent in the message.
          type: string
        codePage:
          format: int32
          description: Type of CodePage used in the message.
          type: integer
        enablePassalong:
          description: Whether passalong is enabled.
          type: boolean
        enableTracking:
          description: Whether tracking is enabled.
          type: boolean
        externalCampaignId:
          description: Customer-provided identifier of the campaign associated with the message.
          type: string
        fromEmail:
          description: The _from email address_ that will be used for the message.
          type: string
        fromName:
          description: The _from name_ that will be used for the message.
          type: string
        googleAnalyticsCampaignName:
          description: The Google Analytics campaign name to be used for message tracking.
          type: string
        googleAnalyticsCampaignContent:
          description: The Google Analytics campaign content to be used for message tracking.
          type: string
        replyEmail:
          description: The _reply email address_ that will be used for the message.
          type: string
        savedAudienceId:
          format: int32
          description: Identifier of the SavedAudience to use for recipient filtering.
          type: integer
        segmentsApplied:
          $ref: '#/components/schemas/SegmentsApplied'
          description: Segments applied to the message.
        subject:
          description: Subject of the message.
          type: string
        toName:
          description: The _to name_ that will be used for the message.
          type: string
    ResourceCreated:
      type: object
      properties:
        status:
          format: int32
          description: HTTP status code.
          type: integer
        resourceId:
          description: An identifier used to locate a resource.
          type: string
    Resource_MessageExtendedSegmentsApplied:
      type: object
      properties:
        status:
          format: int32
          description: HTTP status code.
          type: integer
        data:
          $ref: '#/components/schemas/MessageExtendedSegmentsApplied'
          description: Return data.
    FilterValue:
      type: object
      properties:
        value:
          description: Value to be used for filtering.
          type: string
    Filter:
      type: object
      properties:
        segmentationFieldGroup:
          description: The name of the profile field group to use for filtering.
          type: string
        segmentationField:
          description: The name of the profile field to use for filtering.
          type: string
        joinType:
          description: The mechanism by which this filter should be joined to the immediately preceding filter. Optional if it is the first filter (ignored if provided anyway).
          enum:
          - And
          - AndNot
          - Or
          - OrNot
          type: string
        compareType:
          description: The type of comparison to use filtering values with.
          enum:
          - Contains
          - NotContains
          - Equals
          - NotEquals
          - GreaterThan
          - GreaterThanOrEqualTo
          - LessThan
          - LessThanOrEqualTo
          - Between
          - NotBetween
          - Checked
          - NotChecked
          - RadioOn
          - RadioOff
          - InCommaList
          - NotInCommaList
          - IsEmpty
          - IsNotEmpty
          type: string
        values:
          description: Values to be used for filtering.
          type: array
          items:
            $ref: '#/components/schemas/FilterValue'
        filters:
          description: 'One or more sub-filters to apply. Cannot be specified in conjunction with the `CompareType` or `Values` fields: filters must define their own filtering behavior, or must define inner filters.'
          type: array
          items:
            $ref: '#/components/schemas/Filter'
    MessageExtendedFilter:
      required:
      - externalCampaignId
      - fromEmail
      - fromName
      - subject
      type: object
      properties:
        messageId:
          format: int32
          description: Identifier used to locate the message.
          type: integer
          readOnly: true
        sendDate:
          format: date-time
          description: Send date of the message.
          type: string
          readOnly: true
        messageStatus:
          description: Status displaying whether the message is sent or scheduled.
          type: string
          readOnly: true
        enableUniversalEmailKeySetting:
          description: Whether to include UniversalEmailKey in URL query string.
          type: boolean
        campaignId:
          format: int32
          description: Identifier of the campaign associated with the message.
          type: integer
        bodyHtml:
          description: HTML body that will be sent in the message.
          type: string
        bodyText:
          description: Text body that will be sent in the message.
          type: string
        codePage:
          format: int32
          description: Type of CodePage used in the message.
          type: integer
        enablePassalong:
          description: Whether passalong is enabled.
          type: boolean
        enableTracking:
          description: Whether tracking is enabled.
          type: boolean
        externalCampaignId:
          description: Customer-provided identifier of the campaign associated with the message.
          type: string
        fromEmail:
          description: The _from email address_ that will be used for the message.
          type: string
        fromName:
          description: The _from name_ that will be used for the message.
          type: string
        googleAnalyticsCampaignName:
          description: The Google Analytics campaign name to be used for message tracking.
          type: string
        googleAnalyticsCampaignContent:
          description: The Google Analytics campaign content to be used for message tracking.
          type: string
        replyEmail:
          description: The _reply email address_ that will be used for the message.
          type: string
        savedAudienceId:
          format: int32
          description: Identifier of the SavedAudience to use for recipient filtering.
          type: integer
        subject:
          description: Subject of the message.
          type: string
        toName:
          description: The _to name_ that will be used for the message.
          type: string
        filter:
          $ref: '#/components/schemas/Filter'
          description: Filter to be used for recipient filtering.
    CollectionPaged_Message:
      type: object
      properties:
        status:
          format: int32
          description: HTTP status code.
          type: integer
        nextPageCursor:
          description: URI of the next page of data.
          type: string
        data:
          description: Collection of data that exists on this paged view.
          type: array
          items:
            $ref: '#/components/schemas/Message'
    Error:
      type: object
      properties:
        status:
          format: int32
          description: HTTP status code.
          type: integer
        error:
          description: Error code indicating what error has occured.
          type: string
        message:
          description: Message describing the status and the error that occurred.
          type: string
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.listrak.com/OAuth2/Token
          scopes:
            Contact: Contact access
            Event: Event access
            List: List access
            Message: Message access
            Report: Report access
            Segmentation: Segmentation access
x-refined-from:
- listrak-email-openapi.json
- listrak-email-openapi.yml
x-amazon-apigateway-security-policy: TLS_1_0
x-tagGroups:
- name: API Reference
  tags:
  - Events
  - EventConfigurations