Iterable Experiments API

Retrieve experiment configurations and metrics for A/B tests running across campaigns.

Operations 5

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/experiments/metrics Get email experiment metrics by date range · Get metrics for experiments #
Ask an LLM
“Can I export A/B test metrics for an experiment within a date range?”
“Does experiment metrics export support channels other than email?”
Tell an agent
Get metrics for experiment {experimentId} from {startDateTime} to {endDateTime}.
Show /api experiment metrics for campaign {campaignId}.
GET /api/experiments List experiments · List experiments #
Ask an LLM
“Which experiments are running for a given campaign?”
“Can I filter experiments by state and date and page through them?”
Tell an agent
List experiments for campaign {campaignId}.
List experiments in state {state}, {limit} at a time.
GET /api/experiments/{experimentId} Get one experiment · Get experiment #
Ask an LLM
“How do I look up a single A/B experiment by its ID?”
“What settings does an experiment record include?”
Tell an agent
Get experiment {experimentId}.
Show me the details of experiment {experimentId}.
GET /api/experiments/{experimentId}/variants List an experiment's variants · Get experiment variants #
Ask an LLM
“What variants are being tested in my experiment?”
“Can I see every variant of an A/B test?”
Tell an agent
List variants for experiment {experimentId}.
Show all test variants of experiment {experimentId}.
GET /experiments/metrics Get A/B test metrics for many experiments · Get experiment metrics #
Ask an LLM
“How many experiment and campaign IDs can I query for metrics at once?”
“Is there a simple /experiments/metrics endpoint for A/B results?”
Tell an agent
Get A/B metrics for experiments {experimentId} via /experiments/metrics.
Pull experiment results for campaigns {campaignId} from the simple metrics endpoint.

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/iterable:iterable-experiments-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 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.

OpenAPI Specification

iterable-experiments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Iterable Experiments API
  version: '1.0'
  description: 'Operations tagged experiments across 2 of this provider''s published API definitions: iterable-api-openapi.json, iterable-rest-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.iterable.com/
- url: https://api.iterable.com/api
  description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
  description: European Data Center (EDC)
tags:
- name: Experiments
paths:
  /api/experiments/metrics:
    get:
      description: Get metrics for a single experiment or for multiple experiments. Note that we currently only support exporting email experiment metrics.
      operationId: metrics
      parameters:
      - description: Experiment to export. Specify multiple experimentId query parameters to export multiple experiments.
        in: query
        name: experimentId
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: object
      - description: Campaign whose experiments you want to export. Specify multiple campaignId query parameters to export multiple campaigns.
        in: query
        name: campaignId
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: object
      - description: export starting from (>=)
        in: query
        name: startDateTime
        required: false
        schema:
          type: string
          format: date-time
          default: '2018-06-25'
      - description: export ending at (<=)
        in: query
        name: endDateTime
        required: false
        schema:
          type: string
          format: date-time
          default: '2018-07-25'
      responses:
        '200':
          description: successful operation
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ExperimentMetricsResponse'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
      summary: Get metrics for experiments
      tags:
      - Experiments
      security:
      - api_key: []
    servers:
    - url: https://api.iterable.com/
  /api/experiments:
    get:
      description: Get a list of experiments with optional filtering by campaign, state, and date range.
      operationId: list
      parameters:
      - description: Filter by campaign ID
        in: query
        name: campaignId
        required: false
        schema:
          type: integer
          format: int64
      - description: 'Filter by experiment state. Valid values: draft, ready, running, finished, winner_found'
        in: query
        name: state
        required: false
        schema:
          type: string
          enum:
          - draft
          - ready
          - running
          - finished
          - winner_found
      - description: Filter by start date (>=)
        in: query
        name: startDateTime
        required: false
        schema:
          type: string
          format: date-time
      - description: Filter by end date (<=)
        in: query
        name: endDateTime
        required: false
        schema:
          type: string
          format: date-time
      - description: 'Maximum number of results to return (default: 20, max: 100)'
        in: query
        name: limit
        required: false
        schema:
          type: integer
          format: int32
          default: 20
      - description: 'Number of results to skip (default: 0)'
        in: query
        name: offset
        required: false
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExperimentListResponse'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
      summary: List experiments
      tags:
      - Experiments
      security:
      - api_key: []
    servers:
    - url: https://api.iterable.com/
  /api/experiments/{experimentId}:
    get:
      description: Get a single experiment by ID.
      operationId: get
      parameters:
      - description: Experiment ID
        in: path
        name: experimentId
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExperimentResponse'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
        '404':
          description: Experiment not found
      summary: Get experiment
      tags:
      - Experiments
      security:
      - api_key: []
    servers:
    - url: https://api.iterable.com/
  /api/experiments/{experimentId}/variants:
    get:
      description: Get all variants for an experiment.
      operationId: variants
      parameters:
      - description: Experiment ID
        in: path
        name: experimentId
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExperimentVariantsResponse'
        '400':
          description: Invalid parameters
        '401':
          description: Invalid API key
        '404':
          description: Experiment not found
      summary: Get experiment variants
      tags:
      - Experiments
      security:
      - api_key: []
    servers:
    - url: https://api.iterable.com/
  /experiments/metrics:
    get:
      operationId: getExperimentMetrics
      summary: Get experiment metrics
      description: Retrieves experiment metrics for A/B tests. Supports multiple experiment IDs and campaign IDs as query parameters, up to 200 total.
      tags:
      - Experiments
      parameters:
      - name: experimentId
        in: query
        description: One or more experiment IDs
        schema:
          type: array
          items:
            type: integer
      - name: campaignId
        in: query
        description: One or more campaign IDs
        schema:
          type: array
          items:
            type: integer
      responses:
        '200':
          description: Experiment metrics as CSV
          content:
            text/csv:
              schema:
                type: string
        '401':
          description: Unauthorized
      security:
      - apiKeyAuth: []
    servers:
    - url: https://api.iterable.com/api
      description: US Data Center (USDC)
    - url: https://api.eu.iterable.com/api
      description: European Data Center (EDC)
components:
  schemas:
    ExperimentVariantValue:
      description: Typed variant value payload. Only present fields are serialized.
      properties:
        sendTime:
          description: Send time for send-time variants (ISO-8601 string)
          type: string
        stoGroup:
          description: STO group identifier for STO variants
          type: string
        templateId:
          description: Template ID for template-based variants
          format: int64
          type: integer
      type: object
    ExperimentVariantsResponse:
      description: Response for experiment variants with content
      properties:
        experimentId:
          description: Experiment ID
          format: int64
          type: integer
        variants:
          description: List of variants with content
          items:
            $ref: '#/components/schemas/VariantContentResponse'
          type: array
      required:
      - experimentId
      - variants
      type: object
    VariantContentResponse:
      description: Variant with content details
      properties:
        content:
          $ref: '#/components/schemas/TemplateContentResponse'
          description: Template content
        currentPercentage:
          description: Percentage of total audience distributed to this variant, allocated based on the type of experiment you're running.
          format: double
          type: number
        name:
          description: Variant name
          type: string
        value:
          $ref: '#/components/schemas/ExperimentVariantValue'
          description: Typed variant value object (e.g., templateId/sendTime/stoGroup)
        variantId:
          description: Variant ID
          format: int64
          type: integer
      required:
      - currentPercentage
      - name
      - value
      - variantId
      type: object
    TemplateContentResponse:
      description: Template content for a variant
      properties:
        htmlSource:
          description: HTML source of the template
          type: string
        plainText:
          description: Plain text version of the template
          type: string
        preheader:
          description: Email preheader text
          type: string
        subject:
          description: Email subject line
          type: string
      type: object
    ExperimentResponse:
      description: Full experiment details
      properties:
        allocationMode:
          description: Traffic allocation mode
          type: string
        channelType:
          description: Channel type for the experiment.
          type: string
          enum:
          - email
          - push
          - sms
          - in_app
          - web_push
        constraints:
          $ref: '#/components/schemas/ExperimentConstraints'
          description: Experiment constraints/targeting
        creationDate:
          description: Date the experiment was created
          format: date-time
          type: string
        experimentType:
          description: Experiment type
          type: string
        finishDate:
          description: End date of the experiment
          format: date-time
          type: string
        id:
          description: Experiment ID
          format: int64
          type: integer
        meta:
          $ref: '#/components/schemas/ExperimentMeta'
          description: Experiment metadata
        sizing:
          $ref: '#/components/schemas/ExperimentSizingResponse'
          description: Traffic allocation sizing details
        startDate:
          description: Start date of the experiment
          format: date-time
          type: string
        status:
          description: Experiment status
          type: string
          enum:
          - draft
          - ready
          - running
          - finished
          - winner_found
        variants:
          description: Experiment variants
          items:
            $ref: '#/components/schemas/ExperimentVariantSummary'
          type: array
      required:
      - allocationMode
      - channelType
      - experimentType
      - id
      - meta
      - sizing
      - status
      - variants
      type: object
    ExperimentConstraints:
      description: Experiment constraints/targeting
      properties:
        suppressionListIds:
          description: List IDs to suppress
          items:
            format: int64
            type: integer
          type: array
        targetSegment:
          description: Target segment description
          type: string
      type: object
    ExperimentListItem:
      description: Summary of an experiment for list responses
      properties:
        author:
          description: Email of the experiment creator
          type: string
        channelType:
          description: Channel type for this experiment.
          type: string
          enum:
          - email
          - push
          - sms
          - in_app
          - web_push
        finishDate:
          description: Finish date of the experiment
          format: date-time
          type: string
        id:
          description: Experiment ID
          format: int64
          type: integer
        name:
          description: Experiment name
          type: string
        startDate:
          description: Start date of the experiment
          format: date-time
          type: string
        status:
          description: Experiment status
          type: string
          enum:
          - draft
          - ready
          - running
          - finished
          - winner_found
      required:
      - author
      - channelType
      - id
      - name
      - status
      type: object
    ExperimentMetricsResponse:
      properties:
        headers:
          type: string
        rows:
          description: Rows of the report.
          items:
            type: string
          type: array
      type: object
    ExperimentMeta:
      description: Experiment metadata
      properties:
        campaignId:
          description: Campaign ID
          format: int64
          type: integer
        conversionMetrics:
          description: Conversion metrics being tracked
          items:
            type: string
          type: array
        name:
          description: Experiment name
          type: string
        orgId:
          description: Organization ID
          format: int64
          type: integer
        projectId:
          description: Project ID
          format: int64
          type: integer
      required:
      - conversionMetrics
      - name
      - orgId
      - projectId
      type: object
    ExperimentSizingResponse:
      description: Experiment traffic allocation
      properties:
        holdoutPercentage:
          description: Percentage of total audience reserved as a holdout group that does not receive any experiment traffic. Null if the experiment has no holdout group configured.
          format: double
          type: number
        perVariantPercentage:
          description: Percentage of total audience distributed evenly to each variant for experiments with a blast campaign that include all users. Null for other experiment types.
          format: double
          type: number
        testGroupPercentage:
          description: Percentage of total audience used as the test group, split evenly among variants (defaults to 20%). During the test phase, Iterable sends to this group to determine which variant performs best.
          format: double
          type: number
        winnerGroupPercentage:
          description: Percentage of total audience (minus the holdout group) that receives the winning variant after the test phase completes (the optimized group). Users who already received a non-winning variant during the test phase do not receive the winner again.
          format: double
          type: number
        testDurationMinutes:
          description: How long the test phase runs before Iterable selects a winner, in minutes. Defaults to 120 minutes. Applies only to experiments with blast campaigns that are not based on a specified send time.
          format: int32
          type: integer
        sendsPerVariant:
          description: Minimum number of sends each variant must receive before the test phase ends and a winner can be selected. Defaults to 1000. Applies only to triggered campaign experiments.
          format: int32
          type: integer
      type: object
    ExperimentVariantSummary:
      description: Variant summary for experiment response
      properties:
        currentPercentage:
          description: Percentage of total audience distributed to this variant, allocated based on the type of experiment you're running.
          format: double
          type: number
        id:
          description: Variant ID
          format: int64
          type: integer
        isControl:
          description: Whether this variant is the control variant
          type: boolean
        isWinner:
          description: Whether this variant is the winner
          type: boolean
        name:
          description: Variant name
          type: string
        value:
          $ref: '#/components/schemas/ExperimentVariantValue'
          description: Typed variant value object (e.g., templateId/sendTime/stoGroup)
      required:
      - currentPercentage
      - id
      - isControl
      - isWinner
      - name
      - value
      type: object
    PaginationResponse:
      description: Pagination information for list responses
      properties:
        limit:
          description: Number of items per page
          format: int32
          type: integer
        offset:
          description: Current offset
          format: int32
          type: integer
        total:
          description: Total number of items
          format: int64
          type: integer
      required:
      - limit
      - offset
      - total
      type: object
    ExperimentListResponse:
      description: Response for listing experiments
      properties:
        experiments:
          description: List of experiments
          items:
            $ref: '#/components/schemas/ExperimentListItem'
          type: array
        pagination:
          $ref: '#/components/schemas/PaginationResponse'
          description: Pagination information
      required:
      - experiments
      - pagination
      type: object
  securitySchemes:
    api_key:
      in: header
      name: Api-Key
      type: apiKey
    apiKeyAuth:
      type: apiKey
      in: header
      name: Api-Key
      description: Iterable API key passed in the Api-Key header. API keys can be created and managed in the Iterable project settings.
externalDocs:
  description: Iterable API Documentation
  url: https://api.iterable.com/api/docs
x-refined-from:
- iterable-api-openapi.json
- iterable-rest-api-openapi.yml