Optimizely Workflows API
The Workflows API from Optimizely — 2 operation(s) for workflows.
The Workflows API from Optimizely — 2 operation(s) for workflows.
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/optimizely-workflows-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
version: V3
title: Optimizely CMP Open API Documentation Workflows API
servers:
- url: https://api.cmp.optimizely.com/v3
description: v3 version of Optimizely CMP Open API
security:
- OAuth2:
- openid
- profile
- offline_access
tags:
- name: Workflows
paths:
/workflows:
get:
operationId: listWorkflows
tags:
- Workflows
summary: GET /workflows
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get a list of workflows.
parameters:
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/page_size'
responses:
'200':
description: List of fetched workflows
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
data:
description: List of workflows
type: array
items:
$ref: '#/components/schemas/WorkflowListResponseItem'
pagination:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
next:
type:
- string
- 'null'
example: https://api.cmp.optimizely.com/v3/workflows?offset=10&page_size=10
required:
- data
- pagination
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/workflows/{workflow_id}:
get:
operationId: getWorkflow
tags:
- Workflows
summary: GET /workflows/{workflow_id}
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get a workflow by ID.
parameters:
- name: workflow_id
in: path
required: true
schema:
type: string
description: Unique identifier of the workflow
example: 5fe4925ef8a9378056bf4e37
responses:
'200':
description: Fetched workflow
content:
application/json:
schema:
$ref: '#/components/schemas/WorkflowResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
Forbidden:
description: Permission error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: You do not have the permission to perform this operation
NotFound:
description: Not found error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Resource not found
Unauthorized:
description: Authorization error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Unauthorized
schemas:
WorkflowResponse:
type: object
additionalProperties: false
properties:
id:
type: string
description: Unique identifier of the workflow
example: 6e7f910551b00a722e04188
name:
type: string
description: Name of the workflow
example: The awesome workflow
description:
type:
- string
- 'null'
description: Description of the workflow
example: Nice description
is_active:
type: boolean
description: Indicates whether the workflow is active
example: true
is_flexible:
type: boolean
description: Indicates whether the workflow is flexible
example: true
is_smart_duration_enabled:
type: boolean
description: Indicates whether the smart duration of a workflow is enabled
example: true
is_asset_approval_enabled:
type: boolean
description: Indicates whether the asset approval of a workflow is enabled
example: true
is_resource_management_enabled:
type: boolean
description: Indicates whether the resource management of a workflow is enabled
example: true
steps:
type: array
description: List of steps
items:
type: object
properties:
id:
type: string
description: Identifier of the step
example: 6e7f910551b00a722e04181
name:
type: string
description: Name of the step
example: Step 1
sub_steps:
type: array
description: List of sub-steps
items:
type: object
properties:
id:
type: string
description: Identifier of the sub-step
example: 6e7f910551b00a722e04182
name:
type: string
description: Name of the sub-step
example: Step 1 Substep 1
actions:
type: array
description: List of actions of a sub-step
example:
- name: Approve
- name: Find Content
- name: Write/Edit Content
- name: Publish
- name: Set Publish Destination
- name: Edit Fields
- name: Set Publish Date
- name: Write/Edit Share
- name: Select Image
items:
type: object
properties:
name:
type: string
description: Name of the action
example: Approve
required:
- name
type:
type: string
description: Type of the sub-step
enum:
- default
- external
example: default
assignees:
type: array
description: List of assignees of a sub-step
items:
type: object
properties:
id:
type: string
description: Identifier of the sub-step assignee
example: 6e7f910551b00a722e04182
name:
type: string
description: Name of the assignee
example: Ned Stark
type:
type: string
description: Type of the assignee
enum:
- user
- team
example: user
links:
type: object
description: Meta links
properties:
self:
type: string
description: URL of the assignee
example: https://api.cmp.optimizely.com/v3/users/6e7f910551b00a722e04182
required:
- self
required:
- id
- name
- type
- links
required:
- id
- name
- actions
- type
- assignees
required:
- id
- name
- sub_steps
fields:
type: array
description: List of fields
items:
$ref: '#/components/schemas/ObjectFieldCreateResponse'
required:
- id
- name
- description
- is_active
- is_flexible
- is_smart_duration_enabled
- is_asset_approval_enabled
- is_resource_management_enabled
- steps
- fields
FieldTypeCommon:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
FieldTypeRadio:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
properties:
choices:
type: array
description: Choices of the radio button
items:
type: object
properties:
id:
type: string
description: Identifier of the choice
example: 6ceee2f4fa3411ecb37802420ac8001b
name:
type: string
description: Name of the choice
example: Radio 1 Choice 1
required:
- id
- name
- color
required:
- choices
FieldTypeDropdown:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
properties:
is_multi_select:
type: boolean
description: Select multiple values from the dropdown
choices:
type: array
description: Choices of the dropdown
items:
type: object
properties:
id:
type: string
description: Identifier of the choice
example: 6ceee2f4fa3411ecb37802420ac8001b
name:
type: string
description: Name of the choice
example: Dropdown 1 Choice 1
required:
- id
- name
required:
- is_multi_select
- choices
FieldTypeLabel:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
properties:
is_multi_select:
type: boolean
description: Select multiple values from the label
choices:
type: array
description: Choices of the label
items:
type: object
properties:
id:
type: string
description: Identifier of the choice
example: 6ceee2f4fa3411ecb37802420ac8001b
name:
type: string
description: Name of the choice
example: Label 1 Choice 1
required:
- id
- name
- color
required:
- is_multi_select
- choices
FieldTypeSimpleNumber:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
properties:
has_thousand_separator:
type: boolean
description: Whether the numerical field has a thousand separator
example: true
decimal_places:
type:
- integer
- 'null'
description: Decimal place of the numerical field
example: 2
required:
- has_thousand_separator
- decimal_places
Error:
type: object
additionalProperties: true
description: Error payload
properties:
message:
type: string
description: Message describing the error
example: Not found
errors:
type: object
description: Additional information
additionalProperties: true
properties: {}
required:
- message
ObjectFieldCreateResponse:
type: object
additionalProperties: false
oneOf:
- $ref: '#/components/schemas/FieldTypeCommon'
- $ref: '#/components/schemas/FieldTypeLabel'
- $ref: '#/components/schemas/FieldTypeDropdown'
- $ref: '#/components/schemas/FieldTypeRadio'
- $ref: '#/components/schemas/FieldTypeCheckbox'
- $ref: '#/components/schemas/FieldTypeSimpleNumber'
- $ref: '#/components/schemas/FieldTypePercentageNumber'
- $ref: '#/components/schemas/FieldTypeCurrencyNumber'
discriminator:
propertyName: type
mapping:
checkbox: '#/components/schemas/FieldTypeCheckbox'
currency_number: '#/components/schemas/FieldTypeCurrencyNumber'
date: '#/components/schemas/FieldTypeCommon'
dropdown: '#/components/schemas/FieldTypeDropdown'
image: '#/components/schemas/FieldTypeCommon'
label: '#/components/schemas/FieldTypeLabel'
percentage_number: '#/components/schemas/FieldTypePercentageNumber'
radio_button: '#/components/schemas/FieldTypeRadio'
rich_text: '#/components/schemas/FieldTypeCommon'
simple_number: '#/components/schemas/FieldTypeSimpleNumber'
text: '#/components/schemas/FieldTypeCommon'
text_area: '#/components/schemas/FieldTypeCommon'
video: '#/components/schemas/FieldTypeCommon'
Pagination:
type: object
additionalProperties: false
description: Pagination related information
properties:
next:
type:
- string
- 'null'
description: URL to the next page
example: https://api.cmp.optimizely.com/<some-path-to-next-page>?offset=10&page_size=10
previous:
type:
- string
- 'null'
description: URL to the previous page
example: null
required:
- next
- previous
FieldTypeCurrencyNumber:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
properties:
has_thousand_separator:
type: boolean
description: Whether the numerical field has a thousand separator
example: true
decimal_places:
type:
- integer
- 'null'
description: Decimal place of the numerical field
example: 2
currency_code:
type: string
description: Currency code of the numerical field
example: USD
required:
- has_thousand_separator
- decimal_places
- currency_code
FieldTypeCheckbox:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
properties:
choices:
type: array
description: Choices of the checkbox
items:
type: object
properties:
id:
type: string
description: Identifier of the choice
example: 6ceee2f4fa3411ecb37802420ac8001b
name:
type: string
description: Name of the choice
example: Checkbox 1 Choice 1
required:
- id
- name
- color
required:
- choices
WorkflowListResponseItem:
type: object
additionalProperties: false
properties:
id:
type: string
description: Unique identifier of the workflow
example: 6e7f910551b00a722e04188
name:
type: string
description: Name of the workflow
example: The awesome workflow
description:
type:
- string
- 'null'
description: Description of the workflow
example: Nice description
is_flexible:
type: boolean
description: Indicates whether the workflow is flexible
example: true
required:
- id
- name
- description
- is_flexible
FieldBaseType:
type: object
additionalProperties: false
properties:
id:
type: string
description: Identifier of the field
example: 64be245ec0d79e79fdf1ad84
name:
type: string
description: Name of the field
example: Dropdown 101
values:
type: array
description: List of selected values or from user input
items:
type: string
type:
type: string
description: Type of the field
example: text
required:
- id
- name
- type
- values
FieldTypePercentageNumber:
allOf:
- $ref: '#/components/schemas/FieldBaseType'
- type: object
properties:
decimal_places:
type:
- integer
- 'null'
description: Decimal place of the numerical field
example: 2
required:
- decimal_places
parameters:
page_size:
name: page_size
in: query
description: Number of results to return per page
schema:
type: integer
minimum: 1
maximum: 100
default: 10
example: 15
offset:
name: offset
in: query
description: Starting index of results (zero indexed)
schema:
type: integer
minimum: 0
default: 0
example: 5
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/auth
tokenUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/token
scopes:
openid: Grants the ability to receive a unique identifier for the user.
profile: Grants access to user profile information.
offline_access: Grants the ability to refresh access_token using the refresh token even when user is not present (not logged in).
clientCredentials:
tokenUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/token
scopes: {}
x-tagGroups:
- name: API
tags:
- Uploader
- Library
- Labels
- Brand Compliance
- Tasks
- Task Step
- Campaigns
- Publishing
- Templates
- Users
- Work Requests
- Structured Contents
- Assets
- Milestones
- Teams
- Settings
- Workflows
- Fields
- Events