---
title: "Enable Experiment Groups"
method: POST
path: "/console/v1/experiments/{id}/enable_groups"
tags: ["Experiments", "Experiments"]
---

# Enable Experiment Groups

`POST /console/v1/experiments/{id}/enable_groups`

## Path parameters

- `id` string, required

## Request body

- EnableDisableGroupsDto
  - `group_names` string[], required

## Response `201`

Enable experiment groups

- object
  - `message` string, required — A simple string explaining the result of the operation.
  - `data` object, required — A single result.
    - `reviewSettings` object
      - `requiredReview` boolean, required
      - `allowedReviewers` object[], nullable
        - `id` string, required
        - `name` string, required
        - `email` string, required
    - `activeReview` object
      - `reviewID` string, required
      - `reviewStatus` string, required
      - `description` string, required
    - `id` string, required — ID
    - `name` string — The display name of the experiment
    - `idType` string, required
    - `description` string, required — A helpful summary of what this experiment does
    - `lastModifierID` string, nullable, required — ID of the last modifier.
    - `lastModifiedTime` number, double, nullable, required — Time of the last modification.
    - `lastModifierEmail` string, nullable, required — Email of the last modifier.
    - `lastModifierName` string, nullable, required — Name of the last modifier.
    - `creatorID` string, nullable — The Statsig ID of the creator of this experiment
    - `createdTime` number, double, required — Timestamp when the entity was created.
    - `creatorName` string, nullable, required — Name of the creator.
    - `creatorEmail` string, nullable — The email of the creator of this experiment
    - `tags` string[], required
    - `targetApps` union — Target apps assigned to this experiment
      - string
      - string[]
    - `holdoutIDs` string[] — Holdouts applied to this configuration.
    - `team` string, nullable — The team name associated with the experiment, Enterprise only.
    - `teamID` string, nullable — The team ID associated with the experiment, Enterprise only.
    - `version` number, double — Version number
    - `secondaryIDType` string, nullable — The secondary ID type for the experiment used in WHN for ID resolution
    - `identifierMappingMode` 'strictOneToOne' | 'firstTouchOneToMany' | 'lastTouchOneToMany' — The identifier mapping mode for the experiment used in WHN for ID resolution
    - `identityResolutionSource` string, nullable — The identity resolution entity property source for the experiment used in WHN for ID resolution
    - `hypothesis` string, required — A statement that will be tested by this experiment
    - `links` object[] — Links to relevant documentation or resources
      - `url` string, uri, required — The URL of the link
      - `title` string — The title of the link
    - `externalEvents` object[]
      - `name` string, required
      - `timestamp` number, required
    - `groups` object[], required — The test groups for your experiment
      - `name` string, required
      - `id` string, nullable
      - `size` number, required
      - `parameterValues` object, required — A map of parameter name to the value this group serves. Sidecar (Visual Editor) experiments also return `sidecarURLFilters`, `sidecarDisableAutoRun`, `sidecarPrerunScript`, and `sidecarExperimentName` here, copied from the experiment itself on read. Sending them here does nothing; set them as experiment fields instead.
      - `disabled` boolean
      - `description` string
      - `foreignGroupID` string
      - `highlighted` boolean — Marks this experiment group as highlighted in analysis views. Highlighted groups are prioritized (shown first) and can be used to filter.
      - `isControl` boolean — Whether this group is the experiment's control. Derived from the experiment's `controlGroupID`, so it is always consistent with the `controlGroupID` returned alongside it. Read-only: to change the control group, set `controlGroupID` on the experiment.
      - `shipped` boolean — Whether this group is the one that was shipped. Derived from the experiment's `launchedGroupID`, so it is always consistent with the `launchedGroupID` returned alongside it. Read-only.
      - `images` string[] — Names of images attached to this group.
      - `foreignGroupIDVerified` boolean, nullable — Whether `foreignGroupID` has been verified against the external system. Read-only.
    - `controlGroupID` string — Optional control group ID
    - `allocation` number, double, required — Percent of layer allocated to this experiment
    - `userBuckets` number[]
    - `primaryMetricTags` string[] — Primary metric tags for the experiment
    - `secondaryMetricTags` string[] — Secondary metric tags for the experiment
    - `primaryMetrics` object[], required
      - `name` string, required — The metric name.
      - `type` string, required — The metric type.
      - `direction` 'increase' | 'decrease' — The expected direction for one-sided testing (a feature to only measure metric movements in a single direction)
      - `hypothesizedValue` number — The comparison value for the one-sample testing (a feature to use a fixed baseline as the control value)
    - `secondaryMetrics` object[], required
      - `name` string, required — The metric name.
      - `type` string, required — The metric type.
      - `direction` 'increase' | 'decrease' — The expected direction for one-sided testing (a feature to only measure metric movements in a single direction)
      - `hypothesizedValue` number — The comparison value for the one-sample testing (a feature to use a fixed baseline as the control value)
    - `otherMetrics` object[] — Additional metrics you want to investigate or learn from. The usual corrections applied to Primary and Secondary metrics are not applied to these.
      - `name` string, required — The metric name.
      - `type` string, required — The metric type.
      - `direction` 'increase' | 'decrease' — The expected direction for one-sided testing (a feature to only measure metric movements in a single direction)
      - `hypothesizedValue` number — The comparison value for the one-sample testing (a feature to use a fixed baseline as the control value)
    - `duration` integer — How long the experiment is expected to last in days
    - `targetExposures` integer — Target exposures for the experiment
    - `targetingGateID` string, nullable, required — Restrict your experiment to users passing the selected feature gate
    - `sequentialTesting` boolean — Apply sequential testing?
    - `bonferroniCorrection` boolean, required — Is Bonferroni correction applied per variant?
    - `bonferroniCorrectionPerMetric` boolean — Is Bonferroni correction applied per metric?
    - `benjaminiHochbergPerVariant` boolean — Is Benjamini-Hochberg procedure applied per variant?
    - `benjaminiHochbergPerMetric` boolean — Is Benjamini-Hochberg procedure applied per metric?
    - `benjaminiPrimaryMetricsOnly` boolean — Is Benjamini-Hochberg procedure applied for primary metrics only?
    - `defaultConfidenceInterval` '80' | '90' | '95' | '98' | '99', required — Default error margin used for results
    - `defaultRollupWindow` integer — Default rollup window in days for experiment results. Use -1 for cumulative. Only -1, 1, and 7 allowed for cloud experiments.
    - `defaultChanceToBeatThreshold` number, double — Default chance-to-beat threshold used for Bayesian results.
    - `bayesianPriors` object[] — Bayesian prior settings by metric.
      - `metric` object, required
        - `name` string, required
        - `type` string, required
      - `priorMean` number, required
      - `priorStdDev` number, required
    - `manualQualityScores` object[] — Up to 10 manually set quality scores for an experiment. The scores and weights will be added to the existing weights and scores, and then weights will be renormalized to 100. This can be set via the Statsig Console API. If targeting a default check, the weight of the check will be updated, but not the status or description. A default score can be removed by setting the weight to 0. The default score identifiers are one of: HYPOTHESIS_LENGTH, BALANCED_EXPOSURE, PRIMARY_METRICS_LENGTH, COMPARISON_CORRECTION, GUARDRAIL_METRIC_TAGS, SUFFICIENT_SAMPLE, POWER_ANALYSIS, SEQUENTIAL_TESTING
      - `criteriaName` union, required
        - 'HYPOTHESIS_LENGTH' | 'BALANCED_EXPOSURE' | 'PRIMARY_METRICS_LENGTH' | 'SECONDARY_METRICS_LENGTH' | 'COMPARISON_CORRECTION' | 'GUARDRAIL_METRIC_TAGS' | 'SUFFICIENT_SAMPLE' | 'POWER_ANALYSIS' | 'SEQUENTIAL_TESTING'
        - string
      - `status` 'PASSED' | 'FAILED' | 'WARNING', required
      - `criteriaDescription` string, required
      - `score` number, required
      - `weight` number, required
    - `status` 'active' | 'setup' | 'decision_made' | 'abandoned' | 'archived' | 'experiment_stopped' | 'assignment_stopped', required — The current status of the experiment
    - `launchedGroupID` string, nullable — ID of the launched group, null otherwise
    - `assignmentSourceName` string
    - `assignmentSourceExperimentName` string — Name of the source experiment for assignment
    - `isAnalysisOnly` boolean
    - `allocationDuration` integer, nullable — Warehouse Native Only - Allocation duration in days
    - `cohortedAnalysisDuration` integer — Warehouse Native Only - Cohorted analysis duration in days
    - `cohortedMetricsMatureAfterEnd` boolean — Warehouse Native Only - Allow cohort metrics to mature after experiment end
    - `cohortWaitUntilEndToInclude` boolean — Warehouse Native Only - Whether to filter to units whose experiment cohort analysis duration is complete, if cohortedAnalysisDuration exists
    - `fixedAnalysisDuration` integer — Fixed analysis duration in days
    - `scheduledReloadHour` integer, nullable — Warehouse Native only - UTC hour at which to run scheduled pulse loads
    - `scheduledReloadType` 'full' | 'incremental' — Warehouse Native only - reload type for scheduled reloads
    - `scheduledReloadDays` integer[], nullable — Warehouse Native only - days on which to run scheduled reloads from 0 to 6, 0 meaning Sunday. Null to run reloads on all days.
    - `turboMode` boolean — Warehouse Native only - whether to run scheduled reloads with Turbo mode.
    - `autoLoadToplineImpact` boolean — Warehouse Native only - whether to automatically run topline and projected launch impact calculations when reloading experiments.
    - `analysisEndTime` string
    - `assignmentSourceFilters` object[] — Array of criteria for filtering assignment sources.
      - `column` string — Column to filter on.
      - `condition` 'in' | 'not_in' | '=' | '>' | '<' | '>=' | '<=' | 'is_null' | 'non_null' | 'contains' | 'not_contains' | 'sql_filter' | 'starts_with' | 'ends_with' | 'after_exposure' | 'before_exposure' | 'is_true' | 'is_false', required
      - `values` string[] — Optional array of values for the criterion to match against.
    - `analyticsType` string, nullable
    - `defaultSPRTPowerParam` number, double
    - `defaultSPRTMDE` number, double
    - `sprtBaselineMode` 'manual' | 'in_experiment_control'
    - `sprtMDESettings` object[]
      - `metricKey` string, required
      - `groupSettings` object[], required
        - `groupKey` string, required
        - `mde` number, required
        - `mean` number
        - `stdDev` number
    - `isSidecar` boolean — Whether this is a Statsig Sidecar experiment. `sidecarEditorURL`, `sidecarURLFilters`, `sidecarDisableAutoRun`, and `sidecarPrerunScript` are saved only when this is `true`.
    - `sidecarEditorURL` string — Sidecar (Visual Editor) only: the URL of the page being modified. The Visual Editor cannot open without it, and it must be an `http` or `https` URL.
    - `sidecarURLFilters` object[] — Sidecar (Visual Editor) only: filters on the current URL used to determine whether the experiment should be applied. Each entry looks like `{ "type": "contains", "value": "/pricing" }`, where `type` is `contains`, `equals`, `regex`, or `path`. Put `type` inside each filter object, not alongside the array.
      - `type` 'contains' | 'equals' | 'regex' | 'path', required
      - `value` string, required
    - `sidecarDisableAutoRun` boolean — Sidecar (Visual Editor) only: whether to disable auto-running the experiment on page load. By default the experiment auto runs.
    - `sidecarPrerunScript` string, nullable — Sidecar (Visual Editor) only: a script to run before the experiment starts. Send `null` to clear it.
    - `decisionReason` string, nullable, required
    - `preComputedUserDimensions` object[] — User dimensions that will be computed for every metric in WHN
      - `propertySource` string
      - `name` string, required
    - `cureCovariates` object[] — CURE Covariates to use in this experiment
      - `name` string, required
      - `type` string, required
    - `stratifiedSampling` object, nullable — The stratified sampling settings for the experiment
      - `status` 'pending' | 'success' | 'error', required
      - `metric` object
        - `name` string, required
        - `type` string
        - `startDate` string, required
        - `endDate` string, required
      - `entityPropertySource` object
        - `propertySourceName` string, required
        - `column` string, required
      - `csv` object
        - `original` string, required
        - `identifier` string, required
      - `useStratifiedSalt` boolean — Whether successful stratified sampling is currently used for experiment assignment.
      - `useUnits` boolean — Whether stratified sampling was configured to use allocated units directly.
      - `deltaReduction` number, double — Observed reduction in delta after running stratified sampling.
      - `spreadReduction` number, double — Observed reduction in spread after running stratified sampling.
    - `enabledNonProdEnvironments` string[]
    - `subtype` 'conversion' | 'reactivation' | 'retention'
    - `externalExperimentName` string
    - `salt` string — The salt used to bucket units for this experiment. Read-only; needed to reproduce assignment outside Statsig.
    - `scheduledStartTime` number, double — Epoch millis at which the experiment is scheduled to start, if a start has been scheduled via `POST /experiments/{id}/schedule_start`.
    - `restartReason` string, nullable — Why the experiment was restarted, if it was restarted as new. Null otherwise.
    - `originalTargetDuration` number, double, nullable — The originally configured target duration in days, retained when `duration` is later changed.
    - `wasAutoDisabled` boolean — Whether the experiment was automatically disabled (e.g. by an auto-disable rule) rather than stopped by a user.
    - `isPromptExperiment` boolean — Whether this experiment is a prompt experiment.
    - `isTemplate` boolean — Whether this experiment is a template that other experiments can be created from.
    - `layerID` string, nullable, required
    - `startTime` number, double, nullable, required
    - `endTime` number, double, nullable, required
    - `decisionTime` number, double, nullable, required
    - `healthChecks` object[]
      - `name` string, required
      - `description` string, required
      - `status` 'PASSED' | 'FAILED' | 'WAITING' | 'WARNING' | 'NOT_APPLIED', required
      - `metadata` object
        - `type` string, required
        - `lastPulseLoadTime` number
        - `crossoverPercent` number
        - `p_value` number
        - `assignmentSourceID` string
        - `assignmentSourceName` string
        - `foreignExperimentID` string
        - `deduplication_rate` number
        - `deduplication_rates` object[]
          - `group_id` string, required
          - `rate` number, required
          - `group_name` string, required
        - `primary_id_type` string, required
        - `secondary_id_type` string
        - `missingMetrics` string[]
        - `metrics` object[]
          - `metric_name` string, required
          - `earliest_date` string, date-time, nullable, required
          - `latest_date` string, date-time, nullable, required
        - `lastUpdatedDs` string
        - `groups` object[]
          - `groupID` string, required
          - `groupName` string, required
          - `status` 'PASSED' | 'FAILED' | 'WAITING' | 'WARNING' | 'NOT_APPLIED', required
          - `metrics` object[], required
            - `metricKey` string, required
            - `metricTitle` string, required
            - `status` 'PASSED' | 'FAILED' | 'WAITING' | 'WARNING' | 'NOT_APPLIED', required
        - `groupBucketInfo` object[]
          - `groupID` string, required
          - `averageBucketSize` number, required
      - `type` 'has_checks' | 'has_valid_unit_type' | 'has_balanced_exposures' | 'has_event_metrics' | 'has_pulse_metrics' | 'assignment_health' | 'has_crossover' | 'has_exposures' | 'has_recent_exposures_for_analyze_whn' | 'user_metrics_exist' | 'deduplication_rate' | 'deduplication_rate_group_level' | 'windowed_metrics_have_outliers' | 'exposures_data_is_behind' | 'pre_experimental_bias_check' | 'segments_of_interest_analysis' | 'has_changed_parameter' | 'metric_history_for_topline_impact' | 'default_value_mismatch' | 'has_data_gaps' | 'has_correct_target_app' | 'has_dag_failures' | 'has_exploration_completed' | 'autotune_has_outcomes' | 'metric_stability' | 'has_balanced_exposures'
    - `healthCheckStatus` 'PASSED' | 'FAILED' | 'WAITING' | 'WARNING' | 'NOT_APPLIED', required — Overall health check status
    - `experimentType` 'BASE' | 'GEO' | 'SWITCHBACK' | 'PROMPT' | 'SIDECAR' | 'GRID_SEARCH', required — The type of experiment
    - `isStale` boolean, required — Whether the experiment is considered stale (e.g. in progress or decision-made and not modified in 30+ days).
    - `owner` object, nullable — Schema for owner data including ID, type, name.
      - `ownerID` string — ID of the owner
      - `ownerType` string — Type of the owner (e.g., SDK_KEY or USER)
      - `ownerName` string — The name of the owner. This field is optional.
      - `ownerEmail` string — The email of the owner. This field is optional.
    - `inlineTargetingRulesJSON` string, nullable — A raw JSON string of the inline targeting rules
    - `inlineTargetingRules` object[] — A formatted array of the inline targeting rules
      - `name` string, required — The name of this rule.
      - `passPercentage` number, required — Of the users that meet the conditions of this rule, what percent should return true.
      - `conditions` object[], required — An array of Condition objects.
        - `targetValue` union
          - string[]
          - number[]
          - string
          - number
        - `operator` string
        - `field` string, nullable
        - `customID` string, nullable
        - `type` 'app_version' | 'browser_name' | 'browser_version' | 'country' | 'custom_field' | 'email' | 'environment_tier' | 'fails_gate' | 'fails_segment' | 'ip_address' | 'locale' | 'os_name' | 'os_version' | 'passes_gate' | 'passes_segment' | 'public' | 'time' | 'unit_id' | 'user_id' | 'user_agent' | 'url' | 'javascript' | 'device_model' | 'target_app' | 'experiment_group', required
      - `environments` string[], nullable — The environments this rule is enabled for.
      - `id` string — The Statsig ID of this rule.
      - `baseID` string — The base ID of this rule, i.e. without any added metadata. Will remain the exact same throughout
      - `returnValue` object — The return value of the rule.
      - `completedAutomatedRollouts` object[] — Read-only: Automated rollout phases that have already completed.
        - `time` number
        - `passPercent` number, required
      - `pendingAutomatedRollouts` object[] — Read-only: Automated rollout phases that are scheduled but not yet complete.
        - `time` number
        - `passPercent` number, required
    - `qualityScore` object, nullable — The experiment quality score and per-criterion breakdown.
      - `score` number, double, required — The normalized experiment quality score.
      - `breakdown` object[], required — The per-criterion quality score breakdown.
        - `criterion` string, required — The quality score criterion name.
        - `status` 'PASSED' | 'FAILED' | 'WAITING' | 'WARNING' | 'NOT_APPLIED', nullable, required — The quality score status for the criterion.
        - `passingDescription` string, required — The passing description for the criterion.
        - `score` number, required — The normalized score contribution for this criterion.
        - `weight` number, required — The normalized weight for this criterion.
    - `summarySections` object[], nullable
      - `name` string, required
      - `content` string, nullable, required
    - `permalink` string, uri, required — A permalink to this experiment in the Statsig Console.
    - `shipWithHoldout` object — Present when the experiment has been shipped with a holdback group via make_decision (i.e. the winning variant is live for most users but a control slice is held back for ongoing measurement). Absent for experiments that have not been shipped, or that were shipped fully without a holdback.
      - `holdoutPercent` integer, required — Integer percentage of users held back when the experiment was shipped with holdback. Each non-shipped group receives this percentage of traffic and the shipped group receives the remainder.
      - `shippedGroupID` string, required — ID of the group that was shipped (i.e. the winning variant).
      - `shippedGroupName` string, required — Name of the group that was shipped.
      - `shippedWithHoldoutTime` number, double — Unix timestamp (ms) at which the experiment was shipped with holdback.
      - `expectedDuration` number, double — Expected duration of the holdback period in days, if specified when shipping.
    - `powerAnalyses` object[], required — The power analyses linked to this experiment. Empty when no power analysis is linked.
      - `id` string, required — The ID of the linked power analysis report.
      - `name` string, nullable, required — The name of the linked power analysis report.
      - `status` 'pending' | 'failed' | 'ready' | 'expired', required — The status of the linked power analysis report.
      - `isPrimary` boolean, required — Whether this is the experiment's primary attached power analysis report.

## Other responses

- `400` — Invalid request. Please check the request input and try again.
- `401` — This endpoint only accepts an active CONSOLE key, but an invalid key was sent. Key: console-xxxXXXxxxXXXxxx
- `404` — Not Found. The requested resource could not be found.

---

[API](https://skmtc.net/statsig/apis/console-api.md) · [All operations](https://skmtc.net/statsig/apis/console-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/statsig/console-api/versions/3189f450c93b/schema)
