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/optimizely-sections-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
title: Optimizely Sections API
version: '1.0'
description: 'Operations tagged sections across 2 of this provider''s published API definitions: optimizely-recommendations-public-api-spec-openapi.yaml, optimizely-web-experimentation-optimizely-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://{hostname}/1.0
description: Primary API server
variables:
hostname:
default: api.usea01.idio.episerver.net
enum:
- api.apac01.idio.episerver.net
- api.caea01.idio.episerver.net
- api.emea01.idio.episerver.net
- api.usea01.idio.episerver.net
- url: https://api.optimizely.com/v2
tags:
- name: sections
description: Section management operations
paths:
/sections/{id}:
get:
operationId: sectionGetMany
summary: Fetch section by ID
description: Retrieve detailed information about a specific section.
tags:
- sections
parameters:
- $ref: '#/components/parameters/sectionIDList'
responses:
'200':
description: Array of sections.
content:
application/json:
schema:
$ref: '#/components/schemas/SectionList'
'404':
description: One or more of the sections do not exist.
security:
- key: []
patch:
operationId: sectionUpdate
summary: Update section
description: Update section attributes, such as title and description.
tags:
- sections
parameters:
- $ref: '#/components/parameters/sectionID'
requestBody:
required: true
description: Map of fields to update
content:
application/json:
schema:
$ref: '#/components/schemas/SectionPartial'
responses:
'200':
description: Section updated.
content:
application/json:
schema:
$ref: '#/components/schemas/ID'
'404':
description: Section does not exist
security:
- key: []
servers:
- url: https://{hostname}/1.0
description: Primary API server
variables:
hostname:
default: api.usea01.idio.episerver.net
enum:
- api.apac01.idio.episerver.net
- api.caea01.idio.episerver.net
- api.emea01.idio.episerver.net
- api.usea01.idio.episerver.net
/sections/{id}/content:
parameters:
- $ref: '#/components/parameters/sectionID'
get:
operationId: sectionContentList
summary: List section content
description: Retrieve a paginated list of content items assigned to the specified section.
tags:
- sections
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/rpp'
- $ref: '#/components/parameters/topics'
responses:
'200':
$ref: '#/components/responses/ContentList'
'204':
description: Section exists but contains no content
'404':
description: Section does not exist
security:
- key: []
servers:
- url: https://{hostname}/1.0
description: Primary API server
variables:
hostname:
default: api.usea01.idio.episerver.net
enum:
- api.apac01.idio.episerver.net
- api.caea01.idio.episerver.net
- api.emea01.idio.episerver.net
- api.usea01.idio.episerver.net
/experiments/{experiment_id}/sections:
get:
description: Get a list of all Sections in a Multivariate Test
operationId: get_experiment_sections
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page_2'
- description: The Experiment ID of the Multivariate Test you want to get Sections for
in: path
name: experiment_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Section'
type: array
description: Return Sections
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid credentials
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: You do not have permission to access the specified Experiment
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Experiment not found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unexpected error
summary: Read all the Sections in a Multivariate Test
tags:
- sections
x-release-state: beta
security:
- apiKey: []
- OAuth2:
- read
- write
post:
description: Add a new Section to the Multivariate Test specified by `experiment_id`
operationId: create_section
parameters:
- description: The Experiment ID of the Multivariate Test you want to create a Section in
in: path
name: experiment_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Section'
description: A string in JSON format that includes all the fields to create a Section
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Section'
description: Section Created
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid credentials
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: You do not have permission to create a Section in the specified Experiment
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Experiment not found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unexpected error
summary: Create a new Section in a Multivariate Test
tags:
- sections
x-release-state: beta
security:
- apiKey: []
- OAuth2:
- read
- write
servers:
- url: https://api.optimizely.com/v2
/experiments/{experiment_id}/sections/{section_id}:
delete:
description: Archive a Section by ID within the specified Multivariate Test
operationId: delete_section
parameters:
- description: The ID of the Section you want to archive within the given Experiment
in: path
name: section_id
required: true
schema:
format: int64
type: integer
- description: The ID of the Multivariate Test the requested Section is part of
in: path
name: experiment_id
required: true
schema:
type: integer
responses:
'204':
description: Successfully archived Section
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid credentials
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: You do not have permission to access the specified Section
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unexpected error
summary: Archive a Section by ID
tags:
- sections
x-release-state: beta
security:
- apiKey: []
- OAuth2:
- read
- write
get:
description: Get metadata for a single Multivariate Test Section
operationId: get_section
parameters:
- description: The ID of the Section you want to read
in: path
name: section_id
required: true
schema:
format: int64
type: integer
- description: The ID of the Multivariate Test the requested Section is part of
in: path
name: experiment_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Section'
description: Return Section info
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid credentials
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: You do not have permission to access the specified Section
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Section or Experiment not found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unexpected error
summary: Read a Section of a Multivariate Test
tags:
- sections
x-release-state: beta
security:
- apiKey: []
- OAuth2:
- read
- write
patch:
description: (Beta) Update a section by ID within the specified multivariate test.
operationId: update_section
parameters:
- description: The ID of the Section you want to update
in: path
name: section_id
required: true
schema:
format: int64
type: integer
- description: The ID of the Multivariate Test the requested Section is part of
in: path
name: experiment_id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SectionUpdate'
description: A string in JSON format that includes all the fields to create a Section
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Section'
description: Successfully updated Section
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid credentials
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: You do not have permission to access the specified Section
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Section or Experiment not found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unexpected error
summary: Update a Section by ID
tags:
- sections
x-release-state: beta
security:
- apiKey: []
- OAuth2:
- read
- write
servers:
- url: https://api.optimizely.com/v2
components:
responses:
ContentList:
description: A paginated list of content items, including metadata for navigation, such as total hits and page links.
content:
application/json:
schema:
$ref: '#/components/schemas/ContentList'
example:
total_hits: 124
next_page: https://api.usea01.idio.episerver.net/1.0/content?page=2&rpp=10
previous_page: null
content:
- id: 987654
title: The Future of Enterprise Personalisation
abstract: How content recommendations drive engagement across digital channels.
featured: true
approved: approved
read: false
published: '2026-05-14T09:30:00Z'
original_url: https://www.example.com/blog/future-of-personalisation
link_url: https://www.example.com/blog/future-of-personalisation
full_details_url: https://api.usea01.idio.episerver.net/1.0/content/987654
main_image_url: https://images.example.com/987654/main.jpg
main_image:
width: 1200
height: 630
metadata:
language: en
source:
id: 55
title: Company Blog
full_details_url: https://api.usea01.idio.episerver.net/1.0/sources/55
display: full
author:
id: 21
title: Jordan Lee
full_details_url: https://api.usea01.idio.episerver.net/1.0/authors/21
topics:
- id: 301
title: Personalisation
full_details_url: https://api.usea01.idio.episerver.net/1.0/topics/301
parameters:
page:
name: page
in: query
description: Page number for pagination (1-based index).
schema:
type: integer
example: 2
rpp:
name: rpp
in: query
description: Results per page for pagination.
schema:
type: integer
sectionID:
name: id
in: path
required: true
description: Unique identifier of the section.
schema:
type: integer
example: 42
sectionIDList:
name: id
in: path
required: true
description: Section IDs (csv)
style: simple
explode: false
schema:
type: array
uniqueItems: true
items:
type: integer
topics:
name: include_topics
in: query
description: Whether to include topic information in the response.
allowEmptyValue: true
schema:
type: boolean
page_2:
description: 'Optional pagination argument that specifies the page to return. If you have 140 objects and you choose to return 100 objects per page you will be able to access the last 40 objects on page 2. The default value is 1.
'
in: query
name: page
required: false
schema:
default: 1
type: integer
per_page:
description: Optional pagination argument that specifies the maximum number of objects to return per request
in: query
name: per_page
required: false
schema:
default: 25
maximum: 100
type: integer
schemas:
ContentTopic:
type: object
additionalProperties: false
required:
- id
- title
- full_details_url
properties:
id:
type: integer
description: Unique identifier of the topic.
title:
type: string
description: Topic title.
full_details_url:
type: string
format: url
description: API link to full topic details.
ContentItem:
allOf:
- $ref: '#/components/schemas/ContentItemMinimal'
- type: object
additionalProperties: false
required:
- id
- title
- abstract
- featured
- approved
- read
- published
- original_url
- metadata
- link_url
- full_details_url
- main_image_url
- main_image
- source
- author
properties:
id:
type: integer
description: Unique identifier of the content item.
metadata:
$ref: '#/components/schemas/ContentMetadata'
topics:
type: array
uniqueItems: true
description: Topic information associated with the content.
items:
$ref: '#/components/schemas/ContentTopic'
link_url:
type: string
format: url
description: URL to the live content link.
full_details_url:
type: string
format: url
description: API URL for full details of the content.
main_image_url:
type: string
format: url
description: URL to the main image of the content.
main_image:
$ref: '#/components/schemas/ContentMainImage'
source:
$ref: '#/components/schemas/ContentSource'
author:
$ref: '#/components/schemas/ContentAuthor'
ContentItemMinimal:
type: object
additionalProperties: false
properties:
title:
type: string
description: Title of the content item.
abstract:
type: string
description: Short summary or abstract of the content.
featured:
type: boolean
description: Indicates whether the content is featured.
approved:
type: string
enum:
- approved
- unapproved
- binned
description: Approval status of the content.
read:
type: boolean
description: Whether the content is marked as read.
published:
type: string
format: date-time
description: Date and time when the content was published.
original_url:
type: string
format: url
description: Original source URL of the content.
List:
type: object
description: Base pagination metadata object.
additionalProperties: false
required:
- total_hits
properties:
total_hits:
type: integer
description: Total number of items matching the query.
next_page:
type: string
format: url
description: Link to the next page of results, if available.
previous_page:
type: string
format: url
description: Link to the previous page of results, if available.
SectionItem:
type: object
additionalProperties: false
required:
- id
- title
- content_url
properties:
id:
type: integer
example: 42
title:
type: string
example: Technology News
content_url:
type: string
format: url
example: https://api.usea01.idio.episerver.net/1.0/sections/42/content
ContentMainImage:
type: object
additionalProperties: false
required:
- width
- height
properties:
width:
type: integer
description: Image width in pixels.
height:
type: integer
description: Image height in pixels.
ContentAuthor:
type: object
additionalProperties: false
required:
- id
- title
- full_details_url
properties:
id:
type: integer
description: Unique identifier of the author.
title:
type: string
description: Name of the author.
full_details_url:
type: string
format: url
description: API URL for full author details.
ContentSource:
type: object
additionalProperties: false
required:
- id
- title
- full_details_url
- display
description: The source (origin) of the content.
properties:
id:
type: integer
description: Unique identifier of the source.
title:
type: string
description: Display name of the source.
full_details_url:
type: string
format: url
description: API URL for full source details.
display:
type: string
enum:
- full
- abstract
- link
description: How the source should be displayed.
ID:
type: object
additionalProperties: false
required:
- id
properties:
id:
type: string
description: Unique identifier.
example: '12345'
ContentList:
description: A paginated list of content items with navigation metadata.
allOf:
- $ref: '#/components/schemas/List'
- type: object
additionalProperties: false
required:
- content
properties:
content:
type: array
description: The list of content items for the current page.
uniqueItems: true
items:
$ref: '#/components/schemas/ContentItem'
SectionPartial:
type: object
additionalProperties: false
description: Partial update schema for a section (used in PATCH requests).
properties:
title:
type: string
description: Updated title of the section.
example: Tech Updates
description:
type: string
description: Updated description for the section.
example: Updated description for technology section.
query:
type: string
description: Updated Lucene query string for the section.
example: category:AI AND language:en
ContentMetadata:
type: object
description: Metadata for a content item, such as language and tags.
properties:
language:
type: string
enum:
- de
- en
- es
- fr
- it
description: Language of the content.
tags:
type: object
description: Arbitrary namespaced tags associated with the content. Values may be strings or arrays of strings (for example, multiple authors).
additionalProperties: true
SectionList:
type: object
additionalProperties: false
required:
- sections
properties:
sections:
type: array
uniqueItems: true
items:
$ref: '#/components/schemas/SectionItem'
Error:
properties:
code:
type: string
message:
type: string
messages:
type: object
uuid:
format: uuid
type: string
type: object
Action:
properties:
changes:
description: The list of changes to apply to the Page. If 'dependencies' is supplied in a Change within 'changes', each ID in 'dependencies' must also be in 'changes'.
items:
$ref: '#/components/schemas/Change'
type: array
page_id:
description: The ID of the Page to apply changes to
format: int64
type: integer
share_link:
description: The share link for the provided Variation and Page combination
externalDocs:
description: share link
url: https://help.optimizely.com/QA_Campaigns_and_Experiments/QA%3A_Share_draft_variations_or_experiences
format: url
readOnly: true
type: string
required:
- page_id
type: object
Variation:
properties:
actions:
description: A collection of changes to run for each page in an experiment. Only applicable to Optimizely X Web.
items:
$ref: '#/components/schemas/Action'
type: array
archived:
description: Whether the variation is archived
type: boolean
description:
description: A description of the variation.
type: string
feature_enabled:
description: For Feature Tests, indicates if the feature should be enabled for the variation
type: boolean
key:
description: Unique string identifier for this variation within the Experiment. Only applicable for Full Stack and Mobile projects.
example: blue_button_variation
maxLength: 64
pattern: ^[a-zA-Z0-9_\-]+$
type: string
name:
description: The name of the variation. Required for Web Experiments and Personalization experiences. Not required for Full Stack Experiments.
example: Blue Button
type: string
status:
description: Current status of the variation
enum:
- active
- paused
- archived
type: string
variable_values:
additionalProperties:
type: string
description: For Feature Tests, the variable values for the variation represented as a map of Variable keys to their values.
type: object
variation_id:
description: The unique identifier for the variation
format: int64
readOnly: true
type: integer
weight:
description: The percentage of your visitors that should see this variation, measured in basis points. 100 basis points = 1% traffic. Variation weights must add up to 10000.
maximum: 10000
minimum: 0
type: integer
required:
- weight
type: object
SectionUpdate:
properties:
archived:
default: false
description: Whether or not the Section has been archived
type: boolean
description:
description: A short description of this Section
type: string
name:
description: The name of this Section
example: Headline Variations
type: string
variations:
items:
$ref: '#/components/schemas/Variation'
type: array
type: object
Section:
properties:
archived:
default: false
description: Whether or not the Section has been archived
type: boolean
description:
description: A short description of this Section
type: string
experiment_id:
description: The ID of the Multivariate Test this Section belongs to
type: integer
id:
description: The ID of this Section
type: integer
name:
description: The name of this Section
example: Headline Variations
type: string
project_id:
description: The ID of the project that this Section belongs to
type: integer
variations:
items:
$ref: '#/components/schemas/Variation'
type: array
required:
- variations
type: object
CSSAttribute:
properties:
background-color:
type: string
background-image:
type: string
border-color:
type: string
border-style:
type: string
border-width:
type: string
color:
type: string
font-family:
type: string
font-size:
type: string
font-weight:
type: string
height:
type: string
position:
type: string
width:
type: string
type: object
ChangeAttribute:
properties:
class:
description: Name of the class to set the element(s) matched by a selector to
example: intro
type: string
hide:
description: Whether or not to hide the element(s) matched by a selector
type: boolean
href:
description: Value of href attribute to add to element(s) matched by a selector
example: example.com
type: string
html:
description: Value of HTML attribute to add to element(s) matched by a selector
example: New Title
type: string
remove:
description: Whether or not to remove the element(s) matched by a selector
type: boolean
src:
description: Value of src attribute to add to element(s) matched by a selector
example: song.mp3
type: string
style:
description: Value of style attribute to add to element(s) matched by a selector
example: background-color:blue;
type: string
text:
description: Value of text attribute to add to the element(s) matched by a selector
example: Some nice message
type: string
type: object
Change:
properties:
allow_additional_redirect:
description: Whether or not to allow additional redirects after redirecting to destination. Required for changes of type 'redirect'
type: boolean
async:
description: Indicates whether or not to execute the change asyncronously. If true, src will be returned in the response. Otherwise, it will be not included.
type: boolean
attributes:
$ref: '#/components/schemas/ChangeAttribute'
config:
description: Configuration properties for the extension
example: '{"name": "Flash Sale Today!", "color": "blue"}'
type: object
css:
$ref: '#/components/schemas/CSSAttribute'
dependencies:
description: A list of dependent change IDs that must happen before this change
example:
- ad1f6acb-78f2-4653-b955-913abd777e16
- ad20a6dd-2083-4964-8ed2-f0dc7baef687
items:
format: uuid
type: string
type: array
destination:
description: URL to redirect to. Required for changes of type 'redirect'. `destination` and `destination_function` cannot be used at the same time
example: https://app.optimizely.com/
type: string
destination_function:
description: A function string to redirect to. Required for changes of type 'redirect'. `destination` and `destination_function` cannot be used at the same time
example: https://app.optimizely.com/
type: string
extension_id:
description: ID of the extension to insert. Required for changes of type 'extension'
readOnly: true
type: string
id:
description: The ID of the change
format: uuid
readOnly: true
type: string
name:
description: Name of the change
example: Setting button text
type: string
operator:
description: Where to instert HTML or image for types 'insert_html' and 'insert_image' with respect to the element(s) matched by 'selector'
example: after
type: string
preserve_parameters:
description: Whether or not to preserve parameters from original request when redirecting to new destination URL. Required for changes of type 'redirect'. For redirects using `destination_function`, `preserve_parameters` must be false.
type: boolean
rearrange:
description: A directive to place the DOM element(s) matched by 'selector' to the position of the element matched by 'insertSelector', with the relation specified by 'operator'. The supplied example moves element matched by 'selector' above the element of class .greyBox
example: '{"insertSelector": ".greyBox", "operator": "before"}'
type: object
selector:
description: CSS selector to determine where changes are applied. Required for changes of type 'attribute', 'insert_html', and 'insert_image'
example: a[href*="optimizely"]
type: string
src:
description: The path to the change payload on the CDN. Only present if 'async' is True.
readOnly: true
type: string
type:
description: 'The type of this change.
- Changes of type ''attribute'' have required fields ''selector'' and '
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/optimizely-sections-api-openapi.yml