Optimizely Reports API

APIs to interact with Reports

Operations 7

GET /projects/{project_id}/environments/{environment_key}/reports List Reports #
POST /projects/{project_id}/environments/{environment_key}/reports/archived Archive Reports #
POST /projects/{project_id}/environments/{environment_key}/reports/unarchived Unarchive Reports #
DELETE /projects/{project_id}/environments/{environment_key}/reports/{report_key} Delete a Report #
GET /projects/{project_id}/environments/{environment_key}/reports/{report_key} Fetch a Single Report #
POST /projects/{project_id}/environments/{environment_key}/reports/{report_key}/reset-results Reset the results for a Report #
GET /experiments/{experiment_id}/report Get Experiment Result's Report #

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-reports-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-reports-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Optimizely Reports API
  x-refined-note:
  - x-logo differs across the merged source definitions and was not carried
  version: '1.0'
  description: 'Operations tagged Reports across 2 of this provider''s published API definitions: optimizely-feature-experimentation-optimizely-feature-experimentation-api-openapi.json, optimizely-web-experimentation-optimizely-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.optimizely.com/flags/v1/
- url: https://api.optimizely.com/v2
security:
- apiKey: []
- OAuth2:
  - read
  - write
tags:
- description: APIs to interact with Reports
  name: Reports
paths:
  /projects/{project_id}/environments/{environment_key}/reports:
    get:
      description: 'Get a list of Reports for a specific Environment of a project


        You can use query parameters to filter/sort the response.

        '
      operationId: list_reports
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/environmentKey'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/pageToken'
      - $ref: '#/components/parameters/pageWindow'
      - allowReserved: true
        description: 'Sort the Reports based on the attributes from left to right.

          '
        in: query
        name: sort
        required: false
        schema:
          items:
            enum:
            - name:asc
            - name:desc
            - key:asc
            - key:desc
            - created_time:asc
            - created_time:desc
            - updated_time:asc
            - updated_time:desc
            type: string
          type: array
      - description: 'Filter the Reports by archived field status. A Report can be either archived (archived=true) or unarchived (archived=false)

          '
        in: query
        name: archived
        required: false
        schema:
          type: boolean
      - description: 'Filter the Reports by name, key, or description substring

          '
        in: query
        name: query
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reports'
          description: 'Successful retrieval of a page of Reports.


            The response includes RESTful JSON (https://restfuljson.org/) styled links and pagination metadata.

            Objects in this API MAY include a url property for a link to itself and MAY append _url to properties for related links.

            If a link is not present in the response, it indicates a user is not authorized to access the related resource.

            '
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
      summary: List Reports
      tags:
      - Reports
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /projects/{project_id}/environments/{environment_key}/reports/archived:
    post:
      description: 'Archive one or more Reports in an Environment of a Project.


        This operation corresponds to the `archive_url` in a Reports response.

        '
      operationId: archive_reports
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/environmentKey'
      requestBody:
        content:
          application/json:
            example:
              keys:
              - landing_page_callout_N6JU6FJ2YiMdujucr6R6uf
            schema:
              $ref: '#/components/schemas/BulkOperationsRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                landing_page_callout_N6JU6FJ2YiMdujucr6R6uf:
                  archived: true
                  created_time: '2021-02-03 19:57:31.418350+00:00'
                  delete_url: /projects/23004/environments/development/reports/landing_page_callout_kK2mpgdxRMRRXx6dZkFLsB
                  description: null
                  fetch_flag_url: /projects/23004/flags/recurring_deposit
                  fetch_results_api_url: https://api.develrc-app.optimizely.com/experiments/9000000010001/results
                  fetch_results_ui_url: https://app.optimizely.test/v2/projects/23004/results/9000000010001/experiments/9000000010001
                  flag_key: recurring_deposit
                  flag_name: Recurring Deposit
                  flag_state: unarchived
                  id: 1
                  key: landing_page_callout_N6JU6FJ2YiMdujucr6R6uf
                  name: Landing Page Callout
                  reset_results_url: /projects/23004/environments/development/reports/landing_page_callout_kK2mpgdxRMRRXx6dZkFLsB/reset-results
                  rule_key: landing_page_callout
                  rule_name: Landing Page Callout
                  rule_state: enabled
                  start_time: '2021-02-03 21:52:58.603598+00:00'
                  type: a/b
                  unarchive_url: /projects/23004/environments/development/reports/unarchived
                  updated_time: '2021-02-03 21:53:01.735777+00:00'
                  url: /projects/23004/environments/development/reports/landing_page_callout_kK2mpgdxRMRRXx6dZkFLsB
                  urn: reports.flags.optimizely.com::1
              schema:
                $ref: '#/components/schemas/ReportMap'
          description: 'Successful archive of Reports.


            The response includes RESTful JSON (https://restfuljson.org/) styled links. If a

            link is not present in the response, it indicates a user is not authorized to access

            the related resource.

            '
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '409':
          $ref: '#/components/responses/ConflictResponse'
      summary: Archive Reports
      tags:
      - Reports
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /projects/{project_id}/environments/{environment_key}/reports/unarchived:
    post:
      description: 'Unarchive one or more Reports in an Environment of a Project.


        This operation corresponds to the `unarchive_url` in a Reports response.

        '
      operationId: unarchive_reports
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/environmentKey'
      requestBody:
        content:
          application/json:
            example:
              keys:
              - landing_page_callout_N6JU6FJ2YiMdujucr6R6uf
            schema:
              $ref: '#/components/schemas/BulkOperationsRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                landing_page_callout_N6JU6FJ2YiMdujucr6R6uf:
                  archived: false
                  created_time: '2021-02-03 19:57:31.418350+00:00'
                  delete_url: /projects/23004/environments/development/reports/landing_page_callout_kK2mpgdxRMRRXx6dZkFLsB
                  description: null
                  fetch_flag_url: /projects/23004/flags/recurring_deposit
                  fetch_results_api_url: https://api.develrc-app.optimizely.com/experiments/9000000010001/results
                  fetch_results_ui_url: https://app.optimizely.test/v2/projects/23004/results/9000000010001/experiments/9000000010001
                  flag_key: recurring_deposit
                  flag_name: Recurring Deposit
                  flag_state: unarchived
                  id: 1
                  key: landing_page_callout_N6JU6FJ2YiMdujucr6R6uf
                  name: Landing Page Callout
                  reset_results_url: /projects/23004/environments/development/reports/landing_page_callout_kK2mpgdxRMRRXx6dZkFLsB/reset-results
                  rule_key: landing_page_callout
                  rule_name: Landing Page Callout
                  rule_state: enabled
                  start_time: '2021-02-03 21:52:58.603598+00:00'
                  type: a/b
                  unarchive_url: /projects/23004/environments/development/reports/unarchived
                  updated_time: '2021-02-03 21:53:01.735777+00:00'
                  url: /projects/23004/environments/development/reports/landing_page_callout_kK2mpgdxRMRRXx6dZkFLsB
                  urn: reports.flags.optimizely.com::1
              schema:
                $ref: '#/components/schemas/ReportMap'
          description: 'Successful unarchive of Reports.


            The response includes RESTful JSON (https://restfuljson.org/) styled links. If a

            link is not present in the response, it indicates a user is not authorized to access

            the related resource.

            '
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '409':
          $ref: '#/components/responses/ConflictResponse'
      summary: Unarchive Reports
      tags:
      - Reports
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /projects/{project_id}/environments/{environment_key}/reports/{report_key}:
    delete:
      description: 'Permanently delete a Report by key in an Environment of a project


        There will be no way to access this data after deletion. If you want to

        stop seeing a Report without deleting it permanently, try archiving

        instead.

        '
      operationId: delete_report
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/environmentKey'
      - $ref: '#/components/parameters/reportKey'
      responses:
        '204':
          $ref: '#/components/responses/NoContentResponse'
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
      summary: Delete a Report
      tags:
      - Reports
    get:
      description: 'Fetch a single Report in an Environment of a Project by its key.


        This operation corresponds to the `fetch_report_url` in a Report response.

        '
      operationId: fetch_report
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/environmentKey'
      - $ref: '#/components/parameters/reportKey'
      responses:
        '200':
          $ref: '#/components/responses/ReportSuccessResponse'
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
      summary: Fetch a Single Report
      tags:
      - Reports
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /projects/{project_id}/environments/{environment_key}/reports/{report_key}/reset-results:
    post:
      description: 'Resetting the results for a Report will clear all the current results and results will be calculated from this point onwards.

        Use caution with this operation as there will be no way to access any previous results.

        '
      operationId: reset_results
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/environmentKey'
      - $ref: '#/components/parameters/reportKey'
      responses:
        '200':
          $ref: '#/components/responses/ReportSuccessResponse'
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
      summary: Reset the results for a Report
      tags:
      - Reports
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /experiments/{experiment_id}/report:
    get:
      description: Gets the outcome of the experiment as inferred by the Optimizely system upon the evaluation of variations that may or may not have reached statistical significance.
      operationId: get_experiment_report
      parameters:
      - description: The ID for the Experiment you want to generate reports 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/ExperimentResultsReport'
          description: Return Experiment Result's Report
        '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 Result's Report
      tags:
      - Reports
      x-release-state: alpha
    servers:
    - url: https://api.optimizely.com/v2
components:
  responses:
    NoContentResponse:
      description: No content in the response
    ConflictResponse:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetail'
      description: Conflicting resource state with requested action
    NotFoundResponse:
      description: Not found. No content
    ReportSuccessResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Report'
      description: 'Successful retrieval of a Report.


        The response includes RESTful JSON (https://restfuljson.org/) styled links. If a

        link is not present in the response, it indicates a user is not authorized to access

        the related resource.

        '
    BadRequestResponse:
      content:
        application/problem+json:
          example:
            detail: Another entity already exists with this same key
            status: 400
            title: Key example_entity already exists"
            uuid: 42c4c855-42f2-4c9a-8544-37b3dff706d2
          schema:
            $ref: '#/components/schemas/ProblemDetail'
      description: Malformed requests and invalid parameter names and types
    ForbiddenResponse:
      content:
        application/problem+json:
          example:
            detail: Permission denied
            status: 403
            title: Forbidden
          schema:
            $ref: '#/components/schemas/ProblemDetail'
      description: Do not have permission to perform the operation
    UnauthorizedResponse:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetail'
      description: Invalid credentials
  schemas:
    Report:
      description: Report with results for the active rule for a flag in a project.
      properties:
        archive_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to archive this Report
          example: '...'
          readOnly: true
        archived:
          description: Indicates if the Report is archived or not
          example: false
          type: boolean
        created_time:
          description: Timestamp when the Report is created
          example: '2019-05-08T00:00:00.000Z'
          format: date-time
          readOnly: true
          type: string
        delete_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to delete this Report
          example: '...'
          readOnly: true
        description:
          description: Additional context of the Report
          example: Detailed context about the report is here.
          type: string
        distribution_mode:
          description: Type of rule distribution
          enum:
          - manual
          - stats_accelerator
          readOnly: true
          type: string
        end_time:
          description: Timestamp until when the Report is computed
          example: '2019-05-08T00:00:00.000Z'
          format: date-time
          readOnly: true
          type: string
        fetch_flag_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to flag url to which this report belongs to
          example: '...'
          readOnly: true
        fetch_results_api_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the results API associated with this Report
          example: '...'
          readOnly: true
        fetch_results_ui_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the results UI associated with this Report
          example: '...'
          readOnly: true
        flag_key:
          description: The Key of the Flag this report belongs to
          example: recurring_deposit
          readOnly: true
          type: string
        flag_name:
          description: The Name of the Flag this report belongs to
          example: Recurring Deposit
          readOnly: true
          type: string
        id:
          description: System generated Unique ID of the Report
          example: 45633910
          readOnly: true
          type: integer
        key:
          description: User-facing Unique identifier of the Report. Same as rule key with report ID appended.
          example: paid_users-45633910
          readOnly: true
          type: string
        layer_experiment_id:
          description: Experiment ID or Layer Experiment of a rule
          readOnly: true
          type: integer
        name:
          description: User-facing name of the Report. Same as rule name.
          example: Paid Users
          type: string
        primary_metric:
          description: The first metric in the list of metrics.
          example: conversion_rate
          readOnly: true
          type: string
        reset_results_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to reset results associated with this Report
          example: '...'
          readOnly: true
        revision:
          description: Revision number for tracking changes
          readOnly: true
          type: integer
        role:
          description: Granular permission role
          example: admin
          readOnly: true
          type: string
        rule_description:
          description: The description of the Rule this report belongs to
          example: Paid Users description
          readOnly: true
          type: string
        rule_key:
          description: The Key of the Rule this report belongs to
          example: paid_users
          readOnly: true
          type: string
        rule_name:
          description: The Name of the Rule this report belongs to
          example: Paid Users
          readOnly: true
          type: string
        rule_state:
          description: State of the Rule this report belong to
          example: deleted
          readOnly: true
          type: string
        start_time:
          description: Timestamp from when the Report is computed
          example: '2019-05-08T00:00:00.000Z'
          format: date-time
          readOnly: true
          type: string
        type:
          description: Type of report.
          enum:
          - a/b
          - multi_armed_bandit
          example: a/b
          readOnly: true
          type: string
        unarchive_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to unarchive this Report
          example: '...'
          readOnly: true
        updated_time:
          description: Timestamp when the Report is last updated
          example: '2019-05-08T00:00:00.000Z'
          format: date-time
          readOnly: true
          type: string
        url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to self
          example: '...'
          readOnly: true
        urn:
          description: The URN for the Report
          example: reports.flag.optimizely.com::45633910
          readOnly: true
          type: string
      required:
      - id
      - urn
      - key
      - name
      - flag_key
      - rule_key
      - type
      - created_time
      - updated_time
      - url
      type: object
    BulkOperationsRequestBody:
      properties:
        keys:
          description: The list of resource keys to perform the desired operation
          items:
            type: string
          type: array
      type: object
    ReportMap:
      additionalProperties:
        $ref: '#/components/schemas/Report'
      description: Map of reports that include report key as key and report payload as value.
      type: object
    Reports:
      description: Summary of the Reports for Flags in a project
      properties:
        count:
          description: Number of Reports on the current page.
          example: 1
          type: integer
        fetch_report_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: 'A url template to be used to find a particular Report.

            '
          example: '...'
        filter_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the default page of Reports with filter '.../{?filter}'
          example: '...'
        first_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to first page of Reports in a series.
          example: '...'
        items:
          items:
            $ref: '#/components/schemas/Report'
          type: array
        last_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the last page of Reports in a series.
          example: '...'
        next_url:
          allOf:
          - $ref: '#/components/schemas/UrlList'
          description: "List of links to next pages of Reports in a series.\n\n The first element in the array is the exact next page after the current record, etc.\n"
          example: '...'
        page:
          description: Number of the current page. 1-index based.
          example: 1
          type: integer
        prev_url:
          allOf:
          - $ref: '#/components/schemas/UrlList'
          description: 'List of links to previous pages of Reports in a series.


            The first element in the array is the exact previous page before the current record, etc.

            '
          example: '...'
        reset_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the default page of Reports
          example: '...'
        sort_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the default page of Reports with sort '.../{?sort}'
          example: '...'
        total_count:
          description: Total number of Reports.
          example: 1
          type: integer
        total_pages:
          description: Total number of pages for this series.
          example: 1
          type: integer
        url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to self
          example: '...'
      required:
      - url
      - first_url
      - last_url
      - count
      - page
      - total_count
      - total_pages
      - items
      type: object
    UrlValue:
      description: A single url.
      type: string
    ProblemDetail:
      additionalProperties: true
      description: https://tools.ietf.org/html/rfc7807#section-3.1
      properties:
        detail:
          description: A human-readable explanation specific to this occurrence of the problem.
          type: string
        status:
          description: The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.
          type: integer
        title:
          description: A short, human-readable summary of the problem type.
          type: string
        type:
          description: A URI reference [RFC3986] that identifies the problem type. Contains 'about:blank' if unspecified.
          type: string
        uuid:
          description: Error reference for customer support
          type: string
      required:
      - detail
      - status
      - title
      - type
      type: object
    UrlList:
      description: A list of urls.
      items:
        type: string
      type: array
    Error:
      properties:
        code:
          type: string
        message:
          type: string
        messages:
          type: object
        uuid:
          format: uuid
          type: string
      type: object
    ExperimentResultsReport:
      properties:
        end_time:
          description: End of the time interval (exclusive) used to generate the report. The time is formatted in ISO 8601.
          format: date-time
          readOnly: true
          type: string
        experiment_id:
          description: The unique identifier for the Experiment for which the report is to be generated.
          example: 3000
          format: int64
          type: integer
        inferred_outcome:
          description: Outcome of the experiment as inferred by the Optimizely system upon the evaluation of variations that may or may not have reached statistical significance.
          enum:
          - win
          - loss
          - inconclusive
          readOnly: true
          type: string
        start_time:
          description: Start of the time interval (inclusive) used to generate the reports. The time is formatted in ISO 8601.
          format: date-time
          type: string
      type: object
  parameters:
    environmentKey:
      description: The Environment identifier
      example: production
      in: path
      name: environment_key
      required: true
      schema:
        type: string
    projectId:
      description: The project identifier
      example: 12345
      in: path
      name: project_id
      required: true
      schema:
        type: integer
    pageWindow:
      description: Number of previous and next page links to supply for the request (defaults to 1).
      in: query
      name: page_window
      schema:
        type: integer
    reportKey:
      description: The Report identifier. Get the key from the List Reports endpoint (key is not displayed in the Optimizely app)
      example: paid_users_45633910
      in: path
      name: report_key
      required: true
      schema:
        type: string
    pageToken:
      description: Pagination page token. Implements prev, next, last, first
      in: query
      name: page_token
      schema:
        type: string
    perPage:
      description: The max number of items to include per page or results.
      in: query
      name: per_page
      schema:
        format: int64
        type: integer
    device_segment:
      description: Device to segment results by. This parameter must not be sent with any other segmentation parameters, i.e. any parameters in [browser, source, attribute_id, attribute_value].
      in: query
      name: device
      schema:
        enum:
        - desktop
        - ipad
        - iphone
        - mobile
        - tablet
        type: string
    attribute_id_segment:
      description: 'ID of the attribute to segment results by. Requests containing attribute_id will return the results for all visitors that have attribute_value for the attribute represented by attribute_id. If present, the attribute_value parameter must also be present, and it cannot be sent with any other segmentation parameters, i.e. any parameters in [browser, device, source].

        '
      in: query
      name: attribute_id
      schema:
        format: int64
        type: integer
    browser_segment:
      description: Browser to segment results by. This parameter must not be sent with any other segmentation parameters, i.e. any parameters in [device, source, attribute_id, attribute_value].
      in: query
      name: browser
      schema:
        enum:
        - firefox
        - chrome
        - internet_explorer
        - opera
        - safari
        type: string
    segment_conditions:
      description: '(BETA) A string representation of a JSON Segment Conditions Expression. This parameter can be either URL-escaped stringified JSON or Base64-encoded stringified JSON using URL-safe alphabet (preferred).

        Segment Conditions Expressions consist of Logical Expressions and Match Expressions.

        Logical Expressions are represented as an array of the format [<operator>, <expression>...], where the supported operators are "and", "or" and "not".

        Match Expressions are represented as an object of the format {"attribute_id": <attribute_id>, "attribute_value": <value>[, "match_type": <match_type>]}, where supported values for match_type are "exact" match type will match only an exact string match between "value" string and the attribute value. "substring" match type will match if "value" is a substring of the attribute value. "prefix" match type will match if "value" is a string prefix of the attribute value. "regex" match type will match if "value" is a regular expression match for the attribute value. The default match_type is "exact".

        '
      in: query
      name: segment_conditions
      schema:
        type: string
    source_segment:
      description: 'Source to segment results by. This parameter must not be sent with any other segmentation parameters, i.e. any parameters in [browser, device, attribute_id, attribute_value].

        Campaign: Contains users that arrive on a URL containing a ''utm_campaign,'' ''utm_source,'

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