POST /api/v2/buyer/campaigns/{campaignId}/creatives/create
Creates a manifest from uploaded files plus JSON metadata in a single multipart/form-data request. Scope3 auto-classifies assets, processes HTML to rewrite local references to CDN URLs, inserts ADCP tracking macros, and generates a preview. The body is a metadata JSON part plus zero or more files parts; each file pairs with the matching assets[].filename.
Propagation to sales agents is asynchronous. On campaign execute, the manifest syncs to each agent that supports its format as a
creative_sync task — poll sync_status to confirm receipt. See Tasks for the async polling model.Request
Parameters
Themetadata JSON part carries:
Form parts:
files=@<path> (one per uploaded asset). Limits: 50 MB per file, 20 files per request.
Response
201. sync_status.synced is false until the campaign executes and the manifest propagates. When a manifest with the same (campaign_id, name) already exists, the existing one is returned with already_exists: true and ignored_files set — use Update creative manifest to add assets to it.
Errors
400 VALIDATION_ERROR— afilespart with no matchingassets[].filename, more than oneurl_type: clickthroughURL asset, file over 50 MB, or unsupported MIME type.400 VALIDATION_ERROR— a product-scopedformat_option_refis missing from the campaign, conflicts across campaign products, or disagrees with an explicitformat_kind.404 NOT_FOUND—campaignIddoes not exist or is not visible to the authenticated account.
Related
Creative overview
Manifest fields, asset types, and tracking
Get creative manifest
Read the created manifest
Tasks
Async creative_sync polling