Skip to main content
AdCP 3.2 uses canonical creative declarations end to end. A declaration answers what assets and constraints a delivery surface accepts. It is not the identity of the creative agent that produced the assets. Named 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_kind selects the canonical vocabulary.
  • params narrows 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_domain and use format_option_id within the product.
Commercial facts—price, floor, availability, auction mechanics, and deal eligibility—belong on the product and pricing option, not in format parameters.

Creative-agent capability

A creative agent wraps a canonical declaration in an agent-local operation entry:
The buyer passes 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

Use 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_domain and format_option_id.
  • Equal format_kind values alone do not prove compatibility.
For a product with multiple included placements, the selected format set must cover every placement. A seller must reject or refine a package with an uncovered placement; it must not silently remove inventory. If a multi-publisher product omits 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

  1. Call get_products and read the selected product’s format_options[].
  2. Resolve publisher-backed options from the publisher’s adagents.json.formats[] when needed.
  3. Query the registry by canonical kind or exact publisher option to find creative agents.
  4. Call the selected creative agent’s get_adcp_capabilities directly.
  5. Pass its local capability_id to build_creative.
  6. Submit the returned canonical manifest through sync_creatives.
The impression-time renderer is the seller/publisher delivery runtime behind sync_creatives. It is not discovered as a creative-agent endpoint merely because it composes the ad at serve time.