---
title: "Schedules an experiment to start at a future UTC time."
method: POST
path: "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule"
tags: ["Experiments"]
---

# Schedules an experiment to start at a future UTC time.

`POST /creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule`

Body must include `scheduledStartTime` as an ISO-8601 UTC timestamp.

## Path parameters

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

## Request body

- ScheduleExperimentRequest — Request body for `POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule`.
  - `scheduledStartTime` string, nullable — UTC time at which the experiment should be auto-started.

## Response `200`

OK

- ScheduleExperimentResponse — Response body for `POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule`.
  - `operation` ExperimentOperation — Async operation result for an experiment Create / Update / Discard call. When Done is true, at most one of Error or Experiment is set; when false, neither is. A successful delete is the one case where a done operation carries neither: the experiment no longer exists, so no Experiment body is returned.
    - `operationId` string, nullable — Stable operation ID.
    - `status` '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
    - `createdTime` string, date-time — UTC time the operation was created.
    - `done` boolean — True once the operation terminates (success or failure). When false, neither Error nor Experiment is populated.
    - `error` ExperimentApiError — Application-layer error emitted on a failed experiment operation.
      - `errorType` 'EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION' | 'EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL' | 'EXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT' | 'EXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT' | 'EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY' | 'EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE' | 'EXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE' | 'EXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR' | 'EXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND' | 'EXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA' | 'EXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED' | 'EXPERIMENT_API_ERROR_TYPE_INVALID_DURATION' | 'EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND' | 'EXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME' | 'EXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES' | 'EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES' — Validation failures. EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL EXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT EXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE EXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE EXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR EXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND EXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA EXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED EXPERIMENT_API_ERROR_TYPE_INVALID_DURATION EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND EXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME EXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES
      - `errorCode` string, nullable — Stable machine-readable error code.
      - `errorMessage` string, nullable — Human-readable description of the failure.
      - `errorContext` object, nullable — Optional structured context about the failure (field paths, offending values, etc.).
    - `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.
              - …
            - `configEntry` ExperimentConfigEntry
              - …
        - `matchmakingExperimentConfiguration` MatchmakingExperimentConfiguration — Configuration for a matchmaking experiment.
          - `variants` MatchmakingExperimentVariant[], nullable — Variants participating in the experiment.
            - `variantMeta` VariantMeta — Metadata shared by every experiment variant.
              - …
            - `placeMatchmakingConfigs` PlaceScoringConfig[], nullable — Per-place matchmaking scoring configurations applied when this variant is selected.
              - …
      - `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.
              - …
      - `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)
