Skip to main content
A Discovery Card is the buyer-visible projection of a storefront. The same card powers Marketplace results and the discoveryCard object returned by the buyer storefront APIs. It is not a separate inventory or policy object. Use the card to answer three questions before sending a brief:
  • Who operates this storefront?
  • Does it accept briefs for this channel and country?
  • Has the seller chosen to disclose any Advertising Policies?

Coverage declarations

coverageDeclarations contains the source-specific coverage claims. Each entry keeps the channels and countries declared by one source together. A managed storefront normally has one declaration; a pass-through storefront can have one declaration per active upstream inventory source. Never combine channels from one declaration with countries from another. The top-level channels and countries arrays are aggregate search and display facets. They are the union of known values, not a promise that every listed channel is available in every listed country. Country values are ISO 3166-1 alpha-2 codes such as FR, US, and JP. The legacy channel alias audio is normalized to the AdCP channel streaming_audio. Use GET /api/v2/buyer/storefronts?region=FR&channel=ctv to find storefronts that accept CTV briefs in France. Legacy market-group filters such as EMEA remain available for older region declarations, but new Discovery Cards use country codes. A combined channel-and-country filter matches only when one declaration satisfies both known dimensions. During the compatibility rollout, missing country coverage remains eligible for country-filtered discovery so existing storefronts do not disappear. Known country restrictions still apply, and an explicitly empty authoritative pass-through declaration remains ineligible. The coverage object makes completeness explicit: acceptsAllCountries: true remains the only explicit worldwide declaration. For managed storefronts that still have legacy unknown country coverage, Seller Setup starts the editor with every country selected. Saving records that worldwide behavior explicitly; leaving the old record untouched preserves the temporary compatibility behavior above.

Where card fields come from

The card carries provenance so buyers and agents can distinguish operator, registry, and upstream facts.
  • Managed storefronts author their accepted channels and countries in Seller Setup. Their identity is resolved from the verified operator domain and its brand profile, with an operator-authored Marketplace description.
  • External pass-through storefronts project coverage from each source’s standard AdCP media_buy.portfolio.primary_channels and primary_countries. Those values are read-only in Interchange because the upstream sales agent is authoritative. The card turns each source’s two arrays into one correlated coverageDeclarations entry; accepted countries equal primary countries, and separate sources are never combined.
Brand identity remains owned where its brand.json is hosted. Seller Setup opens the specific AAO brand Page for an AAO-hosted identity. For a self-hosted identity, it instead tells the seller to update /.well-known/brand.json on the verified operator domain. All Marketplace cards and buyer storefront responses use this same projection; clients do not need to resolve a second profile to reproduce the card.

Advertising Policies

advertisingPolicies is an optional buyer-facing disclosure. A managed seller chooses whether to publish its Brief Acceptance rules, Creative Policy, or both. Approval routing, approver identities, revision notes, and per-buyer overrides are never included. A pass-through storefront can expose the upstream AdCP media_buy.portfolio.advertising_policies value read-only. The complete disclosure is bounded to 10,000 characters. Storefront list responses use hasAdvertisingPolicies plus a bounded advertisingPoliciesExcerpt; retrieve storefront detail when you need the complete disclosed text. Advertising Policies help evaluate fit, but absence is not permission. The seller or upstream agent still decides whether to accept a brief.

Response fields

V3 compatibility

For new V3 integrations, read the card with get({ kind: "storefront", include: ["discoveryCard"] }) or open the discovery_card Page. The older media_kit, save_media_kit, and open_page({ page: "media_kit" }) contracts remain available as deprecated V3 compatibility surfaces; they do not define the canonical Discovery Card model.

List storefronts

Filter Marketplace storefronts by country and channel.

Storefront object guide

See how storefronts, inventory sources, and pass-through routing relate.