Convert Accounts API
Account is the entity that contains all data. An account is owned by an user and in which more other users can have different permissions, account wide or at project level
Account is the entity that contains all data. An account is owned by an user and in which more other users can have different permissions, account wide or at project level
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-accounts-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 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: Accounts
description: 'Account is the entity that contains all data. An account is owned by an user and in which more other users can have different permissions, account wide or at project level
'
paths:
/accounts:
get:
operationId: getAccountsList
summary: List accounts accessible to the user
description: 'Retrieves a list of all accounts the authenticated user has access to.
If using API key authentication, this typically returns the single account associated with the API key.
If using cookie-based authentication, it may return multiple accounts if the user is a collaborator on several.
An account is the top-level container for projects, billing, and user management.
'
tags:
- Accounts
responses:
'200':
$ref: '#/components/responses/AccountsListResponse'
/billing-plans:
get:
operationId: getBillingPlans
summary: List available billing plans
description: 'Retrieves a list of all active billing plans that an account can subscribe to.
Each plan defines usage limits (e.g., tested visitors, number of projects) and available features.
'
tags:
- Accounts
responses:
'200':
$ref: '#/components/responses/BillingPlansListResponse'
/accounts/{account_id}/livedata:
post:
operationId: getAccountLiveData
summary: Get live tracking events for an account
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account to be retrieved
schema:
type: integer
description: 'Retrieves the last 100 tracking events (e.g., experiment views, goal conversions) across all projects within the specified account.
Useful for real-time monitoring of activity. Supports filtering by event types and specific projects.
As per the Knowledge Base, "Live Logs in Convert track how end users are interacting with web pages and experiments...at a project and experiment level in real time."
'
requestBody:
$ref: '#/components/requestBodies/GetAccountLiveDataRequest'
responses:
'200':
$ref: '#/components/responses/LiveDataEventsListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/change-history:
post:
operationId: getAccountHistory
summary: Get change history for an account
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
description: 'Retrieves a historical log of changes made within the specified account, such as modifications to account settings or billing.
This provides an audit trail for account-level activities.
The Knowledge Base states, "The Change History shows a record of user activity for each of your projects." This extends to account changes.
'
requestBody:
$ref: '#/components/requestBodies/GetAccountHistoryRequest'
responses:
'200':
$ref: '#/components/responses/ChangeHistoryListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/experiences:
post:
operationId: getAccountActiveCompletedExperiencesList
summary: List active and completed experiences for an account
description: 'Retrieves a list of all active and completed experiences (A/B tests, personalizations, etc.) across all projects within the specified account.
Allows filtering to narrow down results. Useful for an overview of ongoing and finished optimization activities at the account level.
'
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/GetAccountActiveCompletedExperiencesListRequest'
responses:
'200':
$ref: '#/components/responses/ExperiencesListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/details:
get:
operationId: getAccountDetails
summary: Get details for a specific account
description: 'Retrieves detailed information about a specific account, including its settings, billing status, and usage limits.
The `include` parameter can be used to fetch additional related data, like active project counts.
'
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: include
in: query
required: false
description: 'Specifies the list of fields to be included in the response, which otherwise would not be sent.
Read more in the section related to [Optional Fields](#tag/Optional-Fields)
'
schema:
type: array
items:
$ref: '#/components/schemas/AccountDetailsIncludeFields'
responses:
'200':
$ref: '#/components/responses/AccountDetailsResponse'
post:
operationId: updateAccountDetails
summary: Update details for a specific account
description: 'Modifies the settings or billing information for a specific account.
This can include updating company details, contact information, or billing preferences.
'
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/UpdateAccountDetailsRequest'
responses:
'200':
$ref: '#/components/responses/AccountDetailsResponse'
/accounts/{account_id}/sub-accounts/add:
post:
operationId: createSubAccount
summary: Create a new sub-account
description: 'Creates a new sub-account under the specified parent main account.
Sub-accounts inherit certain properties and limits from the parent but can have their own users and projects.
This is typically used by agencies or larger organizations to manage client accounts or departmental usage separately.
'
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the parent account under which the sub-account is being created.
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/CreateSubAccountRequest'
responses:
'200':
$ref: '#/components/responses/AccountDetailsResponse'
/accounts/{account_id}/addons:
post:
operationId: requestAccountAddons
summary: Request add-ons for an account
description: 'Allows requesting specific add-on features or services for an account, such as premium support tiers or specialized training.
'
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account for which the addons will be requested
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/RequestAccountAddonsRequest'
responses:
'200':
$ref: '#/components/responses/SuccessResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/payment-setup:
post:
operationId: startPaymentSetup
summary: Initiate payment method setup
description: 'Starts a secure session with the payment provider (e.g., Stripe) to set up or update an account''s payment method.
Returns a client secret or token that the frontend UI uses to complete the payment setup process directly with the provider.
'
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account for which the payment setup will be started
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/StartPaymentSetupRequest'
responses:
'200':
$ref: '#/components/responses/StartPaymentSetupResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/billing-portal:
get:
operationId: getAccountBillingPortal
summary: Get billing portal URL
description: 'Returns an authenticated Paddle billing portal URL for the given account.
The URL takes the customer to the Paddle billing portal where they can
check subscriptions, view or download invoices.
'
tags:
- Accounts
parameters:
- $ref: '#/components/parameters/AccountId'
responses:
'200':
$ref: '#/components/responses/BillingPortalResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/plan_setup/users:
get:
operationId: BillingPlanSetupUsers
summary: Get users for billing plan setup notification
description: 'Retrieves a list of users associated with an account, typically for the purpose of notifying them about billing plan setup or changes.
Used internally for account management workflows.
'
tags:
- Accounts
parameters:
- name: account_id
in: path
required: true
description: ID of the account for which the plan setup users will be returned
schema:
type: integer
responses:
'200':
$ref: '#/components/responses/PlanSetupUsersResponse'
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
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'
SubAccountProductsCreate:
type: object
properties:
billing:
type: object
required:
- products
properties:
products:
type: object
description: Specifies initial plan subscriptions for Convert products.
required:
- experiences
properties:
experiences:
type: object
description: Initial plan for the 'Experiences' product.
required:
- plan
properties:
plan:
required:
- product
- usageLimits
allOf:
- $ref: '#/components/schemas/SubAccountBillingPlanData'
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
AccountDetails:
oneOf:
- $ref: '#/components/schemas/MainAccountDetails'
- $ref: '#/components/schemas/SubAccountDetails'
discriminator:
propertyName: accountType
mapping:
main: '#/components/schemas/MainAccountDetails'
sub: '#/components/schemas/SubAccountDetails'
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.
PaymentMethodPaypal:
type: object
description: PayPal payment method data
properties:
method:
type: string
enum:
- paypal
description: Payment method type identifier
data:
type: object
description: PayPal payment method data (empty for now)
additionalProperties: false
required:
- method
- data
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'
Products:
description: 'The Convert product line this billing plan pertains to.
- `experiences`: Relates to A/B testing, MVT, Split URL, and personalization features.
- `deploy`: Relates to the "Deploy" feature for rolling out changes to specific audiences without A/B testing reports. Knowledge Base: "Deployments have the potential to contain small segments...and this could be interpreted by Privacy Authorities in Europe as identification of data subjects."
- `addons`: Relates to add-on products that extend the core platform capabilities.
'
type: string
enum:
- experiences
- deploy
- addons
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
SubAccountBillingPlanLimitsAndCapabilities:
allOf:
- $ref: '#/components/schemas/BillingPlanLimitsAndCapabilitiesBase'
- type: object
properties:
usageLimits:
type: object
required:
- domains
- goals
- deploys
- projects
- segments
- testedUsers
properties:
domains:
required:
- limitValue
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of domains that can be created **inside all the projects that belong to the account**
goals:
required:
- limitValue
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of active goals that can be created **inside one single project**
deploys:
required:
- limitValue
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of active deploys that can be created **inside all the projects that belong to the account**
projects:
required:
- limitValue
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of projects that can be created **inside the account**
segments:
required:
- limitValue
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of segments that can be created **inside one single project**
pageViews:
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of pageViews that can be tracked **inside the account**
deprecated: true
testedVisitors:
required:
- limitValue
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of tested visitors that can be tracked **inside the account**
testedUsers:
required:
- limitValue
allOf:
- $ref: '#/components/schemas/BillingUsageLimitBase'
description: This limits the number of tested users that can be tracked **inside the account**
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
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:
type: object
readOnly: true
description: 'Visitor Insights (Signals) settings for this experience. Heatmap IDs are stored here when heatmaps are created for the experience''s variations.
'
nullable: true
properties:
heatmaps:
type: object
readOnly: true
description: Map of variation ID to heatmap ID. Populated when heatmaps are created for this experience (one heatmap per variation).
additionalProperties:
type: string
description: Heatmap ID for the variation.
nullable: true
example:
'1003100122': 507f1f77bcf86cd799439012
- $ref: '#/components/schemas/ExperienceReportingSettings'
MetricTypes:
type: string
description: 'The primary types of performance metrics calculated by the reporting engine for each goal.
- `conversion_rate`: The percentage of visitors who completed the goal (Conversions / Visitors).
- `avg_revenue_visitor`: Average Revenue Per Visitor (RPV = Total Revenue / Total Visitors). Applicable for revenue goals.
- `avg_products_ordered_visitor`: Average Products Per Visitor (APPV = Total Products Ordered / Total Visitors). Applicable for revenue goals tracking product counts.
- `average_order_value`: Average Order Value (AOV = Total Revenue / Total Conversions). Applicable for revenue goals tracking order value.
- `average_products_per_order`: Average Products Per Order (APPO = Total Products Ordered Per Visitor / Total Conversions). Applicable for revenue goals tracking product counts.
Knowledge Base: "Understanding Report Metrics in Convert".
'
enum:
- conversion_rate
- avg_revenue_visitor
- avg_products_ordered_visitor
- average_order_value
- average_products_per_order
AccountsListResponseData:
type: object
description: Response containing a list of accounts accessible to the authenticated user. For paginated results, refer to specific endpoint documentation if applicable.
properties:
data:
$ref: '#/components/schemas/AccountsList'
HourOfDayMatchRulesTypes:
type: string
enum:
- local_time_hour_of_day
- project_time_hour_of_day
BaseRuleWithGoalTriggeredValue:
allOf:
- $ref: '#/components/schemas/BaseRule'
- type: object
properties:
value:
description: ID of the goal used for matching
type: number
BillingPlanLimitsAndCapabilitiesBase:
type: object
properties:
usage_limit_by:
allOf:
- readOnly: true
- $ref: '#/components/schemas/BillingPlanBillByEnum'
availableFeaturesNiceNames:
description: A list of human-readable names for features enabled by this plan (e.g., 'advanced_segmentation', 'api_access', 'multivariate_testing').
readOnly: true
type: array
items:
type: string
enum:
- advanced_segmentation
- api
- basic_segmentation
- change_history
- chat support
- custom_domains
- cookie_targeting
- csv_export
- experience_raw_export
- dmp_profiling
- email_support
- geo_targeting
- kissmetrics_integration
- live_data
- multipage_experience
- multivariate_testing
- phone_support
- scroll_goal
- single_sign_on
- triggered_goal_targeting
- weather_targeting
- experience_report_predictions
- collaborators
- forum_access
- fullstack
- bayesian_stats
- ve_ai_text
- create_subaccounts
- sequential_testing
- other_goals_test_progress
- export_project
- import_project
- experience_collaborators
- bulk_actions
- dynamic_web_triggers
- advanced_tracking_script_release
- remove_report_data
- mab
- composed_audience
- visitor_insights
- visitor_data
- ui_widgets
- ve_version_history
TrackingScriptReleaseManual:
allOf:
- $ref: '#/components/schemas/TrackingScriptReleaseBase'
- type: object
additionalProperties: false
properties:
type:
enum:
- manual
ClicksLinkGoal:
allOf:
- $ref: '#/components/schemas/GoalBase'
- type: object
properties:
type:
enum:
- clicks_link
settings:
$ref: '#/components/schemas/ClicksLinkGoalSettings'
ExperienceChangeIdReadOnly:
description: Represents the unique identifier of a change, typically when returned by the API after creation or in a list.
type: object
properties:
id:
description: The unique numerical identifier for this specific change.
type: integer
readOnly: true
Account:
oneOf:
- $ref: '#/components/schemas/MainAccount'
- $ref: '#/components/schemas/SubAccount'
discriminator:
propertyName: accountType
mapping:
main: '#/components/schemas/MainAccount'
sub: '#/components/schemas/SubAccount'
ExperienceIntegrationMouseflow:
allOf:
- $ref: '#/components/schemas/ExperienceIntegrationBase'
SimpleGoal:
type: object
properties:
id:
description: The unique numerical identifier of the goal.
type: integer
name:
description: The user-defined, friendly name of the goal.
type: string
PaymentMethodInvoice:
type: object
description: Invoice payment method data
properties:
method:
type: string
enum:
- invoice
description: Payment method type identifier
data:
type: object
description: Invoice payment method data (empty for now)
additionalProperties: false
required:
- method
- data
ExperienceIncludeFields:
type: string
enum:
- alerts
- goals
- stats
- variations
- variations.changes
- min_running_timestamp
- max_running_timestamp
- audiences
- locations
- collaborators
SubAccountCreate:
allOf:
- $ref: '#/components/schemas/SubAccountDetailsBase'
- $ref: '#/components/schemas/SubAccountProductsCreate'
- type: object
properties:
accountType:
readOnly: true
userName:
type: string
description: Name of the user that would own this account.
userEmail:
type: string
description: 'Email of the user that would own this account. If the an user exists with that email, the respective user would be used. Otherwise,
a new user would get created.
'
sendUserEmail:
type: boolean
default: false
description: 'Flag indicating whether an email to be sent or not to the user, notifying them that an account was created for them by main account.
*An email with a complete sign-up link would be sent regardless if the user does not exist into the system and gets created.*
'
customEmailText:
type: string
description: Custom text to be appended to the email that gets sent to the user if `sendUserEmail = true`
maxLength: 1024
required:
- name
- billing
- userName
- userEmail
LocationTriggerUponRun:
allOf:
- $ref: '#/components/schemas/LocationTriggerBase'
- type: object
properties:
type:
type: string
# --- truncated at 32 KB (254 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/convert/refs/heads/main/openapi/convert-accounts-api-openapi.yml