Optimizely Experiments API

Create and manage A/B test experiments on top of feature flags.

Operations 21

GET /api/v1/admin/Experiments Returns the EntitySet Experiments #
POST /api/v1/admin/Experiments Post a new entity to EntitySet Experiments #
GET /api/v1/admin/Experiments({id}) Returns the entity with the key from Experiments #
PUT /api/v1/admin/Experiments({id}) Replace entity in EntitySet Experiments #
DELETE /api/v1/admin/Experiments({id}) Delete entity in EntitySet Experiments #
PATCH /api/v1/admin/Experiments({id}) Update entity in EntitySet Experiments #
GET /api/v1/admin/Experiments/Default.Default() Call operation Default #
POST /api/v1/admin/Experiments/Default.end Call operation end #
POST /api/v1/admin/experiments/end #
DELETE /api/v1/admin/experiments/delete #
GET /api/v1/admin/experiments({key})/customproperties({custompropertyKey}) #
GET /api/v1/admin/experiments({key})/participants({experimentparticipantKey}) #
GET /experiments List experiments #
POST /experiments Create an experiment #
GET /experiments/{experiment_id} Get an experiment #
PATCH /experiments/{experiment_id} Update an experiment #
DELETE /experiments/{experiment_id} Delete an experiment #
GET /experiments/{experiment_id}/results Get experiment results #
GET /experiments/{experiment_id}/timeseries Get Experiment results time series #
GET /export/experiments/{experiment_id}/results/csv Get Experiment results as a CSV #

Documentation

Specifications

Other Resources

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/optimizely-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optimizely-experiments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Optimizely Experiments API
  version: '1.0'
  description: 'Operations tagged Experiments across 4 of this provider''s published API definitions: optimizely-configured-commerce-admin-api-v1-openapi.json, optimizely-feature-experimentation-openapi.yml, optimizely-web-experimentation-openapi.yml, optimizely-web-experimentation-optimizely-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://dogfood.commerce.insitesandbox.com
- url: https://api.optimizely.com/v2
  description: Optimizely REST API v2 Management Server
- url: https://api.optimizely.com/flags/v1
  description: Optimizely Flags API v1 Server
tags:
- name: Experiments
paths:
  /api/v1/admin/Experiments:
    get:
      tags:
      - Experiments
      summary: Returns the EntitySet Experiments
      operationId: Experiments_Get
      parameters:
      - name: $expand
        in: query
        description: Expands related entities inline.
        required: false
        schema:
          type: string
      - name: $filter
        in: query
        description: Filters the results, based on a Boolean condition.
        required: false
        schema:
          type: string
      - name: $select
        in: query
        description: Selects which properties to include in the response.
        required: false
        schema:
          type: string
      - name: $apply
        in: query
        description: Aggregates the results according to one or more transformations.
        required: false
        schema:
          type: string
      - name: $orderby
        in: query
        description: Sorts the results.
        required: false
        schema:
          type: string
      - name: $top
        in: query
        description: Returns only the first n results.
        required: false
        schema:
          type: integer
          format: int32
      - name: $skip
        in: query
        description: Skips the first n results.
        required: false
        schema:
          type: integer
          format: int32
      - name: $count
        in: query
        description: Includes a count of the matching results in the response.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    post:
      tags:
      - Experiments
      summary: Post a new entity to EntitySet Experiments
      operationId: Experiments_Post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Insite.Data.Entities.Experiment'
        description: The entity to post
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v1/admin/Experiments({id}):
    get:
      tags:
      - Experiments
      summary: Returns the entity with the key from Experiments
      operationId: Experiments_GetById
      parameters:
      - name: id
        in: path
        description: 'key: id'
        required: true
        schema:
          type: string
          format: uuid
      - name: $expand
        in: query
        description: Expands related entities inline.
        required: false
        schema:
          type: string
      - name: $select
        in: query
        description: Selects which properties to include in the response.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    put:
      tags:
      - Experiments
      summary: Replace entity in EntitySet Experiments
      operationId: Experiments_PutById
      parameters:
      - name: id
        in: path
        description: 'key: id'
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Insite.Data.Entities.Experiment'
        description: The entity to put
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    delete:
      tags:
      - Experiments
      summary: Delete entity in EntitySet Experiments
      operationId: Experiments_DeleteById
      parameters:
      - name: id
        in: path
        description: 'key: id'
        required: true
        schema:
          type: string
          format: uuid
      - name: If-Match
        in: header
        description: If-Match header
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    patch:
      tags:
      - Experiments
      summary: Update entity in EntitySet Experiments
      operationId: Experiments_PatchById
      parameters:
      - name: id
        in: path
        description: 'key: id'
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Insite.Data.Entities.Experiment'
        description: The entity to patch
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v1/admin/Experiments/Default.Default():
    get:
      tags:
      - Experiments
      summary: Call operation  Default
      operationId: Experiments_Default
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v1/admin/Experiments/Default.end:
    post:
      tags:
      - Experiments
      summary: Call operation  end
      operationId: Experiments_End_1
      requestBody:
        content:
          application/json:
            schema:
              required:
              - experimentId
              type: object
              properties:
                experimentId:
                  format: guid
                  type: string
        description: end action parameters
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v1/admin/experiments/end:
    post:
      tags:
      - Experiments
      operationId: Experiments_End_2
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v1/admin/experiments/delete:
    delete:
      tags:
      - Experiments
      operationId: Experiments_DeleteRoute
      parameters:
      - name: ids
        in: query
        required: true
        explode: true
        schema:
          type: array
          items:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v1/admin/experiments({key})/customproperties({custompropertyKey}):
    get:
      tags:
      - Experiments
      operationId: Experiments_GetCustomPropertyByKeyAndCustompropertykey
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: custompropertyKey
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: $expand
        in: query
        description: Expands related entities inline.
        required: false
        schema:
          type: string
      - name: $select
        in: query
        description: Selects which properties to include in the response.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v1/admin/experiments({key})/participants({experimentparticipantKey}):
    get:
      tags:
      - Experiments
      operationId: Experiments_GetParticipantByKeyAndExperimentparticipantkey
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: experimentparticipantKey
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: $expand
        in: query
        description: Expands related entities inline.
        required: false
        schema:
          type: string
      - name: $select
        in: query
        description: Selects which properties to include in the response.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: object
      deprecated: false
      security:
      - access_token: []
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /experiments:
    get:
      operationId: listExperiments
      summary: List experiments
      description: Returns a list of experiments for the specified project.
      tags:
      - Experiments
      parameters:
      - $ref: '#/components/parameters/projectIdQuery'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: Successfully retrieved the list of experiments
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Experiment'
        '401':
          description: Authentication credentials are missing or invalid
      security:
      - bearerAuth: []
    post:
      operationId: createExperiment
      summary: Create an experiment
      description: Creates a new experiment within the specified project.
      tags:
      - Experiments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExperimentInput'
      responses:
        '201':
          description: Experiment successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Experiment'
        '400':
          description: Invalid request body
        '401':
          description: Authentication credentials are missing or invalid
      security:
      - bearerAuth: []
    servers:
    - url: https://api.optimizely.com/v2
      description: Optimizely REST API v2 Management Server
    - url: https://api.optimizely.com/flags/v1
      description: Optimizely Flags API v1 Server
  /experiments/{experiment_id}:
    get:
      operationId: getExperiment
      summary: Get an experiment
      description: Retrieves the full details of a specific experiment.
      tags:
      - Experiments
      parameters:
      - $ref: '#/components/parameters/experimentId'
      responses:
        '200':
          description: Successfully retrieved the experiment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Experiment'
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Experiment not found
      security:
      - bearerAuth: []
    patch:
      operationId: updateExperiment
      summary: Update an experiment
      description: Updates the specified experiment with the provided fields.
      tags:
      - Experiments
      parameters:
      - $ref: '#/components/parameters/experimentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExperimentInput'
      responses:
        '200':
          description: Experiment successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Experiment'
        '400':
          description: Invalid request body
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Experiment not found
      security:
      - bearerAuth: []
    delete:
      operationId: deleteExperiment
      summary: Delete an experiment
      description: Archives or permanently deletes the specified experiment.
      tags:
      - Experiments
      parameters:
      - $ref: '#/components/parameters/experimentId'
      responses:
        '204':
          description: Experiment successfully deleted
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Experiment not found
      security:
      - bearerAuth: []
    servers:
    - url: https://api.optimizely.com/v2
      description: Optimizely REST API v2 Management Server
    - url: https://api.optimizely.com/flags/v1
      description: Optimizely Flags API v1 Server
  /experiments/{experiment_id}/results:
    get:
      operationId: getExperimentResults
      summary: Get experiment results
      description: Retrieves the statistical results for a specific experiment, including conversion rates, confidence intervals, and statistical significance computed by Stats Engine.
      tags:
      - Experiments
      parameters:
      - $ref: '#/components/parameters/experimentId'
      responses:
        '200':
          description: Successfully retrieved experiment results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExperimentResults'
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Experiment not found
      security:
      - bearerAuth: []
    servers:
    - url: https://api.optimizely.com/v2
      description: Optimizely REST API v2 Production Server
  /experiments/{experiment_id}/results/share:
    get:
      description: This link allows read-only access for anyone to view the results, even if they don't have an Optimizely account. Because anyone can use the link, be careful where you share it.
      operationId: get_experiment_results_share_link
      parameters:
      - description: The ID of the experiment to generate a shareable link for
        in: path
        name: experiment_id
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsShareLink'
          description: Return sharable link for the experiment's results page
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Get a sharable link for the experiment's results page
      tags:
      - Experiments
      x-release-state: alpha
      security:
      - apiKey: []
      - OAuth2:
        - read
        - write
    servers:
    - url: https://api.optimizely.com/v2
  /experiments/{experiment_id}/timeseries:
    get:
      description: Get results time series for a single Experiment
      operationId: get_experiment_timeseries
      parameters:
      - description: The ID for the Experiment you want results for
        in: path
        name: experiment_id
        required: true
        schema:
          format: int64
          type: integer
      - description: The ID of the variation to use as the baseline to compare against other variations. Defaults to the first variation if not provided. For an experience in a personalization campaign, the value can also be the string 'holdback'.
        in: query
        name: baseline_variation_id
        schema:
          format: int64
          type: string
      - description: The start time of the time interval (beginning time included) used to calculate the results over. If unspecified, defaults to the time that the Experiment was first activated. The start time will be rounded the smallest time modulo 5 minutes larger or equal to start_time.
        in: query
        name: start_time
        schema:
          format: date-time
          type: string
      - description: The end of the time interval (end time excluded) used to calculate results over. If unspecified, defaults to the current time if the Experiment is still running, otherwise defaults to the time the experiment was last active. The end time will be rounded to the largest time modulo 5 minutes smaller or equal to end_time. The end_time in the response may be earlier than requested if fresher results are not available yet. In this case, the results will continue to calculate in the background and subsequent requests will eventually return the full results.
        in: query
        name: end_time
        schema:
          format: date-time
          type: string
      - $ref: '#/components/parameters/browser_segment'
      - $ref: '#/components/parameters/device_segment'
      - $ref: '#/components/parameters/source_segment'
      - $ref: '#/components/parameters/attribute_id_segment'
      - $ref: '#/components/parameters/attribute_value_segment'
      - $ref: '#/components/parameters/segment_conditions'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExperimentTimeseries'
          description: Return Experiment results time series
        '202':
          description: The results request has been received but has not yet finished processing. Wait a bit and try again.
        '204':
          description: There are no results data for this Experiment yet. Make sure the Experiment is started and try again later
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Get Experiment results time series
      tags:
      - Experiments
      x-release-state: beta
      security:
      - apiKey: []
      - OAuth2:
        - read
        - write
    servers:
    - url: https://api.optimizely.com/v2
  /export/experiments/{experiment_id}/results/csv:
    get:
      description: Get results for a single Experiment as a CSV
      operationId: get_experiment_results_csv
      parameters:
      - description: The ID for the Experiment you want results for
        in: path
        name: experiment_id
        required: true
        schema:
          format: int64
          type: integer
      - description: The ID of the variation to use as the baseline to compare against other variations. Defaults to the first variation if not provided. For an experience in a personalization campaign, the value can also be the string 'holdback'.
        in: query
        name: baseline_variation_id
        schema:
          type: string
      - description: The start time of the time interval (beginning time included) used to calculate the results over. If unspecified, defaults to the time that the Experiment was first activated. The start time will be rounded the smallest time modulo 5 minutes larger or equal to start_time.
        in: query
        name: start_time
        schema:
          format: date-time
          type: string
      - description: The end of the time interval (end time excluded) used to calculate results over. If unspecified, defaults to the current time if the Experiment is still running, otherwise defaults to the time the experiment was last active. The end time will be rounded to the largest time modulo 5 minutes smaller or equal to end_time. The end_time in the response may be earlier than requested if fresher results are not available yet. In this case, the results will continue to calculate in the background and subsequent requests will eventually return the full results.
        in: query
        name: end_time
        schema:
          format: date-time
          type: string
      - $ref: '#/components/parameters/browser_segment'
      - $ref: '#/components/parameters/device_segment'
      - $ref: '#/components/parameters/source_segment'
      - $ref: '#/components/parameters/attribute_id_segment'
      - $ref: '#/components/parameters/attribute_value_segment'
      - $ref: '#/components/parameters/segment_conditions'
      responses:
        '200':
          description: '<p>Return Experiment results in CSV format</p> <p>Name of the columns returned: ''Start time (UTC)'', ''End time (UTC)'', ''Variation Name'', ''Variation ID'', ''Is Baseline Variation'', ''Metric Event Name'', ''Metric Event ID'', ''Metric Numerator Type'', ''Metric Denominator Type'', ''Metric Winning Direction'', ''Numerator Value'', ''Denominator Value'', ''Metric Value'', ''Improvement Status from Baseline'', ''Improvement Value from Baseline'', ''Statistical Significance'', ''Is Improvement Significant'', ''Confidence Interval - Low'', ''Confidence Interval - High'', ''Samples Remaining to Significance'', ''Properties''</p> <p>(<a href="https://help.optimizely.com/Export_to_CSV_column_reference_for_campaigns_and_experiments">Column reference guide for CSV export</a>)</p>'
        '202':
          description: The results request has been received but has not yet finished processing. Wait a bit and try again.
        '204':
          description: There are no results data for this Experiment yet. Make sure the Experiment is started and try again later
        default:
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Get Experiment results as a CSV
      tags:
      - Experiments
      x-release-state: beta
      security:
      - apiKey: []
      - OAuth2:
        - read
        - write
    servers:
    - url: https://api.optimizely.com/v2
components:
  schemas:
    Insite.Data.Entities.Experiment:
      required:
      - name
      - description
      - metric
      - endCondition
      - status
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        name:
          maxLength: 100
          minLength: 0
          type: string
        description:
          maxLength: 1024
          minLength: 0
          type: string
        originalContentKey:
          format: int32
          type: integer
        metric:
          maxLength: 50
          minLength: 0
          type: string
        startOn:
          format: date-time
          type: string
        endOn:
          format: date-time
          type: string
        startedOn:
          format: date-time
          type: string
        completedOn:
          format: date-time
          type: string
        endCondition:
          maxLength: 50
          minLength: 0
          type: string
        numberOfParticipants:
          format: int32
          type: integer
        isPaused:
          type: boolean
        includedAllocation:
          format: int32
          type: integer
        originalAllocation:
          format: int32
          type: integer
        variant1Allocation:
          format: int32
          type: integer
        variant2Allocation:
          format: int32
          type: integer
        variant3Allocation:
          format: int32
          type: integer
        originalClickTrackingSelector:
          type: string
        variant1ClickTrackingSelector:
          type: string
        variant2ClickTrackingSelector:
          type: string
        variant3ClickTrackingSelector:
          type: string
        variant1ContentKey:
          format: int32
          type: integer
        variant2ContentKey:
          format: int32
          type: integer
        variant3ContentKey:
          format: int32
          type: integer
        websiteId:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        status:
          maxLength: 50
          minLength: 0
          type: string
        createdOn:
          format: date-time
          type: string
        createdBy:
          type: string
        modifiedOn:
          format: date-time
          type: string
        modifiedBy:
          type: string
    Experiment:
      type: object
      description: A Feature Experimentation experiment
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the experiment
        project_id:
          type: integer
          format: int64
          description: The project this experiment belongs to
        name:
          type: string
          description: Human-readable name of the experiment
        description:
          type: string
          description: Description of the experiment
        status:
          type: string
          description: Current status of the experiment
          enum:
          - active
          - paused
          - not_started
          - archived
        variations:
          type: array
          description: List of variations in the experiment
          items:
            type: object
            properties:
              variation_id:
                type: integer
                format: int64
                description: Unique variation identifier
              key:
                type: string
                description: Variation key
              name:
                type: string
                description: Variation name
              weight:
                type: integer
                description: Traffic weight
        metrics:
          type: array
          description: List of metrics tracked by the experiment
          items:
            type: object
            properties:
              event_id:
                type: integer
                format: int64
                description: Event identifier
              aggregator:
                type: string
                description: Aggregation method
              scope:
                type: string
                description: Metric scope
        created:
          type: string
          format: date-time
          description: Timestamp when the experiment was created
        last_modified:
          type: string
          format: date-time
          description: Timestamp when the experiment was last modified
    ExperimentInput:
      type: object
      description: Input for creating or updating an experiment
      properties:
        project_id:
          type: integer
          format: int64
          description: The project this experiment belongs to
        name:
          type: string
          description: Human-readable name of the experiment
        description:
          type: string
          description: Description of the experiment
        status:
          type: string
          description: Current status
          enum:
          - active
          - paused
          - not_started
          - archived
    Metric:
      type: object
      description: A metric used to measure experiment results
      properties:
        event_id:
          type: integer
          format: int64
          description: The event ID this metric tracks
        aggregator:
          type: string
          description: How to aggregate the metric
          enum:
          - unique
          - count
          - sum
        field:
          type: string
          description: The field to aggregate on
        scope:
          type: string
          description: The scope of the metric
          enum:
          - visitor
          - session
          - event
        winning_direction:
          type: string
          description: The direction that indicates improvement
          enum:
          - increasing
          - decreasing
    Variation:
      type: object
      description: A variation within an experiment
      properties:
        variation_id:
          type: integer
          format: int64
          description: Unique identifier for the variation
        name:
          type: string
          description: Name of the variation
        weight:
          type: integer
          description: Traffic allocation weight for the variation
          minimum: 0
          maximum: 10000
        actions:
          type: array
          description: List of actions (changes) applied in this variation
          items:
            type: object
            properties:
              page_id:
                type: integer
                format: int64
                description: The page this action applies to
              changes:
                type: array
                description: List of changes applied on the page
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      description: The type of change
                    value:
                      type: string
                      description: The change value
    ExperimentResults:
      type: object
      description: Statistical results for an experiment
      properties:
        experiment_id:
          type: integer
          format: int64
          description: The experiment these results belong to
        start_time:
          type: string
          format: date-time
          description: Start time of the results period
        end_time:
          type: string
          format: date-time
          description: End time of the results period
        reach:
          type: object
          description: Reach statistics for the experiment
          properties:
            variations:
              type: object
              additionalProperties:
                type: object
                properties:
                  count:
                    type: integer
                    description: Number of visitors in this variation
                  variation_id:
                    type: string
                    description: The variation identifier
        metrics:
          type: array
          description: Results for each metric
          items:
            type: object
            properties:
              event_id:
                type: integer
                format: int64
                description: The event ID for this metric
              results:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    is_baseline:
                      type: boolean
                      description: Whether this is the baseline variation
                    value:
                      type: number
                      description: The metric value
                    lift:
                      type: object
                      description: Lift compared to baseline
                      properties:
       

# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/optimizely-experiments-api-openapi.yml