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.
To stage a creative before a campaign exists, use
Create advertiser creative master
instead — same body, advertiser scope, no delivery until you assign it.
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.The MCP upload Task is a separate browser-direct path for JPEG, PNG, and MP4 files. It returns a private
assetRef, not a Creative. Use V3 save_creative with sourceAssets, the campaign’s exact formatOptionRef, and values for every required media, copy, and destination slot to assemble and attach the Creative. The 50 MB multipart limit below does not apply to that Task.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.
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— 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.400 VALIDATION_ERROR— a slot-bound asset targets an undeclared slot, has the wrong asset type, or conflicts with another input on the same slot. V3save_creativealso rejects asourceAssetscomposition that leaves a required canonical slot empty.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