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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/convert-user-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
openapi: 3.2.0
info:
title: Convert Accounts User 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: User
description: Authenticated user related endpoints
paths:
/access-roles:
get:
operationId: getAccessRoles
summary: List available user access roles
description: 'Retrieves a list of all predefined access roles within the Convert system (e.g., Owner, Admin, Editor, Reviewer, Browse).
Each role defines a set of permissions that dictate what actions a user can perform on accounts and projects.
This is useful for understanding permission levels when managing collaborators.
'
tags:
- User
responses:
'200':
$ref: '#/components/responses/AccessRolesListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user:
get:
operationId: getUserData
summary: Get current authenticated user's details
description: 'Retrieves the profile data, preferences, and settings for the currently authenticated user (via cookie).
This includes information like email, name, and UI preferences.
Note: This endpoint is for cookie-based authentication. For API key authentication, user context is tied to the key itself.
'
tags:
- User
responses:
'200':
$ref: '#/components/responses/UserDataResponse'
put:
operationId: updateUserProfileData
summary: Update current user's profile
description: 'Allows the authenticated user (via cookie) to update their profile information, such as name, email, or password.
Also used to manage Multi-Factor Authentication (MFA) settings.
User preferences (like UI display settings) are managed via a separate endpoint.
'
tags:
- User
requestBody:
$ref: '#/components/requestBodies/UserUpdateProfileDataRequest'
responses:
'200':
$ref: '#/components/responses/UserDataResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user/confirm-email:
post:
operationId: confirmEmail
summary: Confirm user email address change
description: 'Finalizes an email address change request by submitting the confirmation code sent to the new email address.
Used in cookie-based authentication flows.
'
tags:
- User
requestBody:
$ref: '#/components/requestBodies/ConfirmEmailRequest'
responses:
'200':
$ref: '#/components/responses/UserDataResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user/preferences:
post:
operationId: updateUserPreferences
summary: Update user's UI preferences
description: 'Allows the authenticated user (via cookie) to update their preferences for the Convert application UI,
such as default column visibility in tables or editor settings. These settings do not affect experiment behavior.
'
tags:
- User
requestBody:
$ref: '#/components/requestBodies/UserUpdatePreferencesRequest'
responses:
'200':
$ref: '#/components/responses/UserDataResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user/mfa-secret:
post:
operationId: generateMfaSecret
summary: Generate MFA secret for authenticator app
description: 'Generates a new Multi-Factor Authentication (MFA) secret for the authenticated user (cookie-based).
This secret is used to set up an authenticator app (like Google Authenticator) for generating time-based one-time passwords (TOTPs).
'
tags:
- User
responses:
'200':
$ref: '#/components/responses/UserMfaSecretResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user/accept-demo-project:
post:
operationId: acceptDemoProject
summary: Accept and create a demo project for the user
description: 'Allows a user to accept the creation of a pre-configured demo project in their account.
This is typically used for onboarding or trial experiences to showcase Convert''s features.
'
tags:
- User
responses:
'200':
$ref: '#/components/responses/SuccessResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user/sessions:
post:
operationId: listUserSessions
summary: List authorized sessions for the current user
description: 'Cookie-authenticated endpoint that returns all active authorized sessions for the current user,
including the current cookie-based session and any OAuth bearer-token sessions the user has approved.
'
tags:
- User
responses:
'200':
$ref: '#/components/responses/UserSessionsListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user/sessions/revoke:
post:
operationId: revokeUserSession
summary: Revoke User session
description: 'Cookie-authenticated endpoint that revokes a single session (cookie-based or OAuth) for the current user, identified by its sid.
'
tags:
- User
requestBody:
$ref: '#/components/requestBodies/UserSessionRevokeRequest'
responses:
'200':
$ref: '#/components/responses/UserSessionRevokeResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/user/sessions/revoke-all:
post:
operationId: revokeAllUserSessions
summary: Revoke all User sessions
description: 'Cookie-authenticated endpoint that revokes every active session (cookie-based and OAuth) for the current user.
'
tags:
- User
responses:
'200':
$ref: '#/components/responses/UserSessionRevokeAllResponse'
default:
$ref: '#/components/responses/ErrorResponse'
components:
schemas:
ProjectHistoryPersistentOptions:
allOf:
- $ref: '#/components/schemas/ProjectHistoryFilteringOptions'
- type: object
properties:
columns:
type: array
nullable: true
description: 'Sorted list of columns to be displayed in the UI
'
items:
allOf:
- $ref: '#/components/schemas/ColumnPreference'
- type: object
properties:
name:
$ref: '#/components/schemas/ProjectHistoryColumnNames'
KnowledgeBasesListPersistentOptions:
allOf:
- $ref: '#/components/schemas/KnowledgeBasesListFilteringOptions'
- type: object
properties:
columns:
type: array
nullable: true
description: 'Sorted list of columns to be displayed in the UI
'
items:
allOf:
- $ref: '#/components/schemas/ColumnPreference'
- type: object
properties:
name:
$ref: '#/components/schemas/KnowledgeBasesListColumnNames'
UserSessionEntry:
type: object
properties:
sid:
description: Session identifier.
type: string
authorized_type:
description: Display name of type of how user was authorized.
type: string
enum:
- session_cookie
- oauth
client:
description: 'Name of the client that owns this session.
'
type: string
last_used_at:
description: Last authentication time (unix timestamp).
type: integer
expires_at:
description: Absolute session expiration (unix timestamp).
type: integer
created_at:
description: Session creation time (unix timestamp).
type: integer
UserSessionRevokeRequestData:
type: object
required:
- sid
properties:
sid:
description: Session identifier returned by POST /user/sessions.
type: string
ExperienceHistoryObjects:
type: string
enum:
- report
- variation
- change
ObservationsListFilteringOptions:
allOf:
- $ref: '#/components/schemas/ResultsPerPage'
- $ref: '#/components/schemas/SortDirection'
- type: object
properties:
sort_by:
type: string
nullable: true
default: name
description: 'A value to sort observations by specific field(s)
Defaults to **name** if not provided
'
enum:
- name
- created_by
- date_added
- status
search:
type: string
maxLength: 200
nullable: true
description: A search string that would be used to search against observation's name or description
status:
type: array
nullable: true
description: The status of the observations you'd like to be returned; one of the below can be provided
items:
$ref: '#/components/schemas/ObservationStatuses'
tags:
type: array
nullable: true
description: The list of tag ID's used to filter the list of returned observations
items:
type: integer
only:
description: 'Only retrieve observations with the given ids.
'
type: array
nullable: true
items:
type: integer
maxItems: 100
except:
description: 'Except observations with the given ids.
'
type: array
items:
type: integer
maxItems: 100
ObservationStatuses:
description: 'The current status of an observation in its lifecycle:
- `active`: The observation is current, under consideration, or being actively discussed. This is the default for new observations.
- `archived`: The observation has been reviewed and is no longer actively being pursued (e.g., deemed not actionable, superseded, or already addressed). It''s kept for historical records.
Knowledge Base: "Observations Feature Guide" - "Status Management".
'
type: string
enum:
- active
- archived
default: active
ChangeHistoryObjects:
type: string
enum:
- audience
- feature
- domain
- goal
- hypothesis
- experience
- tag
- location
ReportingSegmentsCustomSegment:
description: 'The numerical ID of a custom Convert Audience (of type ''segmentation'') that the visitor is a member of.
Allows report segmentation based on predefined custom segments (e.g., "High-Value Customers", "Engaged Users").
Knowledge Base: "Create Custom Segments".
'
type: integer
ProjectHistoryColumnNames:
type: string
description: Available columns for the project change history log in the UI.
enum:
- timestamp
- object_id
- event
- object
- method
- more_info
UserLoginProviders:
type: string
description: 'The identity provider used for user login:
- `convert`: Standard username/password authentication managed by Convert.
- `google`: Authentication via Google Sign-In (OAuth/OIDC).
'
enum:
- convert
- google
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
ExperienceStatuses:
type: string
enum:
- draft
- active
- paused
- completed
- scheduled
- archived
- deleted
GoalStatuses:
type: string
description: 'The current status of a goal:
- `active`: The goal is active and will track conversions for experiences it''s attached to.
- `archived`: The goal is archived and will not track new conversions. Its historical data remains accessible in reports for experiences that previously used it. Archived goals can often be cloned or unarchived.
Knowledge Base: "Benefits of Archiving Unused Goals, Locations, and Audiences."
'
enum:
- active
- archived
FeaturesListColumnNames:
type: string
description: Available columns for the features list in the UI.
enum:
- name
- id
- key
- status
AccessRolesList:
type: array
description: A list of access role objects, each detailing a role name and its associated permissions.
items:
$ref: '#/components/schemas/AccessRole'
ExperienceReportSecondViewPersistentOptions:
allOf:
- type: object
properties:
columns:
type: array
nullable: true
description: 'Sorted list of columns to be displayed in the UI
'
items:
allOf:
- $ref: '#/components/schemas/ColumnPreference'
- type: object
properties:
name:
$ref: '#/components/schemas/ExperienceReportSecondViewColumnNames'
UserData:
type: object
description: Detailed information about an authenticated user, including their profile, UI preferences, and security settings.
properties:
profileData:
type: object
properties:
email:
type: string
description: The user's primary email address, used for login and communication.
firstName:
type: string
description: The user's first name.
lastName:
type: string
description: The user's last name.
login_provider:
$ref: '#/components/schemas/UserLoginProviders'
user_id:
type: string
readOnly: true
description: The unique system-generated identifier for this user within Convert.
intercom_user_jwt:
type: string
readOnly: true
description: (Internal) JWT used to authenticate the user in Intercom Messenger.
reditus_user_jwt:
type: string
readOnly: true
description: (Internal) JWT used to authenticate the user in Reditus.
canny_user_jwt:
type: string
readOnly: true
description: (Internal) JWT used to authenticate the user in Canny.
canSudo:
type: boolean
readOnly: true
description: (Internal) If true, this user has super-administrator privileges, allowing them to impersonate other users or access all accounts for support purposes.
onlyCollaborator:
type: boolean
readOnly: true
description: If true, this user does not own any accounts themselves but only has access to other accounts as a collaborator.
persona:
type: string
readOnly: true
description: (Internal) A classification of the user's persona (e.g., "Marketer", "Developer", "Agency") used by Convert to tailor the UI or offer relevant guidance.
techPerson:
type: boolean
readOnly: true
description: (Internal) If true, indicates the user is likely technically proficient, which might influence UI hints or available advanced features.
preferences:
$ref: '#/components/schemas/UserPreferences'
isSudo:
type: boolean
description: (Internal) If true, indicates the user is currently operating in "sudo" (super-administrator impersonation) mode.
mfa_backup_codes:
type: array
description: '(Not Implemented / For Future Use) A list of one-time backup codes for Multi-Factor Authentication (MFA).
These would be provided when MFA is enabled and can be used if the primary MFA device is unavailable.
'
KnowledgeBasesListColumnNames:
type: string
description: Available columns for the Knowledge Base list in the UI.
enum:
- name
- status
- created_by
- updated_at
ReportingSegmentsFilters:
type: object
description: 'A collection of filters used to segment experience report data based on various visitor attributes and traffic sources.
Applying these filters allows for deeper analysis of how different user groups interact with experience variations.
Knowledge Base: "Using Basic and Advanced Post segmentation".
'
properties:
devices:
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsDeviceCategories'
nullable: true
browsers:
description: Filter report data for visitors using one or more specified web browsers.
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsBrowser'
nullable: true
countries:
description: Filter report data for visitors from one or more specified countries (using 2-letter ISO codes).
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsCountry'
nullable: true
visitor_types:
description: Filter report data for 'new' or 'returning' visitors.
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsVisitorType'
nullable: true
campaigns:
description: Filter report data for visitors attributed to one or more specified marketing campaign names (from `utm_campaign`).
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsCampaign'
nullable: true
custom_segments:
description: Filter report data for visitors belonging to one or more specified custom Convert Audience segments (by segment ID).
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsCustomSegment'
nullable: true
sources:
description: Filter report data for visitors from one or more specified traffic sources (e.g., 'direct', 'search', 'referral').
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsSource'
nullable: true
ReportingSegmentsSource:
type: string
description: 'The traffic source that brought the visitor to the site (e.g., ''google'', ''facebook.com'', ''direct'', ''newsletter'').
Derived from `utm_source` URL parameters or the HTTP referrer. Enables report segmentation by traffic source.
Knowledge Base: "How Do You Fill Medium, Keyword and Source Name?".
'
enum:
- campaign
- search
- referral
- direct
- ai_tool
ReportingSegmentsBrowser:
type: string
description: 'The web browser used by the visitor. Used for segmenting reports to understand how experiences perform across different browsers.
Knowledge Base: "Using Basic and Advanced Post segmentation".
'
enum:
- internet_explorer
- chrome
- firefox
- safari
- edge
- other
OnlyCount:
type: object
properties:
onlyCount:
type: boolean
description: 'If set to `true` in a list request, the response will only contain the total count of matching items (`extra.pagination.items_count`)
and will not include the actual item data. Useful for quickly getting totals without fetching full datasets.
'
ExperienceHistoryPersistentOptions:
allOf:
- $ref: '#/components/schemas/ExperienceHistoryFilteringOptions'
- type: object
properties:
columns:
type: array
nullable: true
description: 'Sorted list of columns to be displayed in the UI
'
items:
allOf:
- $ref: '#/components/schemas/ColumnPreference'
- type: object
properties:
name:
$ref: '#/components/schemas/ExperienceHistoryColumnNames'
ProjectsListPersistentOptions:
allOf:
- $ref: '#/components/schemas/ProjectsListFilteringOptions'
- type: object
properties:
columns:
type: array
nullable: true
description: 'Sorted list of columns to be displayed in the UI
'
items:
allOf:
- $ref: '#/components/schemas/ColumnPreference'
- type: object
properties:
name:
$ref: '#/components/schemas/ProjectsListColumnNames'
TrackingScriptReleaseTypes:
type: string
description: 'Defines the update strategy for the project''s Convert tracking script:
- `manual`: (Default) The project remains on its current script version. Updates to newer versions must be initiated manually by an administrator. Allows for controlled rollouts and rollbacks to the immediate previous version.
- `latest`: The project''s tracking script will automatically update to the newest stable version as soon as Convert releases it. Ensures access to the latest features and fixes with minimal intervention.
- `scheduled`: Updates to the latest script version are automatically applied at a predefined day and time of the week, allowing updates during off-peak hours.
KB: "Tracking Script Version Management".
'
enum:
- manual
- latest
- scheduled
mfaDisableRequest:
type: object
description: Request to disable Multi-Factor Authentication (MFA) for the user.
properties:
type:
type: string
enum:
- disable
password:
description: The user's current password, required to authorize disabling MFA.
type: string
LocationsListPersistentOptions:
allOf:
- $ref: '#/components/schemas/LocationsListFilteringOptions'
- type: object
properties:
columns:
type: array
nullable: true
description: 'Sorted list of columns to be displayed in the UI
'
items:
allOf:
- $ref: '#/components/schemas/ColumnPreference'
- type: object
properties:
name:
$ref: '#/components/schemas/LocationsListColumnNames'
CommonBasicPermissions:
type: object
properties:
add:
type: boolean
edit:
type: boolean
view:
type: boolean
delete:
type: boolean
AccessRolesListResponseData:
type: object
properties:
data:
$ref: '#/components/schemas/AccessRolesList'
ProjectLiveDataColumnNames:
type: string
description: Available columns for the project-level live data feed in the UI.
enum:
- time
- event
- experience
- variation
- more_info
ExperienceReportSectionNames:
type: string
description: Identifiers for the different collapsible/reorderable sections within the experience report UI.
enum:
- summary
- complete_overview
- quick_overview
- goal_details
ObservationsListColumnNames:
type: string
description: Available columns for the observations list in the UI.
enum:
- name
- created_by
- created_at
- updated_at
- status
LiveDataExpandFields:
type: string
enum:
- custom_segments
- experiences
- experiences.variation
- conversion.goals
- project
ErrorData:
type: object
properties:
code:
type: integer
format: int32
message:
oneOf:
- type: string
- type: array
items:
type: string
fields:
oneOf:
- type: string
- type: array
items:
type: string
UTC_Offset:
type: integer
description: 'The time offset from Coordinated Universal Time (UTC) in seconds.
For example, UTC-5 (EST) would be -18000. UTC+2 would be 7200.
Used for interpreting or displaying date/time information according to a specific timezone.
'
default: 0
minimum: -43200
maximum: 50400
ReportingSegmentsCampaign:
type: string
description: 'The campaign name associated with the visitor''s session, typically derived from `utm_campaign` URL parameters.
Allows report segmentation by marketing campaign.
Knowledge Base: "How Do You Fill Medium, Keyword and Source Name?".
'
AccountLiveDataPersistentOptions:
allOf:
- $ref: '#/components/schemas/AccountLiveDataFilteringOptions'
- $ref: '#/components/schemas/LiveDataAutoRefreshSettings'
- type: object
properties:
columns:
type: array
description: 'Sorted list of columns to be displayed in the UI
'
items:
allOf:
- $ref: '#/components/schemas/ColumnPreference'
- type: object
properties:
name:
$ref: '#/components/schemas/AccountLiveDataColumnNames'
RolePermissions:
type: object
properties:
account:
type: object
properties:
manage_addons:
type: boolean
manage_sso:
type: boolean
manage_api_keys:
type: boolean
manage_blocked_ips:
type: boolean
edit:
type: boolean
billing:
type: object
properties:
managePlan:
type: boolean
manage_billing:
type: boolean
manage_payment:
type: boolean
request_payment:
type: boolean
feature:
$ref: '#/components/schemas/CommonBasicPermissions'
livedata:
type: object
properties:
view_account_livedata:
type: boolean
view_project_livedata:
type: boolean
view_experience_livedata:
type: boolean
history:
type: object
properties:
view_account_history:
type: boolean
view_project_history:
type: boolean
view_experience_history:
type: boolean
collaborator:
type: object
properties:
view:
type: boolean
crud:
type: boolean
project:
allOf:
- $ref: '#/components/schemas/CommonBasicPermissions'
- type: object
properties:
import:
type: boolean
export:
type: boolean
domain:
$ref: '#/components/schemas/CommonBasicPermissions'
tag:
$ref: '#/components/schemas/CommonBasicPermissions'
goal:
allOf:
- $ref: '#/components/schemas/CommonBasicPermissions'
- type: object
properties:
clone:
type: boolean
experience:
allOf:
- $ref: '#/components/schemas/CommonBasicPermissions'
- type: object
properties:
edit_running:
type: boolean
clone:
type: boolean
pauseplay:
type: boolean
location:
allOf:
- $ref: '#/components/schemas/CommonBasicPermissions'
- type: object
properties:
edit_running:
type: boolean
variation:
type: object
properties:
pauseplay:
type: boolean
changebaseline:
type: boolean
audience:
allOf:
- $ref: '#/components/schemas/CommonBasicPermissions'
- type: object
properties:
edit_running:
type: object
report:
type: object
properties:
view:
type: boolean
fulledit:
type: boolean
nochangeedit:
type: boolean
hypothesis:
allOf:
- $ref: '#/components/schemas/CommonBasicPermissions'
- type: object
properties:
convert:
type: boolean
knowledge_base:
$ref: '#/components/schemas/CommonBasicPermissions'
observation:
$ref: '#/components/schemas/CommonBasicPermissions'
UserSessionRevokeResponseData:
type: object
required:
- code
- message
properties:
code:
type: integer
message:
type: string
ExperiencesListFilteringOptions:
type: object
allOf:
- $ref: '#/components/schemas/ResultsPerPage'
- $ref: '#/components/schemas/SortDirection'
- type: object
properties:
goal_id:
type: integer
nullable: true
description: 'Goal ID to be used for fetching experience''s stats. Only applicable for the experiences that have access to a report. Defaults to primary experience''s goal if none given.
'
sort_by:
type: string
nullable: true
default: id
description: 'A value used to sort experiences by specific field
Defaults to **id** if not provided
'
enum:
- id
- conversions
- improvement
- name
- start_time
- end_time
- status
- primary_goal
- key
- environment
search:
type: string
maxLength: 200
nullable: true
description: A search string that would be used to search against Experience's name and description
status:
type: array
nullable: true
description: The status of the experiences to be returned; either of the below can be provided
items:
$ref: '#/components/schemas/ExperienceStatuses'
type:
type: array
nullable: true
description: The type of the experiences to be returned; either of the below can be provided
items:
# --- truncated at 32 KB (97 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/convert/refs/heads/main/openapi/convert-user-api-openapi.yml