Discover products
Discover products with automatic session creation. If discoveryId is not provided, a new session is created automatically. Returns discoveryId and discovered products.
Authorizations
API key or access token
Body
Request body for discovering products with optional auto-session creation
Advertiser ID used to resolve BrandReference
1 <= x <= 900719925474099112345
Existing discovery ID. If not provided, a new discovery session is created.
"abc123-def456-ghi789"
Campaign ID to seed discovery from. The campaign brief, flight dates, and budget are used as defaults (explicit request values take precedence).
"campaign_ea5e33dd-d65b-44c7-a3e8-8e1db1d137b4"
Storefront-issued proposal code (e.g. "PRP-XK4A29"). When set, the server short-circuits discovery and returns the seller's saved snapshot for this code. Caller's resolved operator must match the proposal's assigned operator. Other discovery filters (brief, budget, channels, refine, etc.) are ignored.
"PRP-XK4A29"
Channels to search (defaults to ["display", "olv", "ctv", "social"]). Accepts any AdCP MediaChannel value. "video" is an alias for "olv"; "audio" is an alias for "streaming_audio".
display Countries to target (defaults to brand agent countries if not specified)
250^[A-Z]{2}$Natural language context for product search
5000"Looking for premium video inventory targeting tech enthusiasts"
Budget for the discovery
x > 050000
Optional flight dates for availability filtering
Filter products by publisher domain (exact domain component match)
1"hulu"
Filter products by pricing model
cpm, vcpm, cpc, cpcv, cpv, cpp, cpa, flat_rate, time "cpm"
quick waits up to 30 seconds per storefront agent and returns partial results if slow agents miss the window. long waits up to 210 seconds per storefront agent; ask the user before using it.
quick, long "quick"
Optional explicit per-storefront wait in seconds, max 210. Overrides waitMode. Ask the user before setting this above 30.
1 <= x <= 210120
Progressive delivery: return a fast first wave of already-answered sellers with resultsComplete: false and pendingAgents, while remaining sellers keep landing in the background. Follow with browse_discovery using sinceRevision until resultsComplete is true; if it is still false after roughly the wait budget (or pendingAgents stops shrinking), treat remaining pendingAgents like incompleteAgents and proceed with what you have. waitMode/waitSeconds still cap each seller's own deadline. A repeat of a recent identical query may return complete immediately. Ignored when refine or screening is present — those responses are terminal-only on the legacy Discover surface; use buyer get_products for progressive screened replacement pages.
true
Filter discovery to these storefronts. Highly encouraged when the buyer wants results scoped to specific sellers — pass the IDs returned by list_storefronts. Combined with storefrontNames using OR logic. An empty array or omitted field both mean "no request-level filter" — if a campaignId is also provided and the campaign was created with storefrontIds, the campaign-level value is used in that case.
501 <= x <= 9007199254740991Filter discovery to storefronts whose name matches one of these values (case-insensitive substring match). Use when the buyer mentions a seller by name. Combined with storefrontIds using OR logic. An empty array or omitted field both mean "no request-level filter" — campaign-level pinning is used in that case if available.
50255Maximum number of product groups to return (default: 10, max: 10)
1 <= x <= 1010
Number of groups to skip for pagination
0 <= x <= 90071992547409910
Maximum products to return per group (default: 10, max: 15)
1 <= x <= 1510
Number of products to skip within each group (default: 0, max: 1000)
0 <= x <= 10005
When true, includes detailed ADCP agent request/response debug logs in the response for troubleshooting
Deprecated alias for evaluation. Discover delegates these instructions to the shared proposal-evaluation engine.
Optional managed proposal evaluation: disposition, buyer-side enrichment, bounded seller refinement, and optional comparative ranking.
Refinement instructions for iterating on previous discovery results. When provided, discoveryId is required.
1 - 100 elementsA refinement instruction for iterating on discovery results. Scoped to the overall request, a specific product, or a specific proposal.
- Option 1
- Option 2
- Option 3
Response
Discover products
Response from discovering products
Discovery ID
"abc123-def456-ghi789"
Products grouped by publisher
Total number of product groups available
0 <= x <= 900719925474099125
Whether more groups are available beyond those shown
Summary statistics for discovered products
Budget context if budget was provided
Recommended media plans from sales agents (ADCP v3). Each proposal explains WHY certain products are recommended together and how budget should be allocated.
Storefront agents that timed out or returned ADCP incomplete scopes under the requested wait window. Present without debug=true so callers can offer a longer retry without exposing raw agent logs.
Adapter connections that require re-authentication. When present, one or more storefronts were skipped because their OAuth credentials have expired. Go to Settings > Connections to reconnect, then retry.
True when at least one storefront timed out or returned ADCP incomplete scopes and the request used less than the maximum interactive wait window.
Per-agent debug info. Only present when debug=true; includes timing so callers can decide whether to retry with a longer wait.
Seller's response to each refinement instruction, matched by position to the request's refine array. Only present when refine was provided.
Progressive delivery: monotonic snapshot revision. Present on progressive responses and sinceRevision polls; pass it back as sinceRevision to fetch only newly landed seller groups.
0 <= x <= 90071992547409913
Progressive delivery: false while sellers are still answering in the background. Poll browse_discovery with sinceRevision until true.
false
Progressive delivery: sellers still in flight (not yet answered). Distinct from incompleteAgents, which timed out or answered partially at the final revision.
Progressive delivery: authoritative storefront response counts, independent of result-group pagination and sinceRevision delta pages.
Advanced support diagnostics. Returned only to elevated/admin contexts and intended for internal troubleshooting.
Human-readable next-step guidance. On progressive responses this spells out the exact continuation call (browse with sinceRevision); on empty results it explains what was queried and suggests adding a brief/brand URL or broadening filters.
"2 seller(s) still working — call browse_discovery with sinceRevision: 3 for newly landed results."