Optimizely Work Requests API
The Work Requests API from Optimizely — 13 operation(s) for work requests.
The Work Requests API from Optimizely — 13 operation(s) for work requests.
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-work-requests-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 Work Requests 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: Work Requests
paths:
/work-requests:
get:
operationId: listWorkRequests
tags:
- Work Requests
summary: GET /work-requests
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get a list of work requests. '
parameters:
- name: created_by
in: query
schema:
type: string
description: Unique identifier of the creator of the work requests. You can append multiple times, for example `created_by=creator1&created_by=creator2`.
example:
- 1265ca474ba987cc925164aa7
- 606995f714ace404593cce4c
- name: status
in: query
schema:
type: string
description: Status of a work request. You can append multiple times, for example `status=Submitted&status=Declined`
enum:
- Submitted
- Accepted
- Completed
- Declined
example:
- Accepted
- Submitted
- name: order_by
in: query
schema:
type: string
description: Ordering parameter of the work requests.
enum:
- priority
- status
- created_at
- due_date
example: due_date
- name: order_as
in: query
schema:
type: string
description: Sorting order of the work requests.
enum:
- asc
- desc
example: desc
- name: template_ids
in: query
description: Unique identifiers of the templates. You can append multiple times, for example `template_ids=template1&template_ids=template2`.
schema:
type: array
items:
type: string
example:
- 1265ca474ba987cc925164aa7
- 606995f714ace404593cce4c
- name: created_at__from
in: query
required: false
description: Date and time as the lower limit to filter work requests by `created_at`, in ISO 8601 UTC format
schema:
type: string
format: date-time
example: '2018-11-30T13:32:44Z'
- name: created_at__to
in: query
required: false
description: Date and time as the upper limit to filter work requests by `created_at`, in ISO 8601 UTC format
schema:
type: string
format: date-time
example: '2018-12-31T23:59:59Z'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/page_size'
responses:
'200':
description: List of fetched work requests
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
data:
description: List of work requests
type: array
items:
$ref: '#/components/schemas/WorkRequestResponse'
pagination:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
next:
type:
- string
- 'null'
example: https://api.cmp.optimizely.com/v3/work-requests?offset=10&page_size=10
required:
- data
- pagination
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
post:
tags:
- Work Requests
summary: POST /work-requests
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Create a work request. '
operationId: createWorkRequest
requestBody:
description: Payload to create a work request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestCreateRequest'
example:
template_id: 5c89aebe611eca11302420af
assignees:
- 74ba987cc9251689abc123
form_fields:
- identifier: title
type: text
values:
- Some title
- identifier: brief
type: brief
values:
- type: attachment_brief
value:
key: 10d5c89aebe611eca11302420ac80002
name: Attachment
- identifier: 630c486a90546926f034ea28
type: richtext
values:
- <b>rich</b> text
- identifier: 630c479690546926f034ea13
type: label
values:
- 630c479690546926f034ea15
- identifier: 630c47be90546926f034ea17
type: dropdown
values:
- 630c47be90546926f034ea18
- identifier: 630c482b90546926f034ea22
type: simple_number
values:
- 1234.345678
- identifier: 630c484b90546926f034ea23
type: percentage_number
values:
- 23
- identifier: 630c481b90546926f034ea21
type: currency_number
values:
- 123.56
- identifier: 630c485e90546926f034ea24
type: checkbox
values:
- 630c485e90546926f034ea25
- identifier: 630c47d290546926f034ea1b
type: radio_button
values:
- 630c47d290546926f034ea1c
- identifier: creative_assets
type: file
values:
- key: creative-asset-key-1
name: Creative Asset 1
- key: creative-asset-key-2
name: Creative Asset 2
- identifier: due_date
type: date
values:
- '2022-02-20T12:02:03.000000Z'
- identifier: media_links
type: text_area
values:
- 'some text
more text'
responses:
'201':
description: Created work request
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/work-requests/{id}:
get:
operationId: getWorkRequest
tags:
- Work Requests
summary: GET /work-requests/{id}
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get a work request by ID. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: 9119a313057e401189407116fcd3aa24
responses:
'200':
description: Fetched work request
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateWorkRequest
tags:
- Work Requests
summary: PATCH /work-requests/{id}
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Updates a work request. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: 9119a313057e401189407116fcd3aa24
requestBody:
description: Payload to update the work request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestUpdateRequest'
responses:
'204':
description: Work request updated
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/work-requests/{id}/comments:
get:
operationId: listWorkRequestComments
tags:
- Work Requests
summary: GET /work-requests/{id}/comments
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get list of comments for a work request. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/page_size'
responses:
'200':
description: List of comments for the work request
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
data:
description: List of work request comments
type: array
items:
$ref: '#/components/schemas/WorkRequestCommentResponse'
pagination:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
next:
type:
- string
- 'null'
example: https://api.cmp.optimizely.com/v3/work-requests/da80cfd7bbf84959a8a981acbad996b3/comments?offset=10&page_size=10
required:
- data
- pagination
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
post:
operationId: addCommentToWorkRequest
tags:
- Work Requests
summary: POST /work-requests/{id}/comments
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Post a comment on a work request. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
requestBody:
description: Payload to add comment
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CommentWithReplyCreateRequest'
responses:
'201':
description: Created comment for the work request
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestCommentResponse'
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/work-requests/{work_request_id}/comments/{comment_id}:
get:
operationId: getWorkRequestComment
tags:
- Work Requests
summary: GET /work-requests/{work_request_id}/comments/{comment_id}
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get a work request comment by ID.
parameters:
- name: work_request_id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
- name: comment_id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request comment
example: 5fe38c39574b52a62a089239
responses:
'200':
description: Fetched work request comment
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestCommentResponse'
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/work-requests/{id}/attachments:
post:
operationId: addAttachmentToWorkRequest
tags:
- Work Requests
summary: POST /work-requests/{id}/attachments
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Create attachments for a work request. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
requestBody:
description: Payload to create an attachment
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttachmentRequest'
responses:
'201':
description: Created attachment for the work request
content:
application/json:
schema:
$ref: '#/components/schemas/AttachmentResponse'
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/work-requests/{work_request_id}/attachments/{attachment_id}:
delete:
operationId: deleteWorkRequestAttachment
tags:
- Work Requests
summary: DELETE /work-requests/{work_request_id}/attachments/{attachment_id}
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Delete a work request attachment.
parameters:
- name: work_request_id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: 7674a2a69f8d4eb48e8d4dafaebc7238
- name: attachment_id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request attachment
example: 62f2052962f36e010b9471f1
responses:
'204':
description: Deleted the attachment
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/work-requests/{id}/creative-assets:
post:
operationId: createWorkRequestCreativeAsset
tags:
- Work Requests
summary: POST /work-requests/{id}/creative-assets
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Create creative assets for a work request. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
requestBody:
description: Payload to create creative assets
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreativeAssetRequest'
responses:
'200':
description: Created creative asset for the work request
content:
application/json:
schema:
$ref: '#/components/schemas/CreativeAssetResponse'
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/work-requests/{work_request_id}/creative-assets/{creative_asset_id}:
delete:
operationId: deleteWorkRequestCreativeAsset
tags:
- Work Requests
summary: DELETE /work-requests/{work_request_id}/creative-assets/{creative_asset_id}
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Delete a work request creative asset.
parameters:
- name: work_request_id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: 7674a2a69f8d4eb48e8d4dafaebc7238
- name: creative_asset_id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request creative asset
example: 209d2d281e2b11edbac602420ac80012
responses:
'204':
description: Deleted the creative asset
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/work-requests/{id}/approved-assets:
get:
operationId: listWorkRequestApprovedAssets
tags:
- Work Requests
summary: GET /work-requests/{id}/approved-assets
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get a list of approved assets of a work request.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/page_size'
responses:
'200':
description: List of approved assets for the work request
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
data:
description: List of work request approved assets
type: array
items:
$ref: '#/components/schemas/WorkRequestApprovedAssetResponse'
pagination:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
next:
type:
- string
- 'null'
example: https://api.cmp.optimizely.com/v3/work-requests/da80cfd7bbf84959a8a981acbad996b3/approved-assets?offset=10&page_size=10
required:
- data
- pagination
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/work-requests/{id}/campaigns:
post:
operationId: createCampaignFromWorkRequest
tags:
- Work Requests
summary: POST /work-requests/{id}/campaigns
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Create a new campaign from a work request. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
requestBody:
description: Payload to create a campaign
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestCampaignRequest'
responses:
'201':
description: Created a campaign from a work request
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestCampaignResponse'
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/work-requests/{id}/tasks:
post:
operationId: createTaskFromWorkRequest
tags:
- Work Requests
summary: POST /work-requests/{id}/tasks
description: '<span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Create a new task from a work request. '
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
requestBody:
description: Payload to create a task
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestTaskRequest'
responses:
'201':
description: Created a task from a work request
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestTaskResponse'
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/work-requests/{id}/related-resources:
get:
operationId: listWorkRequestRelatedResources
tags:
- Work Requests
summary: GET /work-requests/{id}/related-resources
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Get a list of work request related resources.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: da80cfd7bbf84959a8a981acbad996b3
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/page_size'
responses:
'200':
description: List of fetched work request related resources
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
data:
description: List of work request related resources
type: array
items:
$ref: '#/components/schemas/WorkRequestRelatedResourceResponse'
pagination:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
next:
type:
- string
- 'null'
example: https://api.cmp.optimizely.com/v3/work-requests/5fe4925ef8a9378056bf4e37/related-resources?offset=10&page_size=10
required:
- data
- pagination
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/work-requests/{work_request_id}/form-fields/{form_field_identifier}:
put:
operationId: updateWorkRequestFormField
tags:
- Work Requests
summary: PUT /work-requests/{work_request_id}/form-fields/{form_field_identifier}
description: <span style="background-color:#e95f6a;padding:5px;border-radius:5px">Experimental</span> Updates a work request form field.
parameters:
- name: work_request_id
in: path
required: true
schema:
type: string
description: Unique identifier of the work request
example: 7674a2a69f8d4eb48e8d4dafaebc7238
- name: form_field_identifier
in: path
required: true
schema:
type: string
description: Unique identifier of the work request form field
example: 209d2d281e2b11edbac602420ac80012
requestBody:
description: Payload to update the work request form field
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestFormFieldUpdateRequest'
responses:
'200':
description: Updated work request form field
content:
application/json:
schema:
$ref: '#/components/schemas/WorkRequestRequestFormFieldUpdateResponse'
'400':
$ref: '#/components/responses/ClientError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
components:
schemas:
WorkRequestRequestFormFieldCurrencyNumberTypePayload:
type: object
properties:
type:
type: string
description: Type of the form field
example: currency_number
enum:
- currency_number
values:
type: array
description: Currency amount for the form field
maxItems: 1
items:
type: string
example:
- '123.45'
required:
- type
- values
TextTypeFormFieldResponse:
allOf:
- $ref: '#/components/schemas/BaseFormFieldResponse'
- type: object
properties:
values:
type: array
items:
type: string
description: Any string value
example: Sample text
WorkRequestRequestFormFieldCheckboxTypeResponse:
type: object
properties:
type:
type: string
description: Type of the form field
example: checkbox
enum:
- checkbox
values:
type: array
description: Values for the form field
items:
type: object
properties:
id:
type: string
description: Unique identifier of the choice
name:
type: string
description: Name of the choice
required:
- id
- name
example:
- id: 63342902e84c7544973c07ce
name: Option 1
- id: 633429b2e84c7544973c07e7
name: Option 2
required:
- type
- values
WorkRequestRequestFormFieldBriefTypeResponse:
type: object
properties:
type:
type: string
description: Type of the form field
example: brief
enum:
- brief
values:
type: array
description: Brief value payload
maxItems: 1
items:
oneOf:
- $ref: '#/components/schemas/WorkRequestTextBriefResponse'
- $ref: '#/components/schemas/WorkRequestAttachmentBriefResponse'
discriminator:
propertyName: type
mapping:
text_brief: '#/components/schemas/WorkRequestTextBriefResponse'
attachment_brief: '#/components/schemas/WorkRequestAttachmentBriefResponse'
required:
- type
- values
FileTypeFormFieldValueResponse:
type: object
properties:
id:
type: string
description: Unique identifier of the file
example: 6dzf4ds4fds4f4564dzsfd
name:
type: string
description: Name of the file
example: Sample Name
url:
type: string
description: URL of the file
example: https://files.cmp.optimizely.com/download/8nv8svsdnivjusdijuvisdv?token=token
required:
- id
- name
- url
MultiChoiceTypeFormFieldResponse:
allOf:
- $ref: '#/components/schemas/BaseFormFieldResponse'
- type: object
properties:
values:
type: array
description: Array of choices
items:
type: object
properties:
id:
type: string
description: Unique identifier of the choice
example: 9119a313057e401189407116fcd3
name:
type: string
description: Name of the choice
example: Choice 1
required:
- id
- name
WorkRequestTaskResponse:
type: object
additionalProperties: false
properties:
id:
type: string
description: Unique identifier of the task
example: 8q7f910551b00a722e0418830cee6612
title:
type: string
description: Title of the task
example: The awesome task
reference_id:
type: string
description: Reference Id of the task
example: TSK-1111
start_at:
type:
- string
- 'null'
format: date-time
description: Start date of the task, in ISO 8601 UTC format (2022-12-01T06:00:00Z)
example: '2022-12-01T06:00:00Z'
due_at:
type:
- string
- 'null'
format: date-time
description: Due date of the task, in ISO 8601 UTC format (2022-12-31T06:00:00Z)
example: '2022-12-31T06:00:00Z'
owner_id:
type: string
description: Unique identifier of the owner
example: 8q7f910551b00a722e0418830cee6612
links:
type: object
additionalProperties: false
description: Meta links
properties:
self:
type: string
description: URL of the task
example: https://api.cmp.optimizely.com/v3/tasks/8q7f910551b00a722e0418830cee6612
owner:
type:
- string
- 'null'
description: URL of the task owner
example: https://api.cmp.optimizely.com/v3/users/8q7f910551b00a722e0418830cee6612
required:
- self
- brief
required:
- id
- title
- start_at
- due_at
- owner_id
- links
AttachmentRequest:
type: object
additionalProperties: false
properties:
key:
type: string
minLength: 1
maxLength: 100
description: Unique identifier of the file upload session. This is the `upload_meta_fields.key` field retrieved from the `/v3/upload-u
# --- truncated at 32 KB (86 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/optimizely-work-requests-api-openapi.yml