PUT /api/v2/buyer/campaigns/{campaignId}/creatives/{creativeId}
Updates manifest fields (name, brief, format) and manages assets — add new uploads, delete existing assets, reclassify types, or set the primary asset. Sent as multipart/form-data: a metadata JSON part plus files parts for any new_assets. Updates re-sync to media buys the creative is already on.
V3
save_creative.sourceAssets is create-only. To replace media that was assembled from a browser-direct upload, create a new Creative with the intended format slots, confirm its readback, and then archive the old Creative.Request
Parameters
Themetadata JSON part carries (all optional — omit to preserve):
Form parts:
files=@<path> for each entry in new_assets.
Response
target_format_ids and frequencyCaps are list-replace, not merge — send the complete intended list.
In this V2 REST response, file_size_status is a VIDEO-only evidence marker. verified means that the VIDEO file_size is authoritative; a VIDEO file_size of 0 without the marker is a compatibility sentinel for unavailable evidence. IMAGE and AUDIO file-size behavior and provenance are unchanged, so do not infer their evidence status from the marker’s absence.
MCP and internal manifest results do not use this REST compatibility mapping, so unavailable evidence may appear as file_size: null with file_size_status absent.
Errors
400 VALIDATION_ERROR— anew_assetsentry with no matchingfilespart, adelete_asset_idsvalue not on the manifest, orprimary_asset_idpointing at an ineligible asset type.404 NOT_FOUND—campaignIdorcreativeIddoes not exist or is not visible to the authenticated account.
Related
Creative overview
Asset types and propagation
Get creative manifest
Read the manifest before editing
Delete creative manifest
Remove the manifest