format_id objects and list_creative_formats are deprecated compatibility surfaces. New implementations use the model below. Fields named exactly format_ids are removed in AdCP 4.0; singular format_id, named-format definitions, and the task follow separate schedules.
The three authorities
These declarations share the same canonical shape so buyers can compare them, but they are independent claims. A creative agent does not become publisher-authoritative by copying a publisher identity, and a sales product does not enumerate approved creative vendors.
Canonical declaration
format_kindselects the canonical vocabulary.paramsnarrows that canonical with dimensions, durations, codecs, slots, and other structural constraints.{publisher_domain, format_option_id}identifies an exact publisher-owned option when applicable.- Product-local options omit
publisher_domainand useformat_option_idwithin the product.
Creative-agent capability
A creative agent wraps a canonical declaration in an agent-local operation entry:capability_id to that same agent as build_creative.target_capability_id. The returned manifest does not carry the capability ID because it must remain portable.
Portable manifest
format_option_ref when the receiving product has multiple options of the same kind or needs an exact publisher/product option. Otherwise format_kind plus the manifest assets may be sufficient.
Matching and satisfaction
Canonical compatibility is directional. A creative capability or manifest satisfies a target only when it meets every target constraint:- Exact dimensions and durations must match.
- A requested range must be contained within the accepted range; overlap is insufficient.
- Required slots must be present with compatible asset types.
- An exact publisher claim must match both
publisher_domainandformat_option_id. - Equal
format_kindvalues alone do not prove compatibility.
placements[], each publisher_properties[] selector is an eligibility slice: product-local options apply to every slice, publisher-scoped options only to their publisher, and an indeterminate slice fails closed until the seller supplies placements or a refined product.
Discovery flow
- Call
get_productsand read the selected product’sformat_options[]. - Resolve publisher-backed options from the publisher’s
adagents.json.formats[]when needed. - Query the registry by canonical kind or exact publisher option to find creative agents.
- Call the selected creative agent’s
get_adcp_capabilitiesdirectly. - Pass its local
capability_idtobuild_creative. - Submit the returned canonical manifest through
sync_creatives.
sync_creatives. It is not discovered as a creative-agent endpoint merely because it composes the ad at serve time.