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.
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.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/convert-experiences-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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