Limits and behavior
- Every route exists in two addressing variants: by Depict
listing_id(a UUID) or byexternal_id(the listing’s id in your PIM, CMS or e-commerce platform). Use whichever id system you store. - The products response contains no listing metadata — no title, breadcrumbs or content cards. Fetch metadata with the GET routes.
- Filters, sorting and pagination on the products endpoint work exactly as on search; the same limits apply (cursor
limit1–250,hits_per_page1–200, no mixing of pagination styles). - There is no
queryfield on listing requests. The per-response tracking id isproduct_listing_request_id(search:search_request_id) and each display carriesproduct_listing_result_id(search:search_result_id). - The GET routes carry a 10-second cache header — they are designed to be called on every page load.
- An unknown
listing_idorexternal_idreturns 404. - v2’s body-based addressing (
query_id— typically the slug — plustypeto disambiguate name collisions) does not exist on v3. v3 addresses listings by path parameter, so slug ambiguity cannot occur. - Response fields with null values are omitted from the JSON (
exclude_noneserialization).
The listing object
All listing endpoints return listings in this shape:Listing metadata
GET /v3/listings/{listing_id} or GET /v3/listings/external_id/{external_id} with query parameters merchant, market, locale (all required) and optional session_id.
The response is the listing object plus:
Content cards
Content cards are merchandising tiles (images or videos) placed in the product grid. On the wire the field is namedcontent_blocks. Each element:
Navigation tree
GET /v3/listings with query parameters merchant, market, locale (all required) and an optional repeatable types parameter to filter by listing_type.
The response is a list of listing objects, each extended with a recursive children array of the same shape — the complete listing tree in one call.
Products in a listing
POST /v3/listings/{listing_id}/products or POST /v3/listings/external_id/{external_id}/products with a JSON body:
Example request:

