Migrating creatives
AdCP 3.0 makes three breaking changes to creative handling: theFormatCategory enum and format type field are removed, weighted creative assignments replace simple ID arrays, and a unified assets array replaces assets_required for format discovery.
Format category removal
What changed
Why
TheFormatCategory enum (video, display, audio, native, social, custom) was a coarse classifier that didn’t map well to multi-asset formats. A “video” format might also require display companion banners and text overlays. The enum forced implementors to pick one category for inherently multi-modal formats, which led to inconsistent filtering and discovery gaps.
Migration
Replaceformat_types filters with asset_types (what the format needs) or format_ids (exact match):
v2:
asset_types returns any format that includes at least one asset of that type — so a video format with companion banners appears in both ["video"] and ["image"] results.
Creative assignments
What changed
Simple migration (equal weights)
v2:weight for equal distribution:
create_media_buy package:
weight is omitted on all assignments, impressions are distributed equally.
Weighted assignments
Control what percentage of impressions each creative receives:Placement targeting
Assign specific creatives to specific placements within a product:placement_ids is omitted, the creative runs on all placements in the package. placement_ids references placement_id values from the product’s placements array.
sync_creatives does not support placement_ids. Use create_media_buy or update_media_buy for placement-level targeting.Creative assignment schema
Each assignment object:Asset discovery
What changed
Format assets
v2 — only listed required asset IDs:required boolean:
What the assets array provides
- Full discovery — see ALL assets a format supports, not just required ones
- Type information — each asset declares its
asset_type(image, video, text, url, etc.) - Requirements — inline constraints (dimensions, length, MIME types)
- Optional assets — trackers, companion banners, and other optional elements are now visible
- Repeatable groups — carousel and multi-item formats use
item_type: "repeatable_group"
Asset item types
Each entry in theassets array has an item_type discriminator:
Individual assets (item_type: "individual"):
item_type: "repeatable_group") for carousels and multi-item formats:
Format cards (replacing preview_image)
v2’spreview_image URL is replaced by format_card, which uses the creative rendering system:
Migration steps
Format category
1
Remove format_types filters
Remove
format_types from list_creative_formats and get_products requests.2
Replace with asset_types
Use
asset_types to filter formats by what assets they accept (e.g., ["video"], ["image"]).3
Or use format_ids
Use
format_ids for exact format matching when you know the specific formats you need.4
Stop reading type field
Remove any code that reads the
type field from format objects — it no longer exists in v3.Creative assignments
1
Replace creative_ids
Replace
creative_ids arrays with creative_assignments object arrays.2
Set creative_id
Set
creative_id on each assignment object.3
Add weights
Add weights if you need non-equal distribution, otherwise omit
weight.4
Add placement_ids
Add
placement_ids if you need placement-level targeting.5
Update sync_creatives calls
These use
creative_assignments too, but without placement_ids.Asset discovery
1
Replace assets_required
Replace
assets_required parsing with assets array iteration.2
Check required boolean
Check
required boolean on each asset instead of assuming all listed assets are required.3
Use asset_type
Use
asset_type to understand what kind of file each asset expects.4
Handle item_type
Check for
"individual" vs "repeatable_group".5
Replace preview_image
Replace
preview_image reads with format_card rendering.6
Validate
Creative manifests must use exact
asset_id values as keys.Creative
Full creative documentation: formats, asset types, manifests, and creative agents.
Related: Channels | Pricing | Geo targeting | Catalogs | Attribution | AdCP 3.0 overview