---
title: "Get experiment"
method: GET
path: "/api/experiments/{experimentId}"
tags: ["experiments"]
---

# Get experiment

`GET /api/experiments/{experimentId}`

Get a single experiment by ID.

## Path parameters

- `experimentId` integer, required

## Response `200`

successful operation

- ExperimentResponse — Full experiment details
  - `allocationMode` string, required — Traffic allocation mode
  - `channelType` 'email' | 'push' | 'sms' | 'in_app' | 'web_push', required — Channel type for the experiment.
  - `constraints` ExperimentConstraints — Experiment constraints/targeting
    - `suppressionListIds` integer[] — List IDs to suppress
    - `targetSegment` string — Target segment description
  - `creationDate` string, date-time — Date the experiment was created
  - `experimentType` string, required — Experiment type
  - `finishDate` string, date-time — End date of the experiment
  - `id` integer, required — Experiment ID
  - `meta` ExperimentMeta, required — Experiment metadata
    - `campaignId` integer — Campaign ID
    - `conversionMetrics` string[], required — Conversion metrics being tracked
    - `name` string, required — Experiment name
    - `orgId` integer, required — Organization ID
    - `projectId` integer, required — Project ID
  - `sizing` ExperimentSizingResponse, required — Experiment traffic allocation
    - `holdoutPercentage` number, double — 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.
    - `perVariantPercentage` number, double — Percentage of total audience distributed evenly to each variant for experiments with a blast campaign that include all users. Null for other experiment types.
    - `testGroupPercentage` number, double — 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.
    - `winnerGroupPercentage` number, double — 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.
    - `testDurationMinutes` integer — 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.
    - `sendsPerVariant` integer — 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.
  - `startDate` string, date-time — Start date of the experiment
  - `status` 'draft' | 'ready' | 'running' | 'finished' | 'winner_found', required — Experiment status
  - `variants` ExperimentVariantSummary[], required — Experiment variants
    - `currentPercentage` number, double, required — Percentage of total audience distributed to this variant, allocated based on the type of experiment you're running.
    - `id` integer, required — Variant ID
    - `isControl` boolean, required — Whether this variant is the control variant
    - `isWinner` boolean, required — Whether this variant is the winner
    - `name` string, required — Variant name
    - `value` ExperimentVariantValue, required — Typed variant value payload. Only present fields are serialized.
      - `sendTime` string — Send time for send-time variants (ISO-8601 string)
      - `stoGroup` string — STO group identifier for STO variants
      - `templateId` integer — Template ID for template-based variants

## Other responses

- `400` — Invalid parameters
- `401` — Invalid API key
- `404` — Experiment not found

---

[API](https://skmtc.net/iterable/apis/iterable-api.md) · [All operations](https://skmtc.net/iterable/apis/iterable-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/iterable/iterable-api/revisions/afaab604b58c/schema)
