Skip to main content
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

The metadata JSON part carries: Form parts: files=@<path> (one per uploaded asset). Limits: 50 MB per file, 20 files per request.

Response

Returns 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 — a files part with no matching assets[].filename, more than one url_type: clickthrough URL asset, file over 50 MB, or unsupported MIME type.
  • 400 VALIDATION_ERROR — a product-scoped format_option_ref is missing from the campaign, conflicts across campaign products, or disagrees with an explicit format_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. V3 save_creative also rejects a sourceAssets composition that leaves a required canonical slot empty.
  • 404 NOT_FOUNDcampaignId does not exist or is not visible to the authenticated account.
See Errors for the full error contract.

Creative overview

Manifest fields, asset types, and tracking

Get creative manifest

Read the created manifest

Tasks

Async creative_sync polling