How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Optimizely Experimentation REST API v2

The core Optimizely REST API v2 shared by Web Experimentation and Feature Experimentation — projects, experiments, campaigns, audiences, pages, events, attributes, environments, features, groups, extensions, holdout exports, webhooks, subject access requests and results/reporting. 108 operations. Published by Optimizely in its own RFC 9727 API catalog and harvested verbatim 2026-08-13.

Optimizely Experimentation REST API v2 is one of 50 APIs that Optimizely publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Experimentation, A/B Testing, and Feature Flags. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, and an API reference.

This API exposes 108 operations across 63 paths, organized into 28 resource areas, and defines 113 schemas. It is described by OpenAPI 3.0.0, at version 2.0.

Requests are made against a single base URL, https://api.optimizely.com/v2.

108 operations 63 paths 113 schemas 14 DELETE58 GET17 PATCH19 POST

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.0.0
API Version
2.0
Base URL
https://api.optimizely.com/v2
Authentication
OAuth 2.0, HTTP Bearer
Resource Areas
28

Authentication & Security 2

Optimizely Experimentation REST API v2 declares 2 security schemes for authenticating requests. It supports OAuth 2.0 (OAuth2) using the authorizationCode flow, exposing 1 scope. It accepts HTTP bearer tokens (apiKey). By default, every request must be authenticated.

  • OAuth2 — Write applications that authenticate with the REST API via OAuth 2.0. Or, to authenticate using a personal token, see https://docs.developers.optimizely.com/we…

Paths & Operations 108

Across 63 paths, the API surfaces 108 operations — 14 DELETE, 58 GET, 17 PATCH, 19 POST. They span 28 resource areas, including Attributes, Attribution, Audiences, Impressions Usage, Campaigns, Change History, Collaborators, Environments, and 20 more. Each is listed below with its method, path, parameters, and response codes.

Attributes 5

Define characteristics of audiences that decide the experiences they will be included in

GET
/attributes
List Attributes
list_attributes 3 params → 200401403404default
POST
/attributes
Create an Attribute
create_attribute body → 201400401default
DELETE
/attributes/{attribute_id}
Archive an Attribute
delete_attribute 1 param → 204401403404default
GET
/attributes/{attribute_id}
Read an Attribute
get_attribute 1 param → 200401403404default
PATCH
/attributes/{attribute_id}
Update an Attribute
update_attribute 1 param body → 200400401403404default
Attribution 1

Get a list of bucketing decisions for a visitor.

GET
/attribution/{account_id}/visitor/{visitor_id}
Get bucketing information for a visitor
get_bucketing_history 4 params → 200401403default
Audiences 4

Define who can be included in your Experiments

GET
/audiences
List Audiences
list_audiences 5 params → 200401403404default
POST
/audiences
Create an Audience
create_audience body → 201default
GET
/audiences/{audience_id}
Read an Audience
get_audience 1 param → 200400401403404default
PATCH
/audiences/{audience_id}
Update an Audience
update_audience 1 param body → 200400401403404default
Impressions Usage 2
GET
/billing/usage/{account_id}
Get Impressions Usage
get_impressions_usage_request 9 params → 200400401403404default
GET
/billing/usage/{account_id}/summary
Get Impressions Usage Summary
get_impressions_usage_summary_request 1 param → 200400401403404default
Campaigns 8

Group Experiments that share aggregated metrics

GET
/campaigns
List Campaigns
list_campaigns 5 params → 200401403404default
POST
/campaigns
Create a Campaign
create_campaign 1 param body → 201default
DELETE
/campaigns/{campaign_id}
Archive a Campaign
delete_campaign 1 param → 204401404410default
GET
/campaigns/{campaign_id}
Read a Campaign
get_campaign 1 param → 200400403404
PATCH
/campaigns/{campaign_id}
Update a Campaign
update_campaign 2 params body → 200400401403404default
GET
/campaigns/{campaign_id}/results
Get Campaign results
get_campaign_results 9 params → 200202204default
GET
/campaigns/{campaign_id}/results/share
Get a sharable link for the campaign's results page
get_campaign_results_share_link 1 param → 200default
GET
/export/campaigns/{campaign_id}/results/csv
Get Campaign results as a CSV
get_campaign_results_csv 9 params → 200202204default
Change History 1

Get a list of changes by project.

GET
/changes
Retrieve changes for a project.
list_change_history 10 params → 200
Collaborators 3
GET
/collaborators
List Collaborators
list_collaborators 1 param → 200401default
POST
/collaborators
Invite Collaborators
create_collaborators body → 200400401default
GET
/invitations
List Collaborators who have not yet accepted the invitations
list_invitations 1 param → 200401default
Environments 6

Run experiments on environment-specific datafiles

GET
/environments
Get Environments by Project
list_environments 3 params → 200401403default
POST
/environments
Create an Environment
create_environment body → 201400401403default
DELETE
/environments/{environment_id}
Archive an Environment
delete_environment 1 param → 204401403404default
GET
/environments/{environment_id}
Read an Environment
get_environment 1 param → 200401403404default
PATCH
/environments/{environment_id}
Update an Environment
update_environment 1 param body → 200400401403404default
GET
/environments/{environment_id}/datafile
Read the datafile of an Environment
get_datafile 1 param → 200401403404default
Events 8

Define Events that you want to track

GET
/events
List all Events
list_events 4 params → 200401403404default
GET
/events/{event_id}
Get Event by ID
get_event 2 params → 200401403404default
POST
/pages/{page_id}/events
Create an In-Page Event
create_in_page_event 1 param body → 201400401403default
DELETE
/pages/{page_id}/events/{event_id}
Archive an In-Page Event
delete_in_page_event 2 params → 204401403404default
PATCH
/pages/{page_id}/events/{event_id}
Update an In-Page Event
update_in_page_event 2 params body → 200400401403404default
POST
/projects/{project_id}/custom_events
Create a Custom Event
create_custom_event 1 param body → 201400401403default
DELETE
/projects/{project_id}/custom_events/{event_id}
Archive a Custom Event
delete_custom_event 2 params → 204401403404default
PATCH
/projects/{project_id}/custom_events/{event_id}
Update a Custom Event
update_custom_event 2 params body → 200400401403404default
ExperimentSummary 1
GET
/experiment_summaries
Summaries of Experiments and Campaigns
get_experiment_summaries 7 params → 200401403default
Experiments 9

Build user experiences and measure their effects

GET
/experiments
List Experiments
list_experiments 4 params → 200401403404default
POST
/experiments
Create an Experiment
create_experiment 1 param body → 201400default
DELETE
/experiments/{experiment_id}
Archive an Experiment
delete_experiment 1 param → 204401403404410default
GET
/experiments/{experiment_id}
Read an Experiment
get_experiment 1 param → 200401403404default
PATCH
/experiments/{experiment_id}
Update an Experiment
update_experiment 2 params body → 200401403404409500default
GET
/experiments/{experiment_id}/results
Get Experiment results
get_experiment_results 10 params → 200202204default
GET
/experiments/{experiment_id}/results/share
Get a sharable link for the experiment's results page
get_experiment_results_share_link 1 param → 200default
GET
/experiments/{experiment_id}/timeseries
Get Experiment results time series
get_experiment_timeseries 10 params → 200202204default
GET
/export/experiments/{experiment_id}/results/csv
Get Experiment results as a CSV
get_experiment_results_csv 10 params → 200202204default
Reports 1
GET
/experiments/{experiment_id}/report
Get Experiment Result's Report
get_experiment_report 10 params → 200202204default
Sections 5

Each Section represents a different variable in a Multivariate Test.

GET
/experiments/{experiment_id}/sections
Read all the Sections in a Multivariate Test
get_experiment_sections 3 params → 200401403404default
POST
/experiments/{experiment_id}/sections
Create a new Section in a Multivariate Test
create_section 1 param body → 201401403404default
DELETE
/experiments/{experiment_id}/sections/{section_id}
Archive a Section by ID
delete_section 2 params → 204401403default
GET
/experiments/{experiment_id}/sections/{section_id}
Read a Section of a Multivariate Test
get_section 2 params → 200401403404default
PATCH
/experiments/{experiment_id}/sections/{section_id}
Update a Section by ID
update_section 2 params body → 200401403404default
Export Credentials 2

Get credentials to access experimentation events export data.

GET
/export/credentials
Get AWS credentials to access experimentation events export data.
get_enriched_events_export_credentials 1 param → 200400401default
GET
/export/credentials/gcp
Get GCP credentials to access experimentation events export data.
get_gcp_e3_credentials → 200400401default
Holdouts 1
GET
/export/projects/{project_id}/holdouts/{holdout_id}/results/csv
Get Holdout results as a CSV
get_holdout_results_csv 8 params → 200202204default
Extensions 5

Define reusable templates for making changes in the visual editor

GET
/extensions
List Extensions
list_extensions 3 params → 200401403404default
POST
/extensions
Create an Extension
create_extension body → 201400401403default
DELETE
/extensions/{extension_id}
Archive an Extension
delete_extension 1 param → 204401403404
GET
/extensions/{extension_id}
Get an Extension
get_extension 1 param → 200401403404default
PATCH
/extensions/{extension_id}
Update an Extension
update_extension 1 param body → 200400401403404default
Features 5

Create Features and parameterize them using Variables for parts of your application you'd like to toggle, roll out, or experiment on. Note - If you are using a Targeted Rollouts L…

GET
/features
Get Features by Project
list_features 3 params → 200401403default
POST
/features
Create a Feature
create_feature body → 201400401default
DELETE
/features/{feature_id}
Archive a Feature
delete_feature 1 param → 204401403404default
GET
/features/{feature_id}
Read a Feature
get_feature 1 param → 200401403404default
PATCH
/features/{feature_id}
Update a Feature
update_feature 1 param body → 200400401403404default
Groups 5

Make experiments and campaigns mutually exclusive from each other using Exclusion Groups

GET
/groups
List Exclusion Groups
list_groups 3 params → 200401403404default
POST
/groups
Create an Exclusion Group
create_group body → 201400401403default
DELETE
/groups/{group_id}
Archive an Exclusion Group
delete_group 1 param → 204401403404default
GET
/groups/{group_id}
Get an Exclusion Group
get_group 1 param → 200400401403404default
PATCH
/groups/{group_id}
Update an Exclusion Group
update_group 1 param body → 200400401403404default
Subject Access Requests 6

Manage information about Subject Access Requests (includes GDPR)

GET
/internal-subject-access-requests
List Subject Access Requests by data source and status
list_sar_requests_by_team 4 params → 200400401default
PATCH
/internal-subject-access-requests/{request_id}
Update a Subject Access Request
update_sar_request 1 param body → 200400401403404default
POST
/internal-subject-access-requests/{request_id}
Update a Subject Access Request
update_sar_request_by_post 1 param body → 200400401403404default
GET
/subject-access-requests
List Subject Access Requests
list_sar_requests_by_account 2 params → 200400401403404default
POST
/subject-access-requests
Create a Subject Access Request
create_sar_request body → 201400401403default
GET
/subject-access-requests/{request_id}
Get Subject Access Request
get_sar_request 1 param → 200400401403404default
List Attributes 5

A List Attribute is a set of user identifiers that you have uploaded to Optimizely. Membership in a list can be used to define an Optimizely audience, so you can target experiment…

GET
/list_attributes
Get list attributes by project
list_list_attributes 1 param → 200401403404default
POST
/list_attributes
Create a List Attribute
create_list_attribute body → 201400401default
DELETE
/list_attributes/{list_attribute_id}
Archive a List Attribute
archive_list_attribute 1 param → 204401403404default
GET
/list_attributes/{list_attribute_id}
Read a List Attribute
get_list_attribute 1 param → 200401403404default
PATCH
/list_attributes/{list_attribute_id}
Update a List Attribute
update_list_attribute 1 param body → 200400401403404default
User 1

User related information for the current account

GET
/me
Get current User information
get_me 2 params → 200401default
Pages 5

Define where your Experiments can run

GET
/pages
List Pages
list_pages 3 params → 200400403404
POST
/pages
Create a Page
create_page body → 201default
DELETE
/pages/{page_id}
Archived a Page
delete_page 1 param → 204400401403404410default
GET
/pages/{page_id}
Read a page
get_page 1 param → 200400401403404default
PATCH
/pages/{page_id}
Update a Page
update_page 1 param body → 200400401403404default
Plan 1

Plan & Usage information for current account

GET
/plan
Get Plan & Usage information for all products
get_plan → 200401403default
Projects 4

Group Campaigns and Experiments in a single javascript file

GET
/projects
List Projects
list_projects 2 params → 200401default
POST
/projects
Create a Project
create_project body → 201default
GET
/projects/{project_id}
Read a Project
get_project 1 param → 200400403404
PATCH
/projects/{project_id}
Update a Project
update_project 1 param body → 200400401403404default
Webhooks 5
GET
/projects/{project_id}/webhooks
Get Webhooks by Project
list_webhooks 4 params → 200400401403
POST
/projects/{project_id}/webhooks
Create a Webhook
create_webhook 1 param body → 201400401403
DELETE
/webhooks/{webhook_id}
Delete a Webhook
delete_webhook 1 param → 204400401403404
GET
/webhooks/{webhook_id}
Read a Webhook
get_webhook 1 param → 200400401403
PATCH
/webhooks/{webhook_id}
Update a Webhook
update_webhook 1 param body → 200400401403
Recommendations 3
GET
/recommendations/catalogs/{catalog_id}/catalog/{date}
Download a CSV with all current catalog data
get_recs_catalog_csv 2 params → 200400401403default
GET
/recommendations/catalogs/{catalog_id}/recommenders/{recommender_id}/{date}
Download a CSV with all computed recommendations output data
get_recs_output_csv 3 params → 200400401403default
GET
/recommendations/catalogs/{catalog_id}/stats/{date}
Download a CSV with summary stats data
get_recs_stats_csv 2 params → 200400401403default
Scheduled Jobs 5

Define Scheduled Jobs to be executed on a regular, recurring basis

GET
/scheduled-jobs
Get a list of Scheduled Jobs
list_scheduled_jobs → 200401default
POST
/scheduled-jobs
Create a Scheduled Job
create_scheduled_job body → 201400401403default
DELETE
/scheduled-jobs/{job_id}
Archive a Scheduled Job
delete_scheduled_job 1 param → 204401403404default
GET
/scheduled-jobs/{job_id}
Get a Scheduled Job
get_scheduled_job 1 param → 200400401403404default
PATCH
/scheduled-jobs/{job_id}
Update a Scheduled Job
update_scheduled_job 1 param body → 200400401403404default
Search 1

Search across multiple entities

GET
/search
Search
get_search_results 15 params → 200401403default

Schemas 113

The contract defines 113 schemas that model the data the API accepts and returns. The most detailed are Experiment (31 properties), SearchResult (26 properties), Campaign (20 properties), Change (18 properties). Each schema is shown below with its type and property counts.

Account
object
2 properties
AccountFeature
object
2 properties
AccountFeatureSource
object
2 properties
Action
object
3 properties 1 required
Attribute
object
8 properties 2 required
AttributeUpdate
object
4 properties
Audience
object
12 properties 1 required
AudienceUpdate
object
6 properties
BucketingInformation
object
3 properties
BucketingInformationItem
object
5 properties
CSSAttribute
object
12 properties
Campaign
object
20 properties 1 required
CampaignMetricResults
object
Results specific to an Event
10 properties
CampaignResults
object
6 properties
CampaignUpdate
object
10 properties
Change
object
18 properties 1 required
ChangeAttribute
object
8 properties
ChangeDetail
object
4 properties
ChangeHistoryChange
object
10 properties 1 required
ChangeRevision
object
2 properties
Choices
object
2 properties
CollaboratorEntry
object
3 properties
CompoundSubMetric
object
A metric that is used only as part of the calculation for a ratio metric.
5 properties
CredentialsItem
object
Credentials item containing information on access key and secrets
4 properties
CurrentAccount
object
2 properties
CustomEvent
object
12 properties 1 required
CustomEventUpdate
object
5 properties
Datafile
object
6 properties
Datapoint
object
A value with statistical context
10 properties
E3Credentials
object
2 properties
E3CredentialsGCP
object
2 properties
Entity
object
6 properties
Environment
object
12 properties 3 required
EnvironmentUpdate
object
6 properties
Error
object
4 properties
Event
object
15 properties
EventCategories
string
1 property
EventProperty
object
A user-defined data element giving additional detail about the event.
2 properties
Experiment
object
31 properties 1 required
ExperimentEnvironment
object
1 property 1 required
ExperimentEnvironmentUpdate
object
1 property 1 required
ExperimentMetricConclusion
object
2 properties
ExperimentMetricResults
object
Results specific to an Event
11 properties
ExperimentMetricTimeseries
object
Results time series specific to an Event
10 properties
ExperimentResults
object
8 properties
ExperimentResultsReport
object
4 properties
ExperimentSummary
object
11 properties
ExperimentTimeseries
object
7 properties
ExperimentUpdate
object
15 properties
ExperimentVariationReach
object
6 properties
Extension
object
12 properties 4 required
ExtensionUpdate
object
7 properties
Feature
object
10 properties 2 required
FeatureEnvironment
object
3 properties 1 required
FeatureUpdate
object
6 properties
FeatureVariable
object
5 properties 3 required
FeatureVariableUpdate
object
6 properties
Field
object
5 properties 4 required
Group
object
8 properties 2 required
GroupEntity
object
3 properties 3 required
GroupUpdate
object
4 properties
Implementation
object
4 properties
ImpressionsUsage
object
7 properties 7 required
ImpressionsUsageSummary
object
6 properties 6 required
InPageEvent
object
An Event that can occur only within the context of a specific Page (allowed in Web Projects only)
13 properties 2 required
InPageEventConfig
object
1 property 1 required
InPageEventUpdate
object
8 properties
ListAttribute
object
14 properties 3 required
ListAttributeUpdate
object
6 properties
Me
object
5 properties
Metric
object
9 properties
MetricEventProperties
object
The conditions used to filter the metric on specific event property values.
1 property
MetricFilter
object
The set of event property conditions a conversion must match to be counted toward the metric.
2 properties
MetricFilterCondition
object
defines the event property values and operator used to check whether the conversion meets the condition.
4 properties
Metrics
object
16 properties 5 required
Options
object
1 property
Page
object
14 properties 3 required
PageUpdate
object
9 properties
Plan
object
5 properties
ProductUsage
object
9 properties
Project
object
16 properties 1 required
ProjectRole
object
3 properties
ProjectUpdate
object
7 properties
ResultsShareLink
object
1 property
Revision
object
1 property
RolloutRule
object
4 properties
Schedule
object
3 properties
ScheduleUpdate
object
3 properties
ScheduledJob
object
9 properties 3 required
ScheduledJobUpdate
object
7 properties
SearchResult
object
26 properties
Section
object
7 properties 1 required
SectionUpdate
object
4 properties
SharedCodeChange
object
8 properties 2 required
StatsConfig
object
Stats Engine configuration settings
3 properties
SubjectAccessRequest
object
13 properties 4 required
SubjectAccessRequestInternal
object
15 properties 5 required
SubjectAccessRequestUpdate
object
4 properties 1 required
TimeseriesDatapoint
object
6 properties
URLTargeting
object
6 properties 1 required
User
object
6 properties 2 required
UserProfile
object
4 properties
UserProxy
object
3 properties 2 required
VariantResults
object
11 properties
VariantTimeseries
object
6 properties
Variation
object
10 properties 1 required
VariationReach
object
4 properties
VariationUpdate
object
10 properties 1 required
WebSnippet
object
12 properties
WebSnippetUpdate
object
10 properties
Webhook
object
9 properties 3 required
WebhookRequestBody
object
Webhook request body
4 properties 4 required
Webhooks
array
List of webhooks.

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

optimizely-web-experimentation-optimizely-api-openapi.json Raw ↑

Other APIs Optimizely publishes across the network.

Optimizely Feature Experimentation Flags API v1
Optimizely Flags Scheduling API
Optimizely Permission Service API
Optimizely Agent API
Optimizely Event API
Optimizely Edge Decider API
Optimizely Data Platform (ODP) API v3
Optimizely Graph API
Optimizely Content Marketing Platform (CMP) API v3
Optimizely Campaign REST API
Optimizely Configured Commerce API
Optimizely CMS Content Delivery API v3.0
Where this information came from

This is an independent, third-party profile of Optimizely Experimentation REST API v2, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.