Optimizely Content Marketing Platform (CMP) API v3

The CMP Open REST API — campaigns, tasks, work requests, templates, content, library assets (images, videos, raw files), users and settings. 115 paths, OAuth 2.0 with both authorization code and client credentials. The most actively changelogged API in the Optimizely estate. Harvested verbatim 2026-08-13.

OpenAPI Specification

optimizely-content-marketing-platform-optimizely-cmp-open-api-documentation-openapi.json Raw ↑
{"openapi":"3.0.0","info":{"version":"V3","title":"Optimizely CMP Open API Documentation"},"servers":[{"url":"https://api.cmp.optimizely.com/v3","description":"v3 version of Optimizely CMP Open API"}],"security":[{"OAuth2":["openid","profile","offline_access"]}],"tags":[{"name":"Uploader"},{"name":"Library"},{"name":"Labels"},{"name":"Brand Compliance"},{"name":"Tasks","description":"Facilitates the integration of external systems with Optimizely CMP through the following use cases:\n1. **External Work Management** – Use the endpoints to link Optimizely CMP with an external system (such as Jira or Aha). The external system can send status updates back to Optimizely CMP so that the Optimizely CMP user receives in-app updates for the status of the 'ticket' in the external system.\n2. **External Document Approval** – (a.k.a. Marketing Legal Review) Use the endpoints to link Optimizely CMP with an external system (such as Veeva PromoMats) to review, annotate, update, and approve marketing assets through the external system. The approval status can be sent back to Optimizely CMP so that the Optimizely CMP user receives in-app updates for the final approval status of the documents from the external system.\nFor information on these use cases, contact Optimizely CMP Support.\n"},{"name":"Campaigns"},{"name":"Publishing"},{"name":"Templates"},{"name":"Users"},{"name":"Work Requests"},{"name":"Structured Contents"},{"name":"Assets"},{"name":"Events"},{"name":"Fields"},{"name":"Milestones"},{"name":"Teams"},{"name":"Settings"},{"name":"Workflows"},{"name":"Task Step"}],"paths":{"/upload-url":{"get":{"operationId":"getUploadUrl","tags":["Uploader"],"summary":"GET /upload-url","description":"Get a presigned URL and related meta fields to upload a file. **The validity time for this URL is 60 minutes**.","responses":{"200":{"description":"Fetched presigned upload URL and related meta fields","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"url":{"description":"Presigned URL to use for uploading a file with an **HTTP POST** request as `multipart/form-data`","type":"string","example":"https://cmp-files.s3-accelerate.amazonaws.com/"},"upload_meta_fields":{"description":"Related meta fields to upload a file. **Items within this field must be sent along as paylod of the POST request, along with the file, to the presigned upload URL**","type":"object","additionalProperties":false,"properties":{"key":{"description":"Unique identifier of the file. **This key will be needed for various file / attachment addition to different CMP resources using endpoints e.g. `POST /v3/assets`, `POST /v3/campaigns/{id}/attachments` etc.**","type":"string","example":"ce8995aea58b11ea8cd90242ac120005"},"policy":{"type":"string","example":"eyJleHBpcmF0aW9uIjogIjIwMjAtMDYtMDNUMTY6MTc6NTbbbbbbImNvbmRpdGlvbnMiOiBbeyJidWNrZXQiOiAibmV3c2NyZWQtY21wLWZpbGVzIn0sIHsia2V5IjogIjY3Y2NhMzcxYTVhZDExZWFiNDNhMGExMjlmMDhlZWQ5In0sIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFTSUFVTlVMQkwzV082RDdSWkZILzIwMjAwNjAzL3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1kYXRlIjogIjIwMjAwNjAzVDE1MTc1N1oifSwgeyJ4LWFtei1zZWN1cml0eS10b2tlbiI6ICJJUW9KYjNKcFoybHVYMlZqRUE4YUNYVnpMV1ZoYzNRdE1TSkhNRVVDSUQrc2FrelZIK05zN0Z4UmtsaW9CZFdldjdZRXlIcHBoVjEyNnRsL0ZadjNBaUVBODFOV1l5TUt1L0UvZ1FyaUlhaVhMaXpxSFFuNnlxTWlWSzQzeU9xYTUaaaaaaU1JZHhBQUdnd3pNRFF4TmpBMU16QXhOVFlpRERxMlN3dVJTR2ZGL2hGRXpDcVJBMlo4NmpkRzNQczMzY3c5bFpFeVBpbmdWSnV0WUQ0RXZuU291NFR1NG9WaGhEZUwyS0QxdFREZmMrNHJmVWRMQ2Y1SWpzb3VRYldMekIzczRXZ2xMQUJFOFJ0VUM5K0o1bVpJUTlYNzJVa0xOUjA0UURpVlliSjdxNS95S25VNUFSZWUzQXdqVHp3UWZPS3dsTnRFODYyVWo4MXlWbDhMdS81d3kwaU5hZFpvbkZPcVBONldJWURpdi9MVzlLKzhWNjRNS2E5bDhtcG1kVll3RWJ2dTRiMENJVFIxQ0tjUHlzVkFNODBKdnZ0aklvQTZXc3RDcWxiM0ZHZEFGVmlnaDdId3JKL3greFNZVU5YVzFvaFNlUExDNXFPSCtoZ2ZqRFVOSDMvbXhEV2V4dWhQbDFGSjF6VlpZQzBMY2U0Y1F6dEtPbTgzZFBqcWI4a09pQVBUWVB3MGFmYnl0QUQyVE8vTmhZdHlvU1BzL0xWS1FYWXhyYk5MZ3N6azRMUjdLeUEydlA5NkJRMll6aVhnWDhTTm13bklDcWRiY2dzZitvNnBWOXRlTlJIczdIS3N2Qm9HYVFESTVhUDQrcmQ1K0h0aWM3RUZqSDlDUkk1bnBpL3cvTVlodkc0dXljWDR4cEJSeE5iSURWbFpuYTBEaUkvVkxmV3JjOWtkUFBhdm10QVhtVHR1U2c4aFFVMnNzMSt0dEJqaE1NRGkzdllGT3VzQnJEMDMyc1BlMWx0QUNRSzlVQUxEUmFYT2VIWjNXbThTVjZlMTErWVhnd3JKZkloQlp2a053OGxHdkRuN2FSK2hXUkpPazljY3pHOC9DTzRqZk8xVlpkZ3N2YU5PaEhpc01sQXVOMVJXallXUGJWRkRoajV3ekZ0OTQrcmJwdFd3dk9vamtXVElUM0o5SWtSNTF6SWJhc1VqTW4rOHRiSjFJbHJnWVFOaDVaaUVPTGZ1bFVHZWl1L2xXdERFbFhKUy9sS0pUTnV1YU1DRnU0NnBocTlvVE9EMWtmSVYrUEFxZEZYV2xQbVZKK3lXeGRLellSV1creDdERjJ6dnZmZm1nc0JBWU01eDh6aEJ3YWIrSXkvTGR6eWdQVUFnaTFTUE9oSktFRjNBejU4aVArdGFDbUxhdmo5cGFRPT0ifV19"},"x-amz-algorithm":{"type":"string","example":"AWS4-HMAC-SHA256"},"x-amz-credential":{"type":"string","example":"REDACTED_AWS_ACCESS_KEY_ID/20343603/us-east-1/s3/aws4_request"},"x-amz-date":{"type":"string","example":"20200603T151757Z"},"x-amz-security-token":{"type":"string","example":"IQoJb3JpZ2luX2VjEA8ccccccWVhc3QtMSJHMEUCID+sakzVH+Ns7FxRklioBdWev7YEyHpphV126tl/FZv3AiEA81NWYyMKu/E/gQriIaiXLizqHQn6yqMiVK43yOqa52AqtAMIdxAAGgwzMDQxNjA1MzAxNTYiDDq2SwuRSGfFddddddqRA2Z86jdG3Ps33cw9lZEyPingVJutYD4EvnSou4Tu4oVhhDeL2KD1tTDfc+4rfUdLCf5IjsouQbWLzB3s4WglLABE8RtUC9+J5mZIQ9X72UkLNR04QDiVYbJ7q5/yKnU5ARee3AwjTzwQfOKwlNtE862Uj81yVl8Lu/5wy0iNadZonFOqPN6WIYDiv/LW9K+8V64MKa9l8mpmdVYwEbvu4b0CITR1CKcPysVAM80JvvtjIoA6WstCqlb3FGdAFVigh7HwrJ/x+xSYUNXW1ohSePLC5qOH+hgfjDUNH3/mxDWexuhPl1FJ1zVZYC0Lce4cQztKOm83dPjqb8kOiAPTYPw0afbytAD2TO/NhYtyoSPs/LVKQXYxrbNLgszk4LR7KyA2vP96BQ2YziXgX8SNmwnICqdbcgsf+o6pV9teNRHs7HKsvBoGaQDI5aP4+rd5+Htic7EFjH9CRI5npi/w/MYhvG4uycX4xpBRxNbIDVlZna0DiI/VLfWrc9kdPPavmtAXmTtuSg8hQU2ss1+ttBjhMMDi3vYFOusBrD032sPe1ltACQK9UALDRaXOeHZ3Wm8SV6e11+YXgwrJfIhBZvkNw8lGvDn7aR+hWRJOk9cczG8/CO4jfO1VZdgsvaNOhHisMlAuN1RWjYWPbVFDhj5wzFt94+rbptWwvOojkWTIT3J9IkR51zIbasUjMn+8tbJ1IlrgYQNh5ZiEOLfulUGeiu/lWtDElXJS/lKJTNuuaMCFu46phq9oTOD1kfIV+PAqdFXWlPmVJ+yWxdKzYRWW+x7DF2zvvffmgsBAYM5x8zhBwab+Iy/LdzygPUAgi1SPOhJKEF3Az58iP+taCmLavj9paQ=="},"x-amz-signature":{"type":"string","example":"0e67ede744d4aed62aaaaaa8e87648b3e98a3e611ccccccc89963bcf70bd02f9"}},"required":["key","policy","x-amz-algorithm","x-amz-credential","x-amz-date","x-amz-signature"]}},"required":["url","upload_meta_fields"]}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/multipart-uploads":{"post":{"operationId":"createMultipartUpload","tags":["Uploader"],"summary":"POST /v3/multipart-uploads","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Create pre-signed URLs for multipart upload of large files","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file_size":{"type":"integer","description":"Size of the file in bytes","minimum":1,"maximum":5497558138880,"example":104857600},"part_size":{"type":"integer","description":"The size of each part of the file to be uploaded. The size of the last part can be smaller and hence can be ignored. `upload_part_count` is calculated based on `file_size` and `part_size`. **The maximum allowed `upload_part_count` is 10000.** So use larger `part_size` for larger files to keep `upload_part_count` under 10000.","default":5242880,"minimum":5242880,"maximum":5368709120,"example":6000000}},"required":["file_size"]}}}},"responses":{"201":{"description":"Successful operation","headers":{"Content-Encoding":{"schema":{"type":"string","enum":["gzip"],"description":"Response is always gzip compressed"},"example":"gzip"}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"ID of the multipart upload","example":"abcdef1234567890"},"expires_at":{"type":"string","format":"date-time","description":"Expiration time of the upload URLs","example":"2025-03-03T12:00:00Z"},"upload_part_count":{"type":"integer","description":"Number of parts for the upload","example":10},"upload_part_urls":{"type":"array","items":{"type":"string","format":"uri"},"description":"Array of pre-signed URLs for each part. **Each file part must be uploaded to the URL using PUT requests following the order of the URLs**","example":["https://s3.amazonaws.com/xyz/abcdef1234567890/0","https://s3.amazonaws.com/xyz/abcdef1234567890/1"]},"links":{"type":"object","properties":{"complete":{"type":"string","format":"uri","description":"URL to complete the upload","example":"https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/complete"},"status":{"type":"string","format":"uri","description":"URL to check the upload status","example":"https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/status"}},"required":["complete","status"]}},"required":["id","expires_at","upload_part_count","upload_part_urls","links"]}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/UnprocessableEntity"}}}},"/multipart-uploads/{id}/status":{"get":{"operationId":"getMultipartUploadStatus","tags":["Uploader"],"summary":"GET /v3/multipart-uploads/{id}/status","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Retrieve the current status of a multipart upload","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"ID of the multipart upload to check status for","example":"abcdef1234567890"}],"responses":{"200":{"description":"Successfully retrieved upload status","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"ID of the multipart upload","example":"abcdef1234567890"},"key":{"type":"string","description":"Unique identifier of the file combining all parts. **This key will be needed for various file / attachment addition to different CMP resources using endpoints e.g. `POST /v3/assets`, `POST /v3/campaigns/{id}/attachments` etc.**","example":"ce8995aea58b11ea8cd90242ac120005/abcdef1234567890"},"status":{"type":"string","enum":["UPLOAD_COMPLETION_NOT_STARTED","UPLOAD_COMPLETION_IN_PROGRESS","UPLOAD_COMPLETION_SUCCEEDED","UPLOAD_COMPLETION_FAILED"],"description":"Current status of the upload","example":"UPLOAD_COMPLETION_IN_PROGRESS"},"status_message":{"type":"string","nullable":true,"description":"Detailed status message","example":"Some error message related to the status"},"expires_at":{"type":"string","format":"date-time","description":"Expiration time of the upload","example":"2025-03-03T12:00:00Z"},"links":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"URL to this status endpoint","example":"https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/status"}},"required":["self"]}},"required":["id","key","status","status_message","expires_at","links"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/multipart-uploads/{id}/complete":{"post":{"operationId":"completeMultipartUpload","tags":["Uploader"],"summary":"POST /v3/multipart-uploads/{id}/complete","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Initiate completion of a multipart upload after all parts have been uploaded","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"ID of the multipart upload to complete","example":"abcdef1234567890"}],"responses":{"202":{"description":"Upload completion initiated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier of the file combining all parts. **This key will be needed for various file / attachment addition to different CMP resources using endpoints e.g. `POST /v3/assets`, `POST /v3/campaigns/{id}/attachments` etc.**","example":"ce8995aea58b11ea8cd90242ac120005/abcdef1234567890"},"links":{"type":"object","properties":{"status":{"type":"string","format":"uri","description":"URL to check upload status","example":"https://api.cmp.optimizely.com/v3/multipart-uploads/abcdef1234567890/status"}},"required":["status"]}},"required":["key","links"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/UnprocessableEntity"}}}},"/folders":{"get":{"operationId":"listFolders","tags":["Library"],"summary":"GET /folders","description":"Get the list of folders sorted by `modified_at` in descending order.","parameters":[{"name":"parent_folder_id","in":"query","required":false,"description":"ID of the parent folder to filter by","schema":{"type":"string"},"example":"1d9d8aeca10811ebbc640242ac12001b"},{"$ref":"#/components/parameters/offset"},{"$ref":"#/components/parameters/page_size"}],"responses":{"200":{"description":"List of fetched folders","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"data":{"description":"List of folders","type":"array","items":{"$ref":"#/components/schemas/FolderResponse"}},"pagination":{"allOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"object","properties":{"next":{"type":"string","nullable":true,"example":"https://api.cmp.optimizely.com/v3/folders?offset=10&page_size=10"}}}]}},"required":["data","pagination"]}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"operationId":"createFolder","tags":["Library"],"summary":"POST /folders","description":"Create a folder. Use the `parent_folder_id` field to create a nested folder.","requestBody":{"description":"Payload to create a folder","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderCreateRequest"}}}},"responses":{"201":{"description":"Created folder","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderResponse"}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/folders/{id}":{"get":{"operationId":"getFolder","tags":["Library"],"summary":"GET /folders/{id}","description":"Get a folder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the folder"},"example":"5d7f910551b00a722e0418830cee6632"}],"responses":{"200":{"description":"Fetched folder","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderResponse"}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"operationId":"updateFolder","tags":["Library"],"summary":"PATCH /folders/{id}","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Update a folder's name and/or parent.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the folder"},"example":"5d7f910551b00a722e0418830cee6632"}],"requestBody":{"description":"Payload to update a folder","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderUpdateRequest"}}}},"responses":{"200":{"description":"Updated Folder","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderResponse"}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"operationId":"deleteFolder","tags":["Library"],"summary":"DELETE /folders/{id}","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Delete a folder.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the folder"},"example":"5d7f910551b00a722e0418830cee6632"}],"responses":{"204":{"description":"Folder deleted successfully"},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/folders/{id}/permissions":{"get":{"operationId":"listFolderPermissions","tags":["Library"],"summary":"GET /folders/{id}/permissions","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> List of entities that have permission to access the folder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the folder"},"example":"5d7f910551b00a722e0418830cee6631"},{"name":"access","in":"query","schema":{"type":"string","description":"To filter by specific access level. Cannot be used in addition to max_access and min_access params.","enum":["view","edit","comment","delete"]},"example":"view"},{"name":"max_access","in":"query","schema":{"type":"string","description":"To filter by specific access level and higher. Cannot be used in addition to access and min_access params.","enum":["view","edit","comment","delete"]},"example":"view"},{"name":"min_access","in":"query","schema":{"type":"string","description":"To filter by specific access level and lower. Cannot be used in addition to access and max_access params.","enum":["view","edit","comment","delete"]},"example":"view"}],"responses":{"200":{"description":"List of permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderPermissionListResponseItem"}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}},"post":{"operationId":"addFolderPermissions","tags":["Library"],"summary":"POST /folders/{id}/permissions","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Grant folder access to users or teams","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the folder"},"example":"5d7f910551b00a722e0418830cee6631"}],"requestBody":{"description":"Payload to add list of accessors to folder permissions","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderPermissionBulkCreateRequest"}}}},"responses":{"204":{"description":"Permission access granted"},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/folders/{id}/permissions/{accessor_id}":{"patch":{"operationId":"updateFolderPermission","tags":["Library"],"summary":"PATCH /folders/{id}/permissions/{accessor_id}","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Update accessor's access level and ownership of folder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the folder"},"example":"5d7f910551b00a722e0418830cee6631"},{"name":"accessor_id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the accessor. Accessor should be a user or a team."},"example":"5d7f910551b00a722e0418830cee6631"}],"requestBody":{"description":"Payload to update permission of accessors","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderPermissionUpdateRequest"}}}},"responses":{"204":{"description":"Permission access granted"},"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"}}},"delete":{"operationId":"removeFolderPermission","tags":["Library"],"summary":"DELETE /folders/{id}/permissions/{accessor_id}","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Remove accessor's access from a folder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the folder"},"example":"5d7f910551b00a722e0418830cee6631"},{"name":"accessor_id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the accessor. Accessor should be a user or a team. Accessor cannot be an owner."},"example":"5d7f910551b00a722e0418830cee6631"}],"responses":{"204":{"description":"Accessor's access removed"},"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"}}}},"/file-urls":{"post":{"operationId":"createFileUrls","tags":["Library"],"summary":"POST /file-urls","description":"Generates download URLs of files given file guid.","requestBody":{"description":"Payload to generate download URLs for files.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileUrlBulkCreateRequest"}}}},"responses":{"200":{"description":"Generated URLs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchFileUrlResponse"}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/assets":{"get":{"operationId":"listAssets","tags":["Library"],"summary":"GET /assets","description":"Get the list of assets. Assets are sorted by `modified_at` in descending order.\nTo get assets that are not inside any folder, pass `include_subfolder_assets=false` in the query param.\n","parameters":[{"name":"type","in":"query","description":"Asset type to filter by. Example: `type=image&type=video`","schema":{"type":"array","items":{"type":"string","enum":["article","image","video","raw_file","structured_content"]},"default":["article","image","video","raw_file","structured_content"]},"style":"form","explode":true,"examples":{"single":{"summary":"Filter by a single type","value":["image"]},"multiple":{"summary":"Filter by multiple types","value":["article","image","video"]}}},{"name":"label","in":"query","description":"Label to filter by. **Must be passed as urlencoded string**. Labels that do not exist are ignored. If none of the provided labels exist, filtering is not applied. Example – `label=%7B%22group%22%3A%22ee63e3ee43925bb5cc8cd17b817d93ee%22%2C%22values%22%3A%5B%226706efc7828cd6aaedbc0434139cd3e1%22%2C%221f32651216cf2aefcaa08be1ea7dedf1%22%5D%7D`","schema":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"group":{"type":"string","description":"Identifier of the label group","example":"2467e583a60e23fda2b89db81a453cd2"},"values":{"type":"array","description":"List of identifiers of the label values","items":{"type":"string","description":"Identifier of the label value","example":"71c378f3fee3d822759d1bdc2aab628c"}}},"required":["group","values"]}},"style":"form","explode":true,"examples":{"single":{"summary":"Filter by a single label","value":["{\"group\": \"ee63e3ee43925bb5cc8cd17b817d93ee\", \"values\": [\"6706efc7828cd6aaedbc0434139cd3e1\", \"1f32651216cf2aefcaa08be1ea7dedf1\"]}"]},"multiple":{"summary":"Filter by multiple labels","value":["{\"group\": \"ee63e3ee43925bb5cc8cd17b817d93ee\", \"values\": [\"6706efc7828cd6aaedbc0434139cd3e1\", \"1f32651216cf2aefcaa08be1ea7dedf1\"]}","{\"group\": \"126123b543912bb5cc12d17b817d9312\", \"values\": [\"aa63e3ee43925bb5cc8cd17b817d93aa\", \"df697bd824a944bf7d4fb6e350d9c5bd\"]}"]}}},{"name":"fields","in":"query","description":"List of fields to filter by. **Must be passed as base64 encoded string**. Fields that do not exist are ignored. If none of the provided fields exist, filtering is not applied. Example – `fields=Wwp7CiJpZCI6ICI2N2E4NDZhMWM3NzU1YTFwNThpNjh5MzVhIiwKInZhbHVlcyI6IFsiNjdhODQ2YTFjNzc1YWU1YWExYTE0YTA1Il0KfQpd=`","schema":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Identifier of the field","example":"2467e583a60e23fda2b89db81a453cd2"},"values":{"type":"array","description":"List of identifiers of the field values","items":{"type":"string","description":"Identifier of the field value","example":"71c378f3fee3d822759d1bdc2aab628c"}}},"required":["id","values"]}},"style":"form","explode":true,"examples":{"single":{"summary":"Filter by a single field","value":["[{\"id\": \"ee63e3ee43925bb5cc8cd17b817d93ee\", \"values\": [\"6706efc7828cd6aaedbc0434139cd3e1\", \"1f32651216cf2aefcaa08be1ea7dedf1\"]}]"]},"multiple":{"summary":"Filter by multiple fields","value":["[{\"id\": \"ee63e3ee43925bb5cc8cd17b817d93ee\", \"values\": [\"6706efc7828cd6aaedbc0434139cd3e1\", \"1f32651216cf2aefcaa08be1ea7dedf1\"]}, {\"id\": \"126123b543912bb5cc12d17b817d9312\", \"values\": [\"aa63e3ee43925bb5cc8cd17b817d93aa\", \"df697bd824a944bf7d4fb6e350d9c5bd\"]}]"]}}},{"name":"created_at__from","in":"query","required":false,"description":"Date and time as the lower limit to filter assets 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 assets by `created_at`, in ISO 8601 UTC format","schema":{"type":"string","format":"date-time"},"example":"2018-11-30T13:32:44Z"},{"name":"modified_at__from","in":"query","required":false,"description":"Date and time as the lower limit to filter assets by `modified_at`, in ISO 8601 UTC format","schema":{"type":"string","format":"date-time"},"example":"2018-11-30T13:32:44Z"},{"name":"modified_at__to","in":"query","required":false,"description":"Date and time as the upper limit to filter assets by `modified_at`, in ISO 8601 UTC format","schema":{"type":"string","format":"date-time"},"example":"2018-11-30T13:32:44Z"},{"name":"folder_id","in":"query","required":false,"description":"ID of the library folder to include assets from","schema":{"type":"string"},"example":"6bb8db20a5b611ebae319b7c541b1a7f"},{"name":"include_subfolder_assets","in":"query","required":false,"description":"Indicates whether assets from subfolders need to be included","schema":{"type":"boolean","default":true},"example":"false"},{"name":"search_text","in":"query","required":false,"description":"Search assets by title or content description","schema":{"type":"string"},"example":"Cute Cat"},{"name":"campaign_id","in":"query","required":false,"description":"ID of the campaign to include assets from","schema":{"type":"string"},"example":"673218bee23887779e9e9a6f"},{"$ref":"#/components/parameters/offset"},{"$ref":"#/components/parameters/page_size"}],"responses":{"200":{"description":"List of fetched assets","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"data":{"description":"List of assets","type":"array","items":{"$ref":"#/components/schemas/AssetResponse"}},"pagination":{"allOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"object","properties":{"next":{"type":"string","nullable":true,"example":"https://api.cmp.optimizely.com/v3/assets?offset=10&page_size=10"}}}]},"total_count":{"type":"number","description":"Total number of assets found based on the request"}},"required":["data","pagination","total_count"]}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"operationId":"createAsset","tags":["Library"],"summary":"POST /assets","description":"Create a new asset. Supports only `images`, `videos`, and `raw files`. See [Upload assets](https://docs.developers.optimizely.com/content-marketing-platform/docs/upload-assets) to upload an asset.","requestBody":{"description":"Payload to create an asset","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryAssetCreateRequest"}}}},"responses":{"201":{"description":"Created asset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/assets/{asset_id}/fields":{"get":{"operationId":"listAssetFields","tags":["Library"],"summary":"GET assets/{asset_id}/fields","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Get the list of fields of an asset.","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the asset"},"example":"5f857f30e1c4a2038d6179e9"},{"$ref":"#/components/parameters/offset"},{"$ref":"#/components/parameters/page_size"}],"responses":{"200":{"description":"List of fetched fields","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"data":{"description":"List of fields","type":"array","items":{"$ref":"#/components/schemas/AssetFieldListResponseItem"}},"pagination":{"allOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"object","properties":{"next":{"type":"string","nullable":true,"example":"https://api.cmp.optimizely.com/v3/assets/5f857f30e1c4a2038d6179e9/fields?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"}}},"put":{"operationId":"updateAssetFields","tags":["Library"],"summary":"PUT /assets/{asset_id}/fields","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Replace existing fields of an asset.","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the asset"},"example":"5f857f30e1c4a2038d6179e9"}],"requestBody":{"description":"Payload to replace the fields","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetFieldsUpdateRequest"}}}},"responses":{"200":{"description":"List of fields after replacement","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"data":{"description":"List of fields","type":"array","items":{"$ref":"#/components/schemas/AssetFieldListResponseItem"}},"links":{"type":"object","additionalProperties":false,"description":"Meta links","properties":{"asset_fields":{"type":"string","description":"URL to get the asset fields","example":"https://api.cmp.optimizely.com/v3/assets/5f857f30e1c4a2038d6179e9/fields"},"asset_url":{"type":"string","description":"URL of the asset","example":"https://api.cmp.optimizely.com/v3/asset-urls/5f857f30e1c4a2038d6179e9"}},"required":["asset_fields","asset_url"]}},"required":["data","links"]}}}},"400":{"$ref":"#/components/responses/ClientError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/assets/{asset_id}/fields/{field_id}":{"put":{"operationId":"updateAssetField","tags":["Library"],"summary":"PUT /assets/{asset_id}/fields/{field_id}","description":"<span style=\"background-color:#e95f6a;padding:5px;border-radius:5px\">Experimental</span> Update the field value of an asset. ","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the asset"},"example":"5f857f30e1c4a2038d6179e9"},{"name":"field_id","in":"path","required":true,"schema":{"type":"string","description":"Unique identifier of the field of the asset"},"example":"4f857f30e1c4a2038d6179e7"}],"requestBody":{"description":"Payload to update the field value","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetFieldUpdateRequest"}}}},"responses":{"200":{"description":"Updated t

# --- truncated at 32 KB (500 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/_original/optimizely-content-marketing-platform-optimizely-cmp-open-api-documentation-openapi.json