Convert Experiences API

Convert Experiences provides a couple different experiences types. A/B, Split URL, Multivariate (MVT), Deploys, A/A and Multi-page (funnel) testing. To learn more, see Six experience types in Convert Experiences.

Operations 13

POST /accounts/{account_id}/projects/{project_id}/experiences List experiences within a project #
GET /accounts/{account_id}/projects/{project_id}/experiences/{experience_id} Get details for a specific experience #
GET /accounts/{account_id}/projects/{project_id}/experiences/{experience_key} Get experience details by its unique key #
POST /accounts/{account_id}/projects/{project_id}/experiences/add Create a new experience #
POST /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/clone Clone an existing experience #
POST /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/update Update an existing experience #
DELETE /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/delete Delete an experience #
POST /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/report_token Manage report access token for an experience #
POST /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/livedata Get live tracking events for a specific experience #
POST /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/change-history Get change history for a specific experience #
POST /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/trigger-screenshots Trigger screenshot generation for experience variations #
POST /accounts/{account_id}/projects/{project_id}/experiences/bulk-update Update multiple experiences at once #
POST /accounts/{account_id}/projects/{project_id}/experiences/bulk-delete Delete multiple experiences at once #

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/convert-experiences-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

convert-experiences-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Convert Accounts Experiences API
  description: 'Move your app forward with the Convert API. The Convert API allows

    you to manage your Convert Experiences projects using code. The REST API is

    an interface for managing and extending functionality of Convert. For

    example, instead of creating and maintaining projects using the Convert

    Experiences web dashboard you can create an experiment programmatically.

    Additionally, if you prefer to run custom analysis on experiment results you

    can leverage the API to pull data from Convert Experiences into your own

    workflow. If you do not have a Convert account already, sign up for a free

    developer account at https://www.convert.com/api/.


    *[Convert API V1](/doc/v1) is still available and documentation can be found [here](/doc/v1) but using it is highly discouraged

    as it will be phased out in the future*

    '
  version: 2.0.0
servers:
- url: https://api.convert.com/api/v2
  description: Live API server
- url: https://apidev.convert.com/api/v2
  description: DEV API server
- url: http://apidev.convert.com:5000/api/v2
  description: DEV mocked API server
tags:
- name: Experiences
  description: Convert Experiences provides a couple different experiences types. A/B, Split URL, Multivariate (MVT), Deploys, A/A and Multi-page (funnel) testing. To learn more, see <a href="https://support.convert.com/hc/en-us/articles/204494049">Six experience types in Convert Experiences.</a>
paths:
  /accounts/{account_id}/projects/{project_id}/experiences:
    post:
      operationId: getExperiencesList
      summary: List experiences within a project
      description: 'Retrieves a list of all experiences (A/B tests, MVT, Split URL, Deployments, etc.) within a specific project.

        Supports filtering by status, type, tags, and other criteria. Pagination is also supported.

        The `include` parameter can fetch related data like `variations` or `goals`. The `expand` parameter can provide full objects for linked entities.

        The Knowledge Base article "The Experience Overview Screen" describes the UI equivalent.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/GetExperiencesListRequest'
      responses:
        '200':
          $ref: '#/components/responses/ExperiencesListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}:
    get:
      operationId: getExperience
      summary: Get details for a specific experience
      description: 'Retrieves comprehensive details for a single experience, identified by its `experience_id`.

        This includes its configuration (name, type, URL, status), associated audiences, locations, goals, variations, and integration settings.

        The `include` and `expand` parameters allow fetching more detailed related data.

        The Knowledge Base article "Experience Summary" describes the UI equivalent of this data.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: experience_id
        description: The ID of the experience to be retrieved
        in: path
        required: true
        schema:
          type: integer
      - name: report_token
        in: header
        required: false
        description: Token to access the experience report in read-only mode.
        schema:
          type: string
      - name: include
        description: 'Array parameter that would mention extra fields to be included into the response; otherwise those fields would be excluded by default


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceIncludeFields'
      - name: expand
        description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.


          Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceExpandFields'
      responses:
        '200':
          $ref: '#/components/responses/ExperienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_key}:
    get:
      operationId: getExperienceByKey
      summary: Get experience details by its unique key
      description: 'Retrieves comprehensive details for a single experience, identified by its user-defined `experience_key` instead of its numerical ID.

        This is useful when you have a human-readable key for an experience.

        Functionality and parameters are otherwise similar to getting an experience by ID.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: experience_key
        description: The key of the experience to be retrieved
        in: path
        required: true
        schema:
          type: string
      - name: include
        description: 'Array parameter that would mention extra fields to be included into the response; otherwise those fields would be excluded by default


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceIncludeFields'
      - name: expand
        description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.


          Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceExpandFields'
      responses:
        '200':
          $ref: '#/components/responses/ExperienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/add:
    post:
      operationId: createExperience
      summary: Create a new experience
      description: 'Creates a new experience (e.g., A/B test, Split URL test, MVT, Deploy, A/A test, Multi-page Funnel) within a project.

        Requires defining the experience name, type, status (usually ''draft''), and the URL for the Visual Editor or original page.

        Variations, audiences, locations, goals, and other settings can be specified during creation.

        The Knowledge Base article "Create a New Experience" outlines the UI process.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: include
        description: 'Specifies the list of optional objects which would be included in the response.


          Read more in the section related to [Expanding Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceIncludeFields'
      - name: expand
        description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.


          Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceExpandFields'
      requestBody:
        $ref: '#/components/requestBodies/CreateExperienceRequest'
      responses:
        '201':
          $ref: '#/components/responses/ExperienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/clone:
    post:
      operationId: cloneExperience
      summary: Clone an existing experience
      description: 'Creates a new experience as an identical copy of an existing one (specified by `experience_id`).

        This is useful for iterating on a previous test or using an existing experience as a template.

        The cloned experience starts in ''draft'' status and does not copy historical report data.

        The Knowledge Base article "How to Clone an Experiment?" describes this.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: experience_id
        description: The ID of the experience to be cloned
        in: path
        required: true
        schema:
          type: integer
      - name: include
        description: 'Specifies the list of optional objects which would be included in the response.


          Read more in the section related to [Expanding Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceIncludeFields'
      - name: expand
        description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.


          Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceExpandFields'
      requestBody:
        $ref: '#/components/requestBodies/CloneExperienceRequest'
      responses:
        '201':
          $ref: '#/components/responses/ExperienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/update:
    post:
      operationId: updateExperience
      summary: Update an existing experience
      description: 'Modifies the configuration of an existing experience.

        This can include changing its name, description, status (e.g., from ''draft'' to ''active'', or ''active'' to ''paused''), URL, traffic distribution, audiences, locations, goals, variations, and integration settings.

        The Knowledge Base article "How Can I Change Variations After Experiment Started?" notes that variations cannot be added/removed after start, but other settings can be updated.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: experience_id
        description: The ID of the updated experience
        in: path
        required: true
        schema:
          type: integer
      - name: include
        description: 'Specifies the list of optional objects which would be included in the response.


          Read more in the section related to [Expanding Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceIncludeFields'
      - name: expand
        description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.


          Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceExpandFields'
      requestBody:
        $ref: '#/components/requestBodies/UpdateExperienceRequest'
      responses:
        '200':
          $ref: '#/components/responses/ExperienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/delete:
    delete:
      operationId: deleteExperience
      summary: Delete an experience
      description: 'Permanently removes an existing experience and all its associated data from the project.

        This action is irreversible. It''s generally recommended to archive experiences instead of deleting them to preserve historical data.

        The Knowledge Base article "How Do I Archive / Delete an Experience?" highlights this.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: experience_id
        in: path
        required: true
        description: ID of the experience to be delete
        schema:
          type: integer
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/report_token:
    post:
      operationId: getReportToken
      summary: Manage report access token for an experience
      description: 'Generates, regenerates, or deletes a unique token that allows read-only access to an experience''s report.

        This is useful for sharing report data with stakeholders who do not have a Convert account or full project access.

        The token has an expiration time.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: experience_id
        description: ID of the Experience
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/ExperienceReportTokenRequest'
      responses:
        '200':
          $ref: '#/components/responses/ExperienceReportTokenResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/livedata:
    post:
      operationId: getExperienceLiveData
      summary: Get live tracking events for a specific experience
      description: 'Retrieves the last 100 tracking events (views, conversions, revenue) specifically for the given experience.

        Useful for real-time monitoring and QA of a single active experience. Supports filtering by event type and goals.

        The Knowledge Base article "Live Logs for Projects and Experiments in Convert" describes this feature.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the experience is stored
        schema:
          type: integer
      - name: experience_id
        in: path
        required: true
        description: ID of the Experience
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/GetExperienceLiveDataRequest'
      responses:
        '200':
          $ref: '#/components/responses/LiveDataEventsListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/change-history:
    post:
      operationId: getExperienceHistory
      summary: Get change history for a specific experience
      description: 'Retrieves a historical log of all changes made to a specific experience.

        This includes modifications to its settings, variations, audiences, goals, status, etc.

        Provides an audit trail for the lifecycle of an experience, filterable by date and user.

        The Knowledge Base article "Track User Changes with Change History" details this.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project to which save/retrieved data is connected
        schema:
          type: integer
      - name: experience_id
        in: path
        required: true
        description: ID of the Experience
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/GetExperienceHistoryRequest'
      responses:
        '200':
          $ref: '#/components/responses/ChangeHistoryListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/trigger-screenshots:
    post:
      operationId: triggerExperienceScreenshots
      summary: Trigger screenshot generation for experience variations
      description: 'Initiates the process of generating or regenerating screenshots for the variations of a specified experience.

        These screenshots are displayed in the Convert UI to help visualize the changes made in each variation.

        The Knowledge Base article "Whitelist IPs for Screenshot Previews" is related as it lists IPs our service uses.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project to which save/retrieved data is connected
        schema:
          type: integer
      - name: experience_id
        in: path
        required: true
        description: ID of the Experience
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/TriggerExperienceScreenshotsRequest'
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/bulk-update:
    post:
      operationId: bulkExperiencesUpdate
      summary: Update multiple experiences at once
      description: 'Allows for changing the status (e.g., activate, pause, archive) of multiple experiences within a project simultaneously.

        Requires a list of experience IDs and the target status.

        The Knowledge Base article "Bulk Actions on Experiences" describes this UI feature.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/BulkUpdateExperiencesRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/experiences/bulk-delete:
    post:
      operationId: bulkExperiencesDelete
      summary: Delete multiple experiences at once
      description: 'Permanently removes multiple experiences from a project in a single operation.

        Requires a list of experience IDs. This action is irreversible.

        The Knowledge Base article "Bulk Actions on Experiences" describes this UI feature.

        '
      tags:
      - Experiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/BulkDeleteExperiencesRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    AudienceTypesWithUrl:
      description: 'Defines the behavior for an audience that *includes* URL-based conditions in its rules.

        - `segmentation`: Once a visitor matches the audience criteria (which can include URL rules), they are tagged and permanently added to this segment. This segment membership persists across sessions and can be used for long-term targeting or analysis. URL rules are evaluated to determine initial entry into the segment.

        Knowledge Base: "A segment basically allows a visitor to qualify for an audience on subsequent visits even if they do not meet the audience conditions."

        '
      type: string
      enum:
      - segmentation
    ExperienceChangeId:
      description: Represents the unique identifier of an existing change within an experience variation. Used when updating or referencing a specific change.
      type: object
      additionalProperties: false
      properties:
        id:
          description: The unique numerical identifier for this specific change.
          type: integer
      required:
      - id
    DayOfWeekMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithDayOfWeekValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/DayOfWeekMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/NumericMatchingOptions'
    ExperienceChangeDefaultRedirectData:
      type: object
      description: Represents a 'defaultRedirect' type change, including its system-assigned ID.
      allOf:
      - $ref: '#/components/schemas/ExperienceChangeIdReadOnly'
      - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectDataBase'
      - type: object
        properties:
          concurrency_key:
            $ref: '#/components/schemas/ConcurrencyKey'
    TrackingScriptReleaseLatest:
      allOf:
      - $ref: '#/components/schemas/TrackingScriptReleaseBase'
      - type: object
        additionalProperties: false
        properties:
          type:
            enum:
            - latest
    ExperiencesList:
      type: array
      description: A list of experience objects.
      items:
        $ref: '#/components/schemas/Experience'
    ExperienceIntegrationClicky:
      allOf:
      - $ref: '#/components/schemas/ExperienceIntegrationBase'
    ExperienceChangeDefaultRedirectDataAdd:
      type: object
      description: Data for creating a new 'defaultRedirect' type change.
      allOf:
      - $ref: '#/components/schemas/ExperienceChangeIdReadOnly'
      - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectDataBase'
      - properties:
          data:
            required:
            - original_pattern
            - variation_pattern
        required:
        - type
        - data
    SortDirection:
      type: object
      properties:
        sort_direction:
          type: string
          nullable: true
          default: desc
          description: 'The direction for sorting the list results, based on the `sort_by` field.

            - `asc`: Ascending order (e.g., A-Z, 1-10, oldest to newest).

            - `desc`: Descending order (e.g., Z-A, 10-1, newest to oldest).

            Defaults to `desc` (newest/highest first) if not specified.

            '
          enum:
          - asc
          - desc
    GA_SettingsBase:
      type: object
      properties:
        enabled:
          type: boolean
          description: If true, integration with Google Analytics is enabled for this project or experience, allowing experiment data to be sent to GA.
    NumericOutlier:
      oneOf:
      - $ref: '#/components/schemas/NumericOutlierNone'
      - $ref: '#/components/schemas/NumericOutlierMinMax'
      - $ref: '#/components/schemas/NumericOutlierPercentile'
      discriminator:
        propertyName: detection_type
        mapping:
          none: '#/components/schemas/NumericOutlierNone'
          min_max: '#/components/schemas/NumericOutlierMinMax'
          percentile: '#/components/schemas/NumericOutlierPercentile'
    CustomDomainOwnershipVerificationItem:
      type: object
      properties:
        name:
          type: string
          description: The name of the DNS record.
        type:
          $ref: '#/components/schemas/DNSRecordTypes'
        value:
          type: string
          description: The value of the DNS record.
    ScrollPercentageGoalSettings:
      type: object
      additionalProperties: false
      properties:
        percentage:
          type: number
          description: The scroll depth percentage (e.g., 25, 50, 75, 100) that a visitor must reach on a page for this goal to trigger. The page(s) are defined in the goal's `triggering_rule`.
      required:
      - percentage
    ExperienceIntegrationEconda:
      allOf:
      - $ref: '#/components/schemas/ExperienceIntegrationBase'
    GetExperienceLiveDataRequestData:
      allOf:
      - $ref: '#/components/schemas/ExperienceLiveDataFilteringOptions'
      - $ref: '#/components/schemas/LiveDataExpandParameter'
    VisualEditorUserAgents:
      description: Predefined User-Agent strings that the Visual Editor can emulate for responsive design and device-specific testing.
      type: string
      nullable: true
      enum:
      - chrome_desktop
      - chrome_ipad
      - chrome_iphone
      - chrome_android
      - safari_mac
      - safari_ipad
      - safari_iphone
      - firefox_desktop
      - firefox_ipad
      - firefox_iphone
      - firefox_android
      - edge_desktop
      - edge_tablet
      - brave_desktop
      - brave_ipad
      - brave_iphone
      - brave_android
      - opera_desktop
      - opera_ipad
      - opera_iphone
      - opera_android
    ExperienceUserCustomizations:
      type: array
      description: A list of user-defined key-value pairs for customizing UI elements or behavior related to this experience within the Convert application itself. These do not affect the live experiment seen by visitors.
      items:
        $ref: '#/components/schemas/UserCustomization'
      maxItems: 100
    BaseMatch:
      type: object
      properties:
        negated:
          description: 'If `true`, the logical result of the match is inverted.

            For example, if `match_type` is ''contains'' and `value` is ''apple'', `negated: true` means the rule matches if the attribute *does not* contain ''apple''.

            '
          type: boolean
    MultipageExperiencePage:
      description: Defines a single page within a 'multipage' (funnel) experience.
      allOf:
      - type: object
        properties:
          id:
            description: The ID of the page.
            type: string
            minLength: 1
            maxLength: 2
            pattern: ^[0-9a-z]{1,2}$
          name:
            description: Name of the page
            type: string
            maxLength: 200
          url:
            description: The url of page to load
            type: string
            maxLength: 2048
        additionalProperties: false
    CloneExperienceRequestData:
      description: Parameters for cloning an experience.
      type: object
      properties:
        name:
          type: string
          description: (Optional) A new name for the cloned experience. If not provided, the name will be based on the original (e.g., "Copy of [Original Name]").
          maxLength: 100
    ExperienceIntegrationGA4Base:
      allOf:
      - $ref: '#/components/schemas/GA_SettingsBase'
      - $ref: '#/components/schemas/ExperienceIntegrationBase'
      - $ref: '#/components/schemas/IntegrationGA4Base'
    ExperienceSettings:
      allOf:
      - type: object
        description: Experience's settings list
        properties:
          split_url_settings:
            type: object
            description: A couple of settings only applicable to Split URL experiments
            properties:
              split_regex_support:
                type: boolean
                description: 'Whether regular expressions are supported in original/variation URLs of a split URL experiment or not.


                  It only applies to **experience_type** - **split_url**

                  '
              split_add_query_params:
                type: boolean
                description: 'Whether original/variation urls have incorporated or not the needed regular expression to copy query string

                  parameters from one to the other in the redirect process.


                  It only applies to **experience_type** - **split_url** and it''s only used internally in Convert''s app

                  '
              split_query_params_hide_regex:
                type: boolean
                description: 'Whether the user selected to hide or not the part of the regular expression automatically added by enabling **split_add_query_params**.


                  It only applies to **experience_type** - **split_url** and it''s only used internally in Convert''s app

                  '
          matching_options:
            type: object
            description: Various settings used for matching the list of Audiences and Locations
            properties:
              audiences:
                $ref: '#/components/schemas/GenericListMatchingOptions'
              locations:
                $ref: '#/components/schemas/GenericListMatchingOptions'
          visitor_insights:


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