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.
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

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.

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.
  • 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