End-to-end flow
- Discover inventory with
get_productsand collect each product’sformat_options[]. - Resolve publisher-backed options from publisher
adagents.json.formats[]. - Group compatible target declarations using canonical constraint satisfaction.
- Find creative agents through registry reverse lookup.
- Confirm each selected agent’s live
creative.supported_formats[]declaration. - Call
build_creativewith the agent-localtarget_capability_idortarget_capability_ids[]. - Distribute the returned canonical manifests to sellers through
sync_creatives. - Track approval and delivery independently on each destination.
creative_agents[] graph in the canonical flow. list_creative_formats and named format ownership are deprecated in 3.2.
Compare contracts, not IDs
Two sellers may accept the same underlying creative without sharing any local identifier. Compareformat_kind, parameters, and slots:
format_kind alone is insufficient.
Find a producer
Exact publisher format:get_adcp_capabilities and choose the matching live entry.
Build multiple outputs
format_option_ref before trafficking.
Route by interaction model
Distribute and correlate
Callsync_creatives separately on each destination. Reuse your buyer-owned creative_id and concept_id across sellers for correlation, while setting each manifest’s canonical format_kind and target-specific format_option_ref.
Approval is destination-specific. One seller may approve while another rejects or remains pending; do not treat that as a protocol inconsistency.
Failure handling
- Refresh capabilities if a cached
capability_idreturnsFORMAT_NOT_SUPPORTED. - Reject a package plan when selected formats do not cover every included placement.
- Treat an exact publisher-format capability as the creative agent’s claim, not publisher endorsement.
- Do not silently relax dimensions, duration, required slots, or publisher identity.