2026 API changelog for CMP
September 3, 2026 – API update
- Added simple and withReferenceField request examples to POST /tasks/{task_id}/structured-contents and POST /structured-contents.
- Documented that root_content is true for the top-level content and false for any content embedded through a reference field, consistent across the RecursiveStructuredContent, TaskStructuredContentCreateRequest, and LibraryStructuredContentCreateRequest schemas.
- Clarified the request shape for creating structured content that embeds other content through reference fields, on both POST /tasks/{task_id}/structured-contents and POST /structured-contents, with the following rules:
- Field values must be nested under a fields object at every level (on the top-level content and on each embedded content_details) and has_embedded: true must be set on the top-level fields when creating new embedded items through a reference field.
- Server-managed fields such as content_guid and created_by should not be sent. The server assigns them and returns each embedded item inline as expanded content_details. See the API reference for more details.
- See the following API references for more details:
- POST /tasks//structured-contents – API referenceAPI reference.
- POST /structured-contents – API referenceAPI reference.
September 3, 2026 – API update
Renamed the cg_instance_id path parameter to instance_id on POST /content-graphs//query, matching the instance_id field returned by GET /content-graphs. This is a documentation/naming change only: the path parameter's position and value are unchanged, so no client updates are required. See the API referenceAPI reference for more details.
August 20, 2026 – New endpoints
Note
The Content Graph endpoints are experimental.
Added a new Content Graph section with two endpoints. Optimizely Graph indexes an organization's library assets and structured contents and exposes them over GraphQL. These endpoints let you discover the Content Graph instances provisioned for an organization and run GraphQL queries against them.
- GET /content-graphs – Lists the Content Graph instances provisioned for your organization. Filter by type (dam or sc). Returns the standard {data, pagination} envelope.
- POST /content-graphs/{cg_instance_id}/query – Runs a GraphQL query against a Content Graph instance; for example, to check whether an asset has synced to the graph. On a 200, it returns the Graph's GraphQL response unchanged, including data and any extensions.
See the API referenceAPI reference for more details.
July 22, 2026 – API update
- Added the allow_se_indexing boolean field to the PATCH /images/{id}, PATCH /videos/{id}, and PATCH /raw-files/{id} endpoints. This field controls whether a Library asset is allowed to be indexed by search engines. It is optional in the request body and is included in the response of the corresponding GET and PATCH endpoints. See the API referenceAPI reference for more details.
July 19, 2026 – API update
- Added a status query parameter to the GET /tasks endpoint, letting you filter tasks by one or more statuses. It accepts an array of status values, includingArchived, Completed, Overdue, Not Started, In Progress, and On Hold, and matches tasks in any of the statuses provided (for example, ?status=In%20Progress&status=On%20Hold). See the API referenceAPI reference for more details.
July 15, 2026 – API update
- Added an is_protected boolean field to the marketing work request form-field response (GET work request and GET template endpoints). The field is true when a form field is read-only and can only be modified by organization admins. It is absent or false for editable fields. See the API referenceAPI reference for more details.
July 2, 2026 – API update
Added structured_content as a supported related-asset type on the GET /assets/{asset_id}/related-assets endpoint. See the *API reference**API reference* for more information.
- Related assets of type structured_content return content.type: api_url, with the URL pointing to the structured content API endpoint for the asset.
July 1, 2026 – API update
- Added a new library_guid field to the GET /tasks/{id}/assets endpoint response. See the *API Reference* *API Reference* for more information.
- library_guid returns the Library GUID for a task asset after it is published to the Library.
- library_guid is null if the asset is not published to the Library.
- Added GET /publishing-channels and POST /tasks/{task_id}/publishing-intents endpoints to support creating a publishing intent from a task. See the *API reference**API reference* for more information.
- GET /publishing-channels – Returns a paginated list of the organization's publishing channels (offset or page_size). Each channel includes id, name (nullable), and disabled (nullable).
- POST /tasks/{task_id}/publishing-intents – Creates a publishing intent linking the specified task to a channel. Takes a channel_id in the request body and returns the created publishing intent's id.
June 7, 2026 – API update and bugfixes
- Added a new library_guid field to the GET /tasks//assets endpoint response. See the API Reference for more information.
- library_guid returns the Library GUID for a task asset after it is published to the Library.
- library_guid is null if the asset is not published to the Library.
- Added GET /publishing-channels and POST /tasks//publishing-intents endpoints to support creating a publishing intent from a task. See the API reference for more information.
- GET /publishing-channels – Returns a paginated list of the organization's publishing channels (offset or page_size). Each channel includes id, name (nullable), and disabled (nullable).
- POST /tasks//publishing-intents – Creates a publishing intent linking the specified task to a channel. Takes a channel_id in the request body and returns the created publishing intent's id.
May 24, 2026 – New endpoint
- Added GET /assets/{asset_id}/related-assets and PUT /assets/{asset_id}/related-assets endpoints.
- GET – Returns a paginated list of assets related to the specified asset.
- PUT – Replaces all related assets for the specified asset with the provided list.
See GET /assets/{asset_id}/related-assetsGET /assets//related-assets for details.
April 8, 2026 – New endpoint
- Introduced GET /events endpoint. You can now retrieve a paginated list of events. Use the start_date, end_date and campaign_id query parameters to filter results. See GET /eventsGET /events for information.
February 25, 2026 – API update
- Added a new optional field inherit_fields_from to the POST /work-requests/{id}/tasks endpoint's request body. This lets users control where task fields are created from. When set to workflow, fields are inherited from the workflow instead of the work request. The default value (work_request) creates fields from the work request to maintain backward compatibility. See POST /work-requests/{id}/tasksPOST /work-requests//tasks for information.
February 9, 2026 – API update
- Updated GET /workflows/{workflow_id} to include the fields property in the response, which now returns the fields of a workflow. See the GET /workflows/{workflow_id}GET /workflows/.
January 26, 2026 – New endpoint
- Added a GET /milestonesGET /milestones endpoint to retrieve a paginated list of milestones with optional filtering by campaign_id, due_date__from, and due_date__to query parameters. The milestone response now includes a campaign field containing the campaign ID associated with the milestone.