OpenAPI Specification
openapi: 3.1.0
info:
title: Litmus Email Analytics Tests 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: Tests
description: Email test creation and management
paths:
/tests:
get:
operationId: listTests
summary: Litmus List tests
description: Returns a paginated list of all email tests run under the authenticated account. Each test entry includes the test type, creation timestamp, current status, and a link to the full test results.
tags:
- Tests
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
responses:
'200':
description: Paginated list of tests
content:
application/json:
schema:
$ref: '#/components/schemas/TestList'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
operationId: createTest
summary: Litmus Create a test
description: Creates a new email test by submitting email HTML, subject, and optional sender details. The test type (preview, spam, links) determines which checks are run. Returns the newly created test object with an ID for polling results.
tags:
- Tests
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTestRequest'
responses:
'201':
description: Test created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Test'
'400':
description: Invalid request body
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/tests/{testId}:
get:
operationId: getTest
summary: Litmus Get a test
description: Retrieves a specific email test by its numeric ID. Returns the test status and all available results. Poll this endpoint until the test status transitions to complete for all requested test types.
tags:
- Tests
parameters:
- $ref: '#/components/parameters/testIdParam'
responses:
'200':
description: Test retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Test'
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Test not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
operationId: deleteTest
summary: Litmus Delete a test
description: Permanently deletes an email test and all associated results from the Litmus account. This action cannot be undone.
tags:
- Tests
parameters:
- $ref: '#/components/parameters/testIdParam'
responses:
'204':
description: Test deleted successfully
'401':
description: Invalid credentials
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Test not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
parameters:
perPageParam:
name: per_page
in: query
description: Number of results per page
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 25
pageParam:
name: page
in: query
description: Page number for paginated results (1-based)
required: false
schema:
type: integer
minimum: 1
default: 1
testIdParam:
name: testId
in: path
description: Numeric identifier of the email test
required: true
schema:
type: integer
example: 12345678
schemas:
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
TestList:
type: object
description: Paginated list of email tests
properties:
tests:
type: array
description: Array of test summaries
items:
$ref: '#/components/schemas/Test'
total:
type: integer
description: Total number of tests in the account
example: 128
page:
type: integer
description: Current page number
example: 1
per_page:
type: integer
description: Number of tests per page
example: 25
CreateTestRequest:
type: object
description: Request body for creating an email test
required:
- html
properties:
html:
type: string
description: Full HTML source of the email to be tested
plain_text:
type: string
description: Optional plain text alternative of the email
subject:
type: string
description: Email subject line
maxLength: 998
from_address:
type: string
format: email
description: Sender email address used for spam filter testing
example: sender@example.com
from_name:
type: string
description: Sender display name used in spam filter context
example: My Company
clients:
type: array
description: Email client slugs to include in preview rendering
items:
type: string
example:
- GMAIL
- OL2019
run_spam_filter_tests:
type: boolean
description: Whether to run spam filter tests on the submitted email
default: false
run_link_check_tests:
type: boolean
description: Whether to run link reachability checks on URLs in the email HTML
default: false
Test:
type: object
description: An email test with status and result references
properties:
id:
type: integer
description: Unique numeric identifier for the test
example: 12345678
status:
type: string
description: Overall status of the test
enum:
- pending
- processing
- complete
- failed
example: complete
created_at:
type: string
format: date-time
description: Timestamp when the test was created
completed_at:
type: string
format: date-time
description: Timestamp when the test completed
subject:
type: string
description: Email subject that was tested
example: Welcome to Our Newsletter
from_address:
type: string
format: email
description: Sender address used in the test
example: sender@example.com
previews_requested:
type: boolean
description: Whether email client preview rendering was requested
spam_requested:
type: boolean
description: Whether spam filter testing was requested
links_requested:
type: boolean
description: Whether link checking was requested
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