Skip to main content
GET /api/v2/storefront/discover-agents Queries the agenticadvertising.org registry for operator records and resolves the publisher’s adagents.json path, including fallback discovery, for a domain. Use it to see what the AAO registry and publisher identity documents say before you connect or list. Results are server-side cached for 2 minutes; pass refresh=true to bypass the cache.

Request

curl

Parameters

Response

How adagents.json resolves

adagents.json is the file a publisher publishes to declare which agents are authorized to sell its inventory. Discovery does not stop at a 404 on the publisher’s own domain — a missing file there is normal for publishers managed by a network. Resolution follows this order:
  1. Direct — fetch https://<domain>/.well-known/adagents.json. Redirects are followed only within the same registrable domain (an SSRF guard: a third-party host can’t bounce the request onto an internal address).
  2. Authoritative-location redirect — if the direct file is a pointer (it sets authoritative_location and lists no authorized_agents of its own), follow that one hop to the centrally-hosted file it names. This is how a network or SSP can serve a single adagents.json for many publishers without each one hosting a full file. When this path is used, the response reports discovery_method: "authoritative_location".
  3. Manager domain fallback — if there is no direct file at all, read the domain’s ads.txt and follow its managerdomain declaration one hop, fetching that manager’s adagents.json instead. This is what makes network-managed publishers resolve at all: e.g. every Raptive/CafeMedia-managed domain hosts no file of its own and delegates to cafemedia.com. When this path is used, the response reports discovery_method: "ads_txt_managerdomain" and the manager_domain it resolved from.
  4. Authorization is bound to the publisher domain. An agent is authorized only when the resolved file grants it a property that belongs to the queried domain — not by mere presence in authorized_agents[]. A centrally-hosted file covering many publishers cannot make an agent authorized for a domain it wasn’t granted.

Hosting mode vs. resolved file

publisher.hosting.mode describes the AAO registry’s current publisher-record state. It is useful for diagnosing setup, but it is not a replacement for the resolved adagents.json verdict. When a publisher moves from AAO-hosted to self-hosted, the registry only converges after the queried domain’s well-known URL is crawler-accessible. A file on a sibling host such as www.<domain> is not enough by itself; https://<domain>/.well-known/adagents.json must return the file or a crawler-accessible redirect that the resolver can follow. Browser-only access, bot-gated responses, or HEAD/GET differences can leave the registry in an unvalidated state even when a human can view a JSON file in a browser. For AAO-hosted records, aao_hosted does not mean the publisher has self-hosted a full file. It means AAO has a hosted publisher document. Origin attestation happens when the publisher origin points at that hosted document and the registry can verify the pointer. Until then, buyers may see AAO-hosted intent without adagents_json origin verification. For source families that sell publisher inventory through an agent URL, choose the authorized agent URL from the storefront source model:
  • If the seller connects an external AdCP sales agent, publishers authorize that agent’s own URL.
  • If the seller connects its ad server directly to Interchange and uses Interchange’s hosted storefront agent, publishers authorize the canonical Interchange storefront agent URL: https://interchange.io.
Linked storefront inventory uses the upstream storefront’s own authorization model. Modular sources only need publisher adagents.json authorization when the module or execution path exposes a publisher-facing agent URL. For network-managed publishers, this authorization usually belongs in the manager’s file, with publishers delegating to that file through managerdomain or authoritative_location. If one publisher has a direct adagents.json that points somewhere else, that direct file can shadow the manager-domain fallback. Fix the conflict by making the publisher’s file delegate to the same manager file, or by removing the publisher file so its ads.txt managerdomain delegation is used.
AdCP 3.1 resolution semantics. The spec extends adagents.json for managed networks: a manager publishing a large agent network can use the compact publisher_domains[] form (the authoritative file caps at 20 MB), and revocation is expressed via a time-bound revoked_publisher_domains[] — a published, dated fact rather than a silent removal. Interchange resolves all three discovery paths above (direct, authoritative_location, and managerdomain fallback); the compact publisher_domains[] / time-bound revoked_publisher_domains[] content forms are a tracked follow-up.

Errors

  • 400 VALIDATION_ERRORdomain missing or empty.
  • 401 UNAUTHORIZED — missing or invalid bearer token.
See Errors for the full error contract.

Storefront tasks

All core storefront operations.

Resolve brand

Look up a brand profile by domain.

Storefront overview

Marketplace review and AAO signals.