Optimizely Tasks API
Manage content tasks, assignments, and workflow steps within the content marketing platform.
Operations 46
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
Ask an LLM
“Can I pull a list of all our content tasks and see where each one sits in the workflow?”
“Is the task list paginated with a limit and offset?”
Tell an agent
List all content tasks and their current workflow status.
Show the next {limit} content tasks starting at offset {offset}.
Ask an LLM
“How do I open a new content task in Optimizely CMP from code?”
“Can a new task be assigned to someone with a due date and linked to a campaign when it is created?”
Tell an agent
Create a new content task titled {title}.
Create a task called {title} assigned to {assignee_id}, due {due_date}, under campaign {campaign_id}.
Ask an LLM
“What details come back when I look up a single content task by its taskId?”
“Can I fetch one content task's title, assignee and due date from the taskId endpoint?”
Tell an agent
Get the content task with taskId {taskId}.
Show me the assignee and due date on content task {taskId}.
Ask an LLM
“Can I change a task's assignee_id and due_date with a full PUT update?”
“Which fields does the PUT task update accept, like labels and description?”
Tell an agent
Reassign task {taskId} to {assignee_id} using the PUT update.
Set the due_date of task {taskId} to {due_date} and its description to {description}.
Ask an LLM
“How do I read a CMP task by its id to check its owner, start and due dates?”
“Does the CMP task lookup show which workflow the task follows?”
Tell an agent
Get CMP task {id}.
Look up CMP task {id} and tell me its owner and workflow.
Ask an LLM
“Can I move a task to a different owner or change its start_at and due_at dates with a partial update?”
“Is it possible to switch the workflow a CMP task follows?”
Tell an agent
Change the owner of task {id} to {owner_id}.
Reschedule task {id} to start at {start_at} and be due at {due_at}.
Ask an LLM
“Can I attach a web link to a content task?”
“Is there a way to add a titled URL reference to a task?”
Tell an agent
Add the URL {url} to task {task_id}.
Attach link {url} titled {title} to task {task_id}.
Ask an LLM
“Where do I read the creative brief written for a task?”
“Can I fetch just the brief of a task without the rest of its details?”
Tell an agent
Get the brief for task {id}.
Show me what the brief says on task {id}.
Ask an LLM
“Which custom fields have been added to this task?”
“Can I page through a task's custom fields with page_size?”
Tell an agent
List the custom fields on task {id}.
Show {page_size} custom fields of task {id} starting at offset {offset}.
GET
/tasks/{task_id}/custom-fields/{custom_field_id}
Get one custom field on a task · GET /tasks/{task_id}/custom-fields/{custom_field_id}
#
Ask an LLM
“What value is set on a specific custom field of a task?”
“How can I read a single task custom field by its id?”
Tell an agent
Get custom field {custom_field_id} on task {task_id}.
Tell me the current value of custom field {custom_field_id} for task {task_id}.
PATCH
/tasks/{task_id}/custom-fields/{custom_field_id}
Set the values of a task custom field · PATCH /tasks/{task_id}/custom-fields/{custom_field_id}
#
Ask an LLM
“Can I fill in a dropdown or checkbox custom field on a task through the API?”
“What custom field types can be updated on a task, such as date or rich text fields?”
Tell an agent
Set custom field {custom_field_id} on task {task_id} to {values}.
Select choices {values} in the dropdown custom field {custom_field_id} of task {task_id}.
GET
/tasks/{task_id}/custom-fields/{custom_field_id}/choices
List the choices of a task custom field · GET /tasks/{task_id}/custom-fields/{custom_field_id}/choices
#
Ask an LLM
“What options can I pick from in a task's dropdown custom field?”
“How do I find the choice IDs I need before setting a multi-select field on a task?”
Tell an agent
List the available choices for custom field {custom_field_id} on task {task_id}.
Show {page_size} choices of custom field {custom_field_id} in task {task_id}.
Ask an LLM
“Which form fields does a task currently have, beyond its custom fields?”
“Is there an experimental endpoint to list a task's fields with paging?”
Tell an agent
List the fields of task {task_id}.
Show {page_size} fields of task {task_id} from offset {offset}.
Ask an LLM
“Can I add a new form field to an existing task?”
“Is adding fields to a task still an experimental feature?”
Tell an agent
Add a new field to task {task_id}.
Put an extra form field on task {task_id}.
PUT
/tasks/{task_id}/fields/{field_id}
Update a field on a task · PUT tasks/{taks_id}/fields/{field_id}
#
Ask an LLM
“How do I change an existing form field on a task?”
“Can one field of a task be updated without touching its other fields?”
Tell an agent
Update field {field_id} on task {task_id}.
Change the value held in field {field_id} of task {task_id}.
DELETE
/tasks/{task_id}/fields/{field_id}
Remove a field from a task · DELETE tasks/{task_id}/fields/{field_id}
#
Ask an LLM
“Can I take a form field off a task I no longer need?”
“What happens when I remove a field from a task?”
Tell an agent destructive · confirm first
Remove field {field_id} from task {task_id}.
Delete the field {field_id} on task {task_id}.
GET
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}
Get a substep of a task workflow step · GET /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}
#
Ask an LLM
“How can I check whether a substep of a task is completed, in progress or skipped?”
“Who is assigned to a particular substep of a task's workflow step?”
Tell an agent
Get substep {sub_step_id} of step {step_id} in task {task_id}.
Show the status of substep {sub_step_id} under step {step_id} of task {task_id}.
PATCH
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}
Complete, skip or reassign a task substep · PATCH /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}
#
Ask an LLM
“Can I mark a workflow substep as completed or skipped from my integration?”
“Is it possible to reassign a single task substep to another user?”
Tell an agent
Mark substep {sub_step_id} of step {step_id} in task {task_id} as completed.
Assign substep {sub_step_id} of step {step_id} on task {task_id} to {assignee_id}.
GET
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/external-work
Get external work info for a task substep · GET /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/external-work
#
Ask an LLM
“Where do I see the external work linked to an external substep of a task?”
“Can I read the status and link of work tracked outside CMP for a substep?”
Tell an agent
Get the external work details for substep {sub_step_id} of step {step_id} in task {task_id}.
Show the external work status on substep {sub_step_id}, step {step_id}, task {task_id}.
PATCH
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/external-work
Update external work info on a task substep · PATCH /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/external-work
#
Ask an LLM
“Can my external tool report its work status back onto a task's external substep?”
“Does the external work link on a substep have to be an HTTPS URL?”
Tell an agent
Set the external work status of substep {sub_step_id} in step {step_id} of task {task_id} to {status}.
Link external work {url} titled {title} to substep {sub_step_id}, step {step_id}, task {task_id}.
GET
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments
List comments on a task substep · GET /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments
#
Ask an LLM
“What has the team said in the comments on a specific task substep?”
“Can I read every comment thread left on one substep of a task?”
Tell an agent
List the comments on substep {sub_step_id} of step {step_id} in task {task_id}.
Show all feedback left on task {task_id} substep {sub_step_id} (step {step_id}).
POST
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments
Comment on a task substep · POST /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments
#
Ask an LLM
“How do I leave a comment on a workflow substep of a task?”
“Can I reply to an existing substep comment with a parent comment id?”
Tell an agent
Post a new comment saying {value} on task {task_id}, step {step_id}, substep {sub_step_id}.
Reply {value} to comment {parent_comment_id} on substep {sub_step_id}, step {step_id}, task {task_id}.
GET
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/fields
List the fields of a task substep · GET /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/fields
#
Ask an LLM
“Which form fields belong to one substep of a task?”
“Can I page through the fields attached to a task substep?”
Tell an agent
List the fields on substep {sub_step_id} of step {step_id} in task {task_id}.
Show {page_size} substep fields for task {task_id}, step {step_id}, substep {sub_step_id}.
GET
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments/{comment_id}
Get one comment on a task substep · GET /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments/{comment_i…
#
Ask an LLM
“Can I fetch a single substep comment by its comment id?”
“What attachments and text does a particular substep comment contain?”
Tell an agent
Get comment {comment_id} on substep {sub_step_id} of step {step_id} in task {task_id}.
Open substep comment {comment_id} from task {task_id}, step {step_id}, substep {sub_step_id}.
PATCH
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments/{comment_id}
Edit a comment on a task substep · PATCH /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments/{comment…
#
Ask an LLM
“Can I edit the text of a comment I already left on a substep?”
“How do I fix a typo in an existing task substep comment?”
Tell an agent
Change substep comment {comment_id} in task {task_id}, step {step_id}, substep {sub_step_id} to read {value}.
Edit comment {comment_id} on substep {sub_step_id} of step {step_id}, task {task_id}, with the new text {value}.
DELETE
/tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments/{comment_id}
Delete a comment on a task substep · DELETE /tasks/{task_id}/steps/{step_id}/sub-steps/{sub_step_id}/comments/{commen…
#
Ask an LLM
“Can I remove a comment someone posted on a task substep?”
“Is deleting a substep comment permanent?”
Tell an agent destructive · confirm first
Delete comment {comment_id} on substep {sub_step_id} of step {step_id} in task {task_id}.
Remove my substep comment {comment_id} from task {task_id}, step {step_id}, substep {sub_step_id}.
Ask an LLM
“What images, videos, articles and other content are attached to a task?”
“Can I page through all the assets of a task?”
Tell an agent
List the assets on task {id}.
Show {page_size} assets of task {id} starting at offset {offset}.
Ask an LLM
“Can I add an image I just uploaded, or something from the library, to a task?”
“Which asset types can be uploaded first and then attached to a task?”
Tell an agent
Add an asset from the library to task {id}.
Attach my newly uploaded video to task {id}.
POST
/tasks/{task_id}/assets/{asset_id}/drafts
Upload a new draft of a task asset · POST /tasks/{task_id}/assets/{asset_id}/drafts
#
Ask an LLM
“How do I upload a revised version of an image that is already on a task?”
“Can I add a new draft to an article asset, or only to images, videos and raw files?”
Tell an agent
Add a new draft to asset {asset_id} in task {task_id}.
Upload the revised file as the next draft of task {task_id} asset {asset_id}.
GET
/tasks/{task_id}/assets/{asset_id}/drafts
List drafts of a task asset · GET /tasks/{task_id}/assets/{asset_id}/drafts
#
Ask an LLM
“How many drafts or versions has an asset in a task gone through?”
“Can I see the draft history of one task asset?”
Tell an agent
List the drafts of asset {asset_id} in task {task_id}.
Show the version history for task {task_id} asset {asset_id}.
GET
/tasks/{task_id}/assets/{asset_id}/comments
List comments on the latest version of a task asset · GET /tasks/{task_id}/assets/{asset_id}/comments
#
Ask an LLM
“What review feedback has been left on the latest version of a task asset?”
“Do asset comments cover older drafts or only the current version?”
Tell an agent
List the comments on asset {asset_id} in task {task_id}.
Show reviewer feedback on the current draft of task {task_id} asset {asset_id}.
POST
/tasks/{task_id}/assets/{asset_id}/comments
Comment on the latest version of a task asset · POST /tasks/{task_id}/assets/{asset_id}/comments
#
Ask an LLM
“Can I leave review feedback directly on an image or video in a task?”
“Which asset types accept comments through the API?”
Tell an agent
Comment {value} on asset {asset_id} in task {task_id}.
Leave the feedback {value} on the latest draft of task {task_id} asset {asset_id}.
GET
/tasks/{task_id}/assets/{asset_id}/fields
List the fields of a task asset · GET /tasks/{task_id}/assets/{asset_id}/fields
#
Ask an LLM
“What metadata fields are set on an asset inside a task?”
“Can I read the field values attached to one task asset?”
Tell an agent
List the fields of asset {asset_id} in task {task_id}.
Show the metadata fields on task {task_id} asset {asset_id}.
PUT
/tasks/{task_id}/assets/{asset_id}/fields
Replace the fields of a task asset · PUT tasks/{task_id}/assets/{asset_id}/fields
#
Ask an LLM
“Can I overwrite all the metadata fields on a task asset at once?”
“Does updating task asset fields replace the whole set rather than merge?”
Tell an agent
Replace the fields of asset {asset_id} in task {task_id}.
Overwrite the metadata fields on task {task_id} asset {asset_id} with the new set.
Ask an LLM
“What files are attached to a task as reference material?”
“Can I page through a task's attachments?”
Tell an agent
List the attachments on task {id}.
Show {page_size} attachments of task {id}.
GET
/tasks/{task_id}/articles/{article_id}
Get an article in a task · GET /tasks/{task_id}/articles/{article_id}
#
Ask an LLM
“How do I read the article content being produced in a task?”
“Can I fetch a specific article asset from a task by its id?”
Tell an agent
Get article {article_id} from task {task_id}.
Show me the text of article {article_id} in task {task_id}.
GET
/tasks/{task_id}/images/{image_id}
Get an image in a task · GET /tasks/{task_id}/images/{image_id}
#
Ask an LLM
“Can I retrieve the details of an image attached to a task?”
“Where do I find an image asset's metadata inside a task?”
Tell an agent
Get image {image_id} from task {task_id}.
Fetch the image {image_id} that belongs to task {task_id}.
GET
/tasks/{task_id}/videos/{video_id}
Get a video in a task · GET /tasks/{task_id}/videos/{video_id}
#
Ask an LLM
“How do I look up a video asset that lives in a task?”
“Can I get a task's video details by its video id?”
Tell an agent
Get video {video_id} from task {task_id}.
Pull up the video {video_id} in task {task_id}.
GET
/tasks/{task_id}/raw-files/{raw_file_id}
Get a raw file in a task · GET /tasks/{task_id}/raw-files/{raw_file_id}
#
Ask an LLM
“Can I retrieve a raw file, like a PDF or design source, attached as a task asset?”
“What does the API return for a raw file asset in a task?”
Tell an agent
Get raw file {raw_file_id} from task {task_id}.
Fetch the raw file asset {raw_file_id} on task {task_id}.
Ask an LLM
“How do I post a general comment on a task rather than on one of its assets?”
“Can a task comment include attachments?”
Tell an agent
Post the comment {value} on task {task_id}.
Add a note {value} to the task {task_id} discussion.
POST
/tasks/{task_id}/publishing-intents
Queue a task for publishing to a channel · POST /tasks/{task_id}/publishing-intents
#
Ask an LLM
“Can I mark a task's content to be published on a specific publishing channel?”
“What do I need to create a publishing intent for a task?”
Tell an agent
Create a publishing intent for task {task_id} on channel {channel_id}.
Schedule task {task_id} to publish through channel {channel_id}.
POST
/tasks/{task_id}/structured-contents
Add structured content to a task · POST /tasks/{task_id}/structured-contents
#
Ask an LLM
“How do I create a structured content item of a given content type inside a task?”
“Can new structured content be given a primary locale and an expiry date?”
Tell an agent
Add structured content of content type {content_type_guid} to task {task_id}.
Create structured content titled {title} in locale {primary_locale} using content type {content_type_guid} on task {task_id}.
GET
/tasks/{task_id}/structured-contents/{content_id}
Get structured content in a task · GET /tasks/{task_id}/structured-contents/{content_id}
#
Ask an LLM
“Can I read a structured content item from a task by its guid?”
“What fields come back for a task's structured content?”
Tell an agent
Get structured content {content_id} from task {task_id}.
Show the fields of structured content {content_id} in task {task_id}.
PATCH
/tasks/{task_id}/structured-contents/{content_id}
Update structured content in a task · PATCH /tasks/{task_id}/structured-contents/{content_id}
#
Ask an LLM
“Can I rename structured content or mark it expired from a task?”
“Is it possible to change a structured content item's primary locale or expiry datetime?”
Tell an agent
Rename structured content {content_id} in task {task_id} to {title}.
Set structured content {content_id} on task {task_id} to expire at {expiry_datetime}.
DELETE
/tasks/{task_id}/structured-contents/{content_id}
Delete structured content from a task · DELETE /tasks/{task_id}/structured-contents/{content_id}
#
Ask an LLM
“Can I remove a structured content item that was added to a task by mistake?”
“Is deleting structured content from a task reversible?”
Tell an agent destructive · confirm first
Delete structured content {content_id} from task {task_id}.
Remove the structured content item {content_id} on task {task_id}.
POST
/tasks/{task_id}/structured-contents/{content_id}/drafts
Create a draft of structured content in a task · POST /tasks/{task_id}/structured-contents/{content_id}/drafts
#
Ask an LLM
“How do I save a new draft of a structured content item without replacing it?”
“What does the content_body of a structured content draft need to contain?”
Tell an agent
Create a draft of structured content {content_id} in task {task_id} with body {content_body}.
Save {content_body} as a new draft for task {task_id} structured content {content_id}.
Documentation
📖
Documentation
https://docs.developers.optimizely.com/web-experimentation/docs/rest-api-introduction
📖
Documentation
https://docs.developers.optimizely.com/feature-experimentation/reference/feature-experimentation-api-overview
📖
Documentation
https://docs.developers.optimizely.com/optimizely-campaign/docs/rest-api
📖
Documentation
https://docs.developers.optimizely.com/content-management-system/v1.5.0-content-delivery-api/docs/content-delivery-api
📖
Documentation
https://docs.developers.optimizely.com/content-management-system/v1.6.0-content-management-api/docs/getting-started
📖
Documentation
https://docs.developers.optimizely.com/platform-optimizely/docs/getting-started-with-graphql-api
📖
Documentation
https://docs.developers.optimizely.com/optimizely-data-platform/reference/introduction
📖
Documentation
https://docs.developers.optimizely.com/content-marketing-platform/docs/open-api-introduction
📖
Documentation
https://docs.developers.optimizely.com/commerce-connect/v1.3.0-service-api-developer-guide/docs/optimizely-service-api
Specifications
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/optimizely-tasks-api-openapi.yml
⚙
AsyncAPI
https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/asyncapi/optimizely-feature-experimentation-asyncapi.yml
⚙
AsyncAPI
https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/asyncapi/optimizely-cmp-asyncapi.yml