---
title: "Gets an experiment by ID."
method: GET
path: "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}"
tags: ["Experiments"]
---

# Gets an experiment by ID.

`GET /creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}`

Returns the `experiment`. Returns 404 if the experiment doesn't exist for the universe.

## Path parameters

- `universeId` integer, required
- `experimentId` string, required

## Response `200`

OK

- GetExperimentResponse — Response body for GET /v1/universes/{universeId}/experiment/{experimentId}.
  - `experiment` ProductExperiment — Config-based experiment for a given product. Returned by the Get endpoint and embedded in a successful experiment operation.
    - `id` string, nullable — Experiment ID.
    - `name` string, nullable — Experiment display name.
    - `description` string, nullable — Experiment description.
    - `createdTime` string, date-time — UTC time the experiment was created.
    - `lastUpdatedTime` string, nullable — UTC time the experiment was last updated.
    - `startedTime` string, nullable — UTC time the experiment was started (running), if it has been.
    - `stoppedTime` string, nullable — UTC time the experiment was stopped, if it has been.
    - `state` 'EXPERIMENT_STATE_DRAFT' | 'EXPERIMENT_STATE_SCHEDULED' | 'EXPERIMENT_STATE_RUNNING' | 'EXPERIMENT_STATE_COMPLETED' | 'EXPERIMENT_STATE_CANCELLED' | 'EXPERIMENT_STATE_DELETED' — Lifecycle state of an experiment. EXPERIMENT_STATE_DRAFT EXPERIMENT_STATE_SCHEDULED EXPERIMENT_STATE_RUNNING EXPERIMENT_STATE_COMPLETED EXPERIMENT_STATE_CANCELLED EXPERIMENT_STATE_DELETED
    - `experimentConfiguration` ExperimentConfiguration — Union of per-product experiment configurations. At most one of InGameConfigExperimentConfiguration or MatchmakingExperimentConfiguration may be set.
      - `productType` 'EXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS' | 'EXPERIMENT_PRODUCT_TYPE_MATCHMAKING' — Type of product the experiment is targeting. EXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS EXPERIMENT_PRODUCT_TYPE_MATCHMAKING
      - `inGameConfigExperimentConfiguration` InGameConfigExperimentConfiguration — Configuration for an in-game-config experiment.
        - `variants` SingleConfigExperimentVariant[], nullable — Variants participating in the experiment. Exactly one must have IsBaseline set.
          - `variantMeta` VariantMeta — Metadata shared by every experiment variant.
            - `variantId` string, nullable — Unique identifier for the variant. Only assigned once the experiment starts running; empty or null for draft variants.
            - `label` string, nullable — Human-readable label for the variant, e.g. `Control`, `Treatment A`. Non-empty, at most 50 characters; must start with a letter and contain only letters, digits, spaces, underscores, or hyphens.
            - `isBaseline` boolean — True iff this variant is the baseline. Exactly one variant must be the baseline.
            - `weight` integer — Relative traffic weight for this variant. The platform normalizes across all variants, so weights do not have to sum to 100.
          - `configEntry` ExperimentConfigEntry
            - `key` string, nullable — The config key this variant overrides. Must match across variants in the same experiment.
            - `entryValue` unknown
            - `description` string, nullable — Optional human-readable description carried alongside the value.
      - `matchmakingExperimentConfiguration` MatchmakingExperimentConfiguration — Configuration for a matchmaking experiment.
        - `variants` MatchmakingExperimentVariant[], nullable — Variants participating in the experiment.
          - `variantMeta` VariantMeta — Metadata shared by every experiment variant.
            - `variantId` string, nullable — Unique identifier for the variant. Only assigned once the experiment starts running; empty or null for draft variants.
            - `label` string, nullable — Human-readable label for the variant, e.g. `Control`, `Treatment A`. Non-empty, at most 50 characters; must start with a letter and contain only letters, digits, spaces, underscores, or hyphens.
            - `isBaseline` boolean — True iff this variant is the baseline. Exactly one variant must be the baseline.
            - `weight` integer — Relative traffic weight for this variant. The platform normalizes across all variants, so weights do not have to sum to 100.
          - `placeMatchmakingConfigs` PlaceScoringConfig[], nullable — Per-place matchmaking scoring configurations applied when this variant is selected.
            - `placeId` integer — Place ID this scoring config applies to.
            - `matchmakingScoringConfigId` string, nullable — Matchmaking scoring config ID for this place. Ignored when UsePlatformDefault is true.
            - `usePlatformDefault` boolean — When true, this place uses the platform default matchmaking scoring config instead of MatchmakingScoringConfigId.
    - `exposurePercent` integer — Exposure percent in range 0-100.
    - `targetingCriteria` TargetingCriteria — Eligibility criteria scoping which users an experiment can apply to.
      - `rule` ConditionalRuleDefinition — JSON shape of an RPN conditional rule in public API requests.
        - `tokens` RpnTokenDto[], nullable — Postfix RPN token sequence.
          - `operator` string, nullable
          - `operand` RpnOperandDto — RPN operand: attribute reference or literal value.
            - `attributeReference` string, nullable
            - `literalValue` LiteralValueDto — Literal constant for an RPN operand.
              - …
    - `operationalStatus` 'OPERATIONAL_STATUS_READY' | 'OPERATIONAL_STATUS_CREATING' | 'OPERATIONAL_STATUS_UPDATING' | 'OPERATIONAL_STATUS_STARTING' | 'OPERATIONAL_STATUS_STOPPING' | 'OPERATIONAL_STATUS_SCHEDULING' | 'OPERATIONAL_STATUS_DELETING' | 'OPERATIONAL_STATUS_RAMPING_UP' | 'OPERATIONAL_STATUS_SYNCING' | 'OPERATIONAL_STATUS_ROLLING_OUT' — Current operational status reported on an experiment or an async operation performed on one. OPERATIONAL_STATUS_READY OPERATIONAL_STATUS_CREATING OPERATIONAL_STATUS_UPDATING OPERATIONAL_STATUS_STARTING OPERATIONAL_STATUS_STOPPING OPERATIONAL_STATUS_SCHEDULING OPERATIONAL_STATUS_DELETING OPERATIONAL_STATUS_RAMPING_UP OPERATIONAL_STATUS_SYNCING OPERATIONAL_STATUS_ROLLING_OUT
    - `createdBy` string, nullable — User ID of the creator of the experiment.
    - `scheduledTime` string, nullable — UTC time the experiment is scheduled to start, if scheduled.
    - `durationSeconds` integer — Experiment duration in whole seconds.
    - `universeMetricConfiguration` UniverseMetricConfiguration — Metric configuration for an experiment.
      - `goalMetric` 'UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME' | 'UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER' | 'UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION' | 'UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION' | 'UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE' | 'UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER' | 'UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER' — Metric tracked for a universe experiment. UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER
      - `learningMetrics` UniverseExperimentMetric[], nullable — Learning (observation-only) metrics.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found

---

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