Litmus Analytics API

Campaign engagement metrics and breakdowns

OpenAPI Specification

litmus-analytics-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Litmus Email Analytics API
  description: The Litmus Email Analytics API provides REST endpoints for retrieving email campaign engagement metrics including read rates, deletion rates, device types, email clients, geographic data, and forwarding activity. Campaign data is accessed by GUID and returns detailed activity summary reports. Analytics data is collected via a tracking pixel embedded in sent emails and the API surfaces aggregated engagement breakdowns.
  version: 1.0.0
  contact:
    name: Litmus Support
    url: https://www.litmus.com/support/
  termsOfService: https://www.litmus.com/terms-of-service/
servers:
- url: https://analytics-api.litmus.com/api/v1
  description: Litmus Email Analytics API Production Server
security:
- basicAuth: []
tags:
- name: Analytics
  description: Campaign engagement metrics and breakdowns
paths:
  /campaigns/{campaignGuid}/summary:
    get:
      operationId: getCampaignSummary
      summary: Litmus Get campaign engagement summary
      description: Returns a high-level engagement summary for the campaign including total opens, unique opens, read time distribution, deletion rate, forwarding count, and print count. Provides the core metrics for evaluating campaign performance.
      tags:
      - Analytics
      parameters:
      - $ref: '#/components/parameters/campaignGuidParam'
      responses:
        '200':
          description: Campaign engagement summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignSummary'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /campaigns/{campaignGuid}/clients:
    get:
      operationId: getCampaignClientBreakdown
      summary: Litmus Get campaign email client breakdown
      description: Returns a breakdown of campaign opens by email client, showing the count and percentage of opens recorded from each detected email client such as Gmail, Apple Mail, Outlook, and others.
      tags:
      - Analytics
      parameters:
      - $ref: '#/components/parameters/campaignGuidParam'
      responses:
        '200':
          description: Email client breakdown for the campaign
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientBreakdownEntry'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /campaigns/{campaignGuid}/geo:
    get:
      operationId: getCampaignGeoBreakdown
      summary: Litmus Get campaign geographic breakdown
      description: Returns a geographic breakdown of campaign opens by country and region. Each entry includes the country name, ISO country code, open count, and percentage share of total opens.
      tags:
      - Analytics
      parameters:
      - $ref: '#/components/parameters/campaignGuidParam'
      responses:
        '200':
          description: Geographic breakdown of campaign opens
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/GeoBreakdownEntry'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /campaigns/{campaignGuid}/devices:
    get:
      operationId: getCampaignDeviceBreakdown
      summary: Litmus Get campaign device breakdown
      description: Returns a breakdown of campaign opens by device type including desktop, mobile, and tablet. Shows the count and percentage of opens for each device category.
      tags:
      - Analytics
      parameters:
      - $ref: '#/components/parameters/campaignGuidParam'
      responses:
        '200':
          description: Device type breakdown of campaign opens
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeviceBreakdownEntry'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /campaigns/{campaignGuid}/read-times:
    get:
      operationId: getCampaignReadTimes
      summary: Litmus Get campaign read time distribution
      description: Returns the distribution of how long recipients spent reading the email. Categorizes reads into glanced (under 2 seconds), skimmed (2-8 seconds), and read (over 8 seconds) buckets with counts and percentages.
      tags:
      - Analytics
      parameters:
      - $ref: '#/components/parameters/campaignGuidParam'
      responses:
        '200':
          description: Read time distribution for the campaign
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReadTimeDistribution'
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    GeoBreakdownEntry:
      type: object
      description: Campaign opens attributed to a single country
      properties:
        country:
          type: string
          description: Country name
          example: United States
        country_code:
          type: string
          description: ISO 3166-1 alpha-2 country code
          pattern: ^[A-Z]{2}$
          example: US
        opens:
          type: integer
          description: Number of opens from this country
          example: 2841
        percentage:
          type: number
          format: float
          description: Percentage of total opens from this country
          minimum: 0
          maximum: 100
          example: 58.8
    CampaignSummary:
      type: object
      description: High-level engagement metrics for an email campaign
      properties:
        total_opens:
          type: integer
          description: Total number of opens recorded
          example: 4832
        unique_opens:
          type: integer
          description: Number of unique recipients who opened the email
          example: 3201
        forwards:
          type: integer
          description: Number of times the email was forwarded
          example: 47
        prints:
          type: integer
          description: Number of times the email was printed
          example: 12
        read_rate:
          type: number
          format: float
          description: Percentage of opens where recipients read the email for over 8 seconds
          minimum: 0
          maximum: 100
          example: 42.5
        skim_rate:
          type: number
          format: float
          description: Percentage of opens where recipients skimmed (2-8 seconds)
          minimum: 0
          maximum: 100
          example: 31.2
        glance_rate:
          type: number
          format: float
          description: Percentage of opens where recipients glanced (under 2 seconds)
          minimum: 0
          maximum: 100
          example: 26.3
        delete_rate:
          type: number
          format: float
          description: Percentage of opens followed by deletion
          minimum: 0
          maximum: 100
          example: 18.7
    ReadTimeDistribution:
      type: object
      description: Distribution of recipient read times for a campaign
      properties:
        glanced:
          $ref: '#/components/schemas/ReadTimeBucket'
        skimmed:
          $ref: '#/components/schemas/ReadTimeBucket'
        read:
          $ref: '#/components/schemas/ReadTimeBucket'
    Error:
      type: object
      description: An API error response
      required:
      - message
      properties:
        message:
          type: string
          description: Human-readable error message
          example: Authentication required
        code:
          type: string
          description: Machine-readable error code
          example: unauthorized
    ReadTimeBucket:
      type: object
      description: A read time engagement bucket with count and percentage
      properties:
        label:
          type: string
          description: Human-readable label for the bucket
          example: Read
        seconds_range:
          type: string
          description: Description of the time range this bucket covers
          example: '>8 seconds'
        count:
          type: integer
          description: Number of opens falling in this bucket
          example: 2054
        percentage:
          type: number
          format: float
          description: Percentage of total opens falling in this bucket
          minimum: 0
          maximum: 100
          example: 42.5
    ClientBreakdownEntry:
      type: object
      description: Campaign opens attributed to a single email client
      properties:
        client:
          type: string
          description: Name of the email client
          example: Gmail
        opens:
          type: integer
          description: Number of opens from this email client
          example: 1842
        percentage:
          type: number
          format: float
          description: Percentage of total opens from this email client
          minimum: 0
          maximum: 100
          example: 38.1
    DeviceBreakdownEntry:
      type: object
      description: Campaign opens attributed to a device category
      properties:
        device_type:
          type: string
          description: Device category
          enum:
          - desktop
          - mobile
          - tablet
          - unknown
          example: mobile
        opens:
          type: integer
          description: Number of opens from this device type
          example: 2156
        percentage:
          type: number
          format: float
          description: Percentage of total opens from this device type
          minimum: 0
          maximum: 100
          example: 44.6
  parameters:
    campaignGuidParam:
      name: campaignGuid
      in: path
      description: Unique identifier (GUID) for the email campaign
      required: true
      schema:
        type: string
        format: uuid
        example: 550e8400-e29b-41d4-a716-446655440000
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Auth using Litmus account username and password
externalDocs:
  description: Litmus Email Analytics API Documentation
  url: https://docs.litmus.com/email-analytics