Optional header to identify SDK client requests. Format: sdk-name/version (e.g., layers-js-sdk/1.0.0). When provided with version >= 1.0.0, the server returns HTTP 425 (Too Early) with a Retry-After header when prepared search data isn’t ready yet, instead of blocking, so the client can poll until the search is ready.
The url-encoded search query. Layers normalizes the query before validating it, stripping invisible characters and converting Unicode punctuation to ASCII equivalents. After normalization, the query must be 2 to 255 characters. Queries outside this range return HTTP 422.
Product attributes to include in the response. By default, all attributes are included except opt-in attributes noted below. Available attributes include: id, title, handle, body_html, vendor, product_type, tags, images, available, created_at, updated_at, published_at, price_range, options, original_options, metafields, named_tags, calculated, category, featured_media, is_gift_card, has_variants_that_require_components, combined_listing_parent_product_id, combined_listing_role, first_or_matched_variant, and variants. The collection_titles attribute is opt-in: pass it in attributes to include the array of collection titles each product belongs to. It is excluded from responses by default. See the Product Schema for detailed descriptions, including nested field selection for slicing arrays and filtering collections (for example, images[:2].src, variants[sku=ABC].price, metafields[namespace=custom]).
ULID identifier from the Prepare Search endpoint for optimized search execution. When provided, reuses the precomputed intent analysis and query expansions from that prepare call so the search returns faster.
Storefront endpoints accept nested AND/OR filter groups up to two levels deep. Each nested group must contain at least one expression; empty nested groups are rejected. Metafield filter properties may include hyphens in their namespace or key, for example metafields.my-app.fit-type.Refer to the dedicated Filter Expressions guide to learn more about filter expressions.
Facets to be included. Accepts both exact facet codes (e.g., "vendor", "options.Size") and wildcard patterns (e.g., "options.*", "metafields.product.*").Wildcard patterns expand to all matching attribute codes. For example, "options.*" expands to all option facets like "options.Size" and "options.Color". Wildcards must match at least one attribute code to be valid.Examples:
When true, any facet backed by a metaobject_reference or list.metaobject_reference metafield is returned with a companion facetDisplay object. Each entry maps a facet value (the metaobject handle) to the referenced metaobject’s display_name and fields. When the metaobject defines a color or image field, the entry also carries a resolved swatch object.Use this when your storefront filter UI needs human-readable labels or nested field data (for example, a color name or swatch hex) instead of the raw handle. When false or omitted, only the handles are returned in facets.Values are looked up from the local metaobject cache. Handles with no matching cached metaobject are omitted from facetDisplay and remain as plain values in facets. See Metaobjects and reference metafields for the normalized shape of each entry.
Apply discounts to products, variants, or collections. When provided, price-based sorting and filtering will use discounted prices. See the Discount Entitlements guide for detailed usage.
Optional filter group that qualifies products for the discount based on their attributes (for example, tags or vendor). Uses the same shape as the top-level filter_group parameter. Matches are additive with products, variants, and collections on the same entitlement.
Specify which product variants should be selected by default in the first_or_matched_variant field. This is a presentation preference for search and browse results, not a product filter. Request transforms can set or replace this complete list with the set_default_selected_options action.
The option value to match (e.g., "February", "Blue").
Behavior:
Uses OR logic - selects the first variant matching ANY of the specified option values
Query and keyword matches, plus pinned variant choices, take priority over these defaults
Configured defaults take priority over a confident semantic match to a variant
If no variant matches the configured defaults, a confident semantic match can still be selected before falling back to the first variant by position
Automatically skipped when any option or variant filters are applied (filters take precedence)
Only affects the first_or_matched_variant field in the response
Works with Variant Breakouts: product tiles respect default selected options, and variant tiles respect non-breakout default selected options, preferring matching variants within each breakout group and falling back to position when needed. This does not change breakout grouping or collapse breakout tiles.
Persistent browser identifier that remains constant across sessions. Used to recognize returning visitors for long-term personalization. Automatically generated and managed by the Storefront Pixel.
Temporary session identifier. Layers-generated sessions expire after 30 minutes without activity. The Storefront Pixel refreshes the rolling window at page load and on every route change, including pages without tracked events. When a legacy Shopify or fallback cookie is available, Layers prefers it and does not control its lifetime. Without consent, the pixel uses a sessionStorage or in-memory fallback and does not write an analytics cookie.
Shopify B2B company location GID (e.g. gid://shopify/CompanyLocation/123456789) for the authenticated buyer. Layers resolves the catalog assigned to the company location and uses it to scope results: only products in the catalog are returned, prices come from the catalog’s price list, and excluded collections return 404. Omit for retail (DTC) traffic.When you pass companyLocationId, you must also pass the buyer’s customerId. Layers verifies with Shopify that the customer belongs to the company that owns the location before resolving the catalog; unauthorized or unauthenticated requests return a 403. See B2B catalogs.
Contextual information about the customer’s session, behavior, and environment. Automatically collected by the Storefront Pixel; must be manually provided for headless integrations. See Contextual Information for implementation guidance.
Geographic location information for regional personalization and merchandising. Layers determines it from the IP address for client-side requests. For server-side API calls (headless integrations), provide geo explicitly.
Number of units of this line in the cart. Layers rounds fractional values down to a whole number. Missing values, non-numeric values, and values below 1 count as 1. Layers uses it to calculate the cart subtotal for Free Shipping Picks.
The cart subtotal at which the shopper qualifies for free shipping, in the request currency’s major units (e.g. 75.00 for $75), not cents. Layers ignores values that aren’t a number greater than 0. Required for Free Shipping Picks blocks.
Shopify’s /cart.js and Liquid money values such as cart.total_price and item.price are in cents. Divide them by 100 before sending productsInCart[].price or freeShippingThreshold.
Products the shopper has viewed during the current session. Layers uses these as short-lived personalization signals, with recent views weighted more heavily. Only the 20 most recent views are used. The Storefront Pixel populates this automatically; send it manually only for headless integrations. See Recently viewed products.
Unit price in the request currency’s major units (e.g. 29.00 for $29), not cents, at time of purchase. Accepts a JSON number or a numeric string such as "29.00".
The page the search was started from (e.g., the referring page URL or page type). Layers accepts this field but doesn’t currently use it for ranking or rules.
Click identifiers from the landing URL, keyed by parameter name (e.g., fbclid, gclid). Layers derives the originating network from them as marketing.clickSource and discards the raw tokens. See Context data structure.
A/B test assignments for the shopper, keyed by experiment ID with the assigned group ID as the value (e.g., {"exp_123": "group_b"}). Used by the Experiment Group contextual condition. The Layers app embed fills this from Intelligems automatically; values your storefront sends for the same experiment take precedence. Entries whose value isn’t a string are dropped.
Shopify customer tags on the shopper’s profile (e.g., ["vip", "wholesale"]). Collected by the Storefront Pixel for signed-in customers; null for guests.
Shopify customer segment IDs the shopper belongs to. Server-resolved: Layers populates this from the signed-in identity.customerId on every request and ignores any value you send. null for guests and customers with no segment memberships. Available as context.customer.segments in contextual conditions.
Explicitly set the Shopify Market for this request. Must be provided inside context; it is not a top-level request body parameter. Used for market-specific product availability filtering and contextual pricing. Accepts a two-letter country code (e.g., "US", "CA"), a numeric Shopify Market ID (e.g., "12345"), or a Shopify Market GID (e.g., "gid://shopify/Market/12345").When not provided, the market is automatically resolved from context.geo.country (or the shopper’s detected country for client-side requests). If no matching market is found, the store’s primary market is used as the fallback.When you send a two-letter country code that belongs to the resolved market, Layers also prices for that country, ahead of the shopper’s detected location. See Market resolution.Behavior depends on the store’s market application mode (set under Settings > Search & Discovery > Search Behavior, in the Markets card):
Restrict to market catalog — Products are filtered to only those available in the resolved market, and market-specific pricing is applied
Adjust pricing only — The full catalog remains visible, but variant prices are swapped to market-specific values where available
Ignore markets (default) — Market resolution is skipped entirely; base catalog and base pricing are used for all shoppers
ISO 4217 currency code (e.g., "USD", "EUR"). Case-insensitive; Layers normalizes to uppercase. When Layers can resolve a currency from the shopper’s market or pricing context, the server-resolved value takes precedence.
Shopify B2B company location identifier. When identity.companyLocationId is provided, Layers resolves the company location server-side and the server value takes precedence.
The shopping channel the customer is browsing from. Used for channel-specific merchandising, sorting, and analytics segmentation. Automatically detected from request headers when not provided (e.g., mobile app requests via Tapcart, Fuego, or Mobiloud Canvas are detected as "app").Accepted values:
"web" — Standard web browser (default)
"app" — Mobile app (e.g., Tapcart, Fuego, Mobiloud Canvas)
Code of the sort order to apply. Use "relevance" for the default relevance-based ranking, or any custom sort order code configured in your store. Retrieve available sort order codes from the Sort Orders API.
When set to true, products with no available variants are excluded from results regardless of the store-level out-of-stock visibility setting. If your store’s inventory location scope is narrowed, the same location rules apply.This is useful when a specific search integration or page requires strict in-stock filtering even though the store default allows out-of-stock products to appear.
Per-request overrides for response behavior. Currently controls image preload hints emitted in the Link response header. You can disable preloads or narrow the srcset to the breakpoints your storefront uses. You cannot enable preloads when the store has them disabled.
Set to false to skip the Link header for this request. Useful for server-rendered pages that do not benefit from preload hints, or when you want to reduce response header size. Cannot enable preloads if they are disabled at the store level.
Custom responsive image widths (in pixels) to emit in imagesrcset. Each value must be an integer between 1 and 10000. Overrides the store-level srcset configuration for this request only. When omitted, the store configuration or platform defaults are used.
Media query string emitted as the imagesizes attribute in the preload Link header (for example (max-width: 600px) 100vw, 50vw). Tells the browser which srcset width to pick per viewport. Overrides the store-level sizes value for this request only. When omitted or empty, the store configuration is used. Each comma-separated entry may carry a media condition, including the last entry. See the accepted format for details. The API rejects invalid values with a validation error.
totalResults is computed for each request. It is the number of products that clear Layers’ relevance thresholds for that request’s query interpretation and filters. Two requests for the same text can return different totals when:
They use different prepare calls. Each search_id carries its own query expansions and intent analysis. To avoid generating intent rules for every keystroke, Layers only generates a new intent modifier (for example, a “jeans” category preference) once it has seen the same query text before, or once the query belongs to a known query cluster. An instant-results request fired while the shopper is still typing is often the first time Layers sees that text, so it can be interpreted more broadly or more narrowly than the results-page search that follows.
They use different filters.filter_group values, system filters, and variant breakouts all change what is counted.
The catalog or query data changed between the calls. Examples are a catalog sync, a newly learned query cluster, or an updated merchandising rule.
Relevance thresholds are relative to the best match for each request. Any difference in how the query is interpreted therefore changes how many products are counted, not just their order.Which count to show: use totalResults from the results-page search request, meaning the request that renders the grid with the shopper’s filters. Treat totals from instant-results or preview requests (small limit, no facets) as approximate. If you show a “View all N results” link in a typeahead, either leave out the number or take it from the same search_id the results page will use.
The Autocomplete endpoint returns query suggestions only and has no product count. A count shown next to typeahead products always comes from a separate Search request.
The computed attributes of the product. Only includes attributes with non-null, non-empty values. Attributes that evaluate to null or an empty string are omitted.
Total inventory quantity across the locations in the store’s inventory location scope, which is all locations by default. Only included when the store has the Expose Variant Inventory setting enabled.
Inventory policy for the variant: DENY (stop selling when out of stock) or CONTINUE (allow overselling). Only included when the store has the Expose Variant Inventory setting enabled.
Object mapping location IDs to available inventory quantities (e.g., {"1001": 5, "1002": 10}). Returns empty object {} when no inventory data exists. Only included when the store has the Expose Variant Inventory setting enabled.
Semantic Redirects: When a text search query semantically matches a configured redirect term, the response will include a _meta.redirect object with the redirect URL. In this case, the results array will be empty and totalResults will be 0. Semantic redirects only apply to text search queries (not image or similar product searches).
Degraded responses: Optional relevance steps such as query expansion, intent modifiers, and personalization boosts fail open. If one of these steps is temporarily unavailable, Layers skips it and returns HTTP 200 with results instead of an error. Skipped steps do not appear in _workflow. If Layers is temporarily serving keyword-only results platform-wide, the response includes _meta.search_lane set to "prefix_only".
The total number of results that passed relevance filtering for this request, across all pages. It does not depend on pagination.limit, pagination.page, or which facets you request. When variant breakouts are enabled, this reflects the count of tiles (both product and variant tiles) rather than just products. See Why result totals can differ.
A unique request identifier (ULID) for this API call. Use this token to correlate search requests with analytics events via the Beacon API, and to match requests to entries in the Search Inspector.
If retrieveFacetCount is true then an object with keys and values of the specified attributes. When variant breakouts are enabled, facet counts reflect tile counts rather than product counts. Empty values and literal "null" strings are automatically excluded from facet results.
Returned when at least one requested facet has display data to hydrate. Keys are facet attribute codes; values map each facet value to a display object.Metaobject-reference facets require enrichFacetMetaobjects: true and map each handle to the metaobject’s display_name and fields. Entries also carry a swatch object when the metaobject defines a color or image field. Handles with no matching cached metaobject are omitted here and remain as plain values in facets. See Metaobjects and reference metafields for the normalized field shape and the Facets API response for the swatch shape.For variants.pickup_locations, each entry maps a Shopify location id to the location’s id, name, address, instructions, pickupTime, and (when the filter is a geoRadius) distance and distanceUnit. Pickup entries are returned whenever pickup facets are requested, regardless of enrichFacetMetaobjects. See Local pickup filtering.
The IDs of request transforms whose targeting conditions matched this request. Returns an empty array when no request transforms matched. Use this to verify which request transforms are evaluating against a given search request.
One entry per action executed by a matched request transform, in execution order. Use changed to tell whether an action actually modified the request. A matched rule can appear in appliedSearchRules while all of its actions report changed: false. See Debugging with _meta.
true when the action modified the request. false when the action was a no-op, for example a replace_query action on a request with no query or an override_sort_order action matching the already-active sort order.
Only present when the action could not run. "unsupported_action_type" indicates a stored action type the engine cannot execute. The action is skipped and the rest of the request proceeds normally.
Semantic redirect information. Only present when a semantic match is found for a text search that keeps regular redirect behavior. When a redirect is returned, the results array is empty. A supported collection destination can instead be served inline when Inline Collection Redirects is enabled; see collection below.
Collection browse metadata returned when Inline Collection Redirects is enabled and an eligible collection landing page is served inside the search response. Collection links with tags, filters, a chosen sort, or a pagination override keep regular redirect behavior; locale prefixes and tracking-only query parameters do not disqualify a link. The response keeps the original search query, normal facets, and pagination. redirect is not returned for this inline response.
Array of variant breakout configurations applied to search. Only present when one or more variant breakouts are active for search requests. Multiple breakouts with different option codes can work simultaneously.
The product option code that determines which variants are broken out (e.g., “Stone”, “Color”). Each product is broken out by the first matching option code from the array.
Echoes the image preload configuration used to build the Link response header for this request. Only present when image preloads are emitted. Use this to confirm which srcset breakpoints were applied, especially when overriding them via responseOptions.mediaPreloads.
The responsive image widths (in pixels) used in the imagesrcset of the Link header. Reflects the request override when provided, otherwise the store-level configuration or platform defaults.
Echoes the discount entitlements applied to this request. Only present when the request included discountEntitlements (either directly or via a matched request transform). Use this to render discount badges or labels on the storefront without re-deriving which entitlements matched. Each entry mirrors the entitlement shape sent in the request.
The entitlement criteria that qualified products for the discount. Contains any of all, products, variants, collections, or conditions. See the entitlement criteria reference.
Only present when Layers is temporarily serving degraded results. The only value is "prefix_only", meaning Layers matched results using keyword and prefix matching only, without semantic ranking, query expansion, or intent detection. The response stays well formed, so no client changes are required. Use this field to tell a keyword-only fallback response apart from a normal semantic one when reviewing analytics or debugging relevance.
An ordered trace of processing steps the engine performed to produce results for this request. Each entry represents a stage in the search pipeline, recorded in the order it was executed. Use this field to understand how Layers interpreted and transformed your query, which rules and boosts were applied, and why results appear in a particular order.This field is useful for debugging search behavior in development and is also surfaced in the Search Inspector panel.
"query-replacement" — The original query was replaced (e.g., by a spelling correction or request transform). The payload contains the corrected query string.
"query-expansion" — Additional related queries were generated to broaden the search. The payload is an array of expanded query strings.
"query-interpretation" — The engine analyzed the query to extract intent signals such as spelling corrections, detected language, and classification. The payload contains the interpretation details.
"intent-modifiers" — AI-powered intent modifiers adjusted the query based on detected shopping intent. The payload contains the modifier actions that were applied.
"ranking-rules" — One or more ranking rules matched and influenced result ordering. The payload lists the applied rules.
"semantic-redirect" — A semantic redirect matched the query. The payload contains the redirect URL.
"rule-applied" — A merchandising rule was applied (browse requests). The payload contains the rule identifier.
Every API response includes the following headers for request tracing and performance optimization:
Header
Description
x-request-id
A unique identifier (ULID) for the request. This matches the attributionToken in the response body. Use it to correlate requests across your infrastructure or when contacting support.
x-layers-build
The Layers build version that served the request.
X-Layers-Results-Cache
Indicates whether the response was served from the results cache. Returns HIT when cached results were used, or MISS when results were computed fresh. Use this to monitor cache effectiveness and debug performance.
Link
Contains rel="preload" directives for product images in the response (up to 6 items), enabling browsers and CDNs to begin fetching images before your application processes the JSON body. Each entry includes a responsive imagesrcset with multiple sizes. See Early hints for configuration options. Only included when early hints are enabled for your store (enabled by default).
When variant breakouts are configured, results may include both product tiles and variant tiles. Each result includes a __typename field to identify the tile type:
The specific variant ID. For variant tiles, this matches the id field.
For variant tiles, the id field contains the variant ID (not the product ID). The title field is formatted as "{product title} - {option value}" by default (e.g., “Amethyst Ring - Rose Quartz”), but the format can be configured per breakout. If the breakout’s Include Option Value in Title setting is disabled, the title is the original product title. See the Variant Breakouts documentation for more details.
{ "results": [ { "id": 7003338965178, "title": "SUPREME SEALLINE SEE POUCH SMALL", "body_html": "The Supreme Sealline See Pouch Small is a versatile and waterproof storage solution that seamlessly marries utility and style. With its clear window for easy visibility and the iconic Supreme branding, it's a sought-after accessory for those who appreciate keeping their essentials dry while making a fashion statement, whether at the beach or in the city..", "vendor": "SUPREME", "product_type": "Accessories", "created_at": "2022-02-05T01:22:05.000000Z", "handle": "supreme-pouch-44370ss18a32-sm", "updated_at": "2023-10-25T20:47:04.000000Z", "published_at": "2022-02-05T01:22:05.000000Z", "tags": [ "consignment" ], "images": [ { "alt": "SUPREME POUCH", "src": "https://cdn.shopify.com/s/files/1/0588/3677/9194/products/ss18_supreme_tnf_pouch_blk_2-l_5fb1316e-22f7-4702-9953-57f3fbdda5be.jpg?v=1644047927", "width": 800, "height": 534, "variant_ids": [] } ], "metafields": { "product": { "alias": "SEALLINE SEE POUCH SMALL", "colorway": "BLACK", "styleCode": "SS18A30 BLACK", "yearOfRelease": 2018, "searchColor": [ "black" ] } }, "available": true, "price_range": { "from": 30, "to": 30 } } ], "totalResults": 1000, "page": 1, "totalPages": 20, "facets": { "vendor": { "ADIDAS": 30, "JORDAN": 336, "NEW BALANCE": 15, "NIKE": 384, "REEBOK": 4, "SUPREME": 624, "VANS": 32 } }, "attributionToken": "01JRVX7K2M8N9P4Q5R6S7T8U9V", "_meta": { "appliedSearchRules": [], "appliedSearchRuleActions": [] }, "_workflow": [ { "type": "query-expansion", "payload": ["running sneakers", "athletic shoes"] } ]}
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Layers","colors":{"primary":"#607FFD","light":"#AFC0FF","dark":"#3A57E8"},"logo":{"light":"https://mintcdn.com/protoninc/PNs-gxGUVcdBDEEC/logo.svg?fit=max\u0026auto=format\u0026n=PNs-gxGUVcdBDEEC\u0026q=85\u0026s=989e3194cb32f07e7018b8b7186b9007","dark":"https://mintcdn.com/protoninc/PNs-gxGUVcdBDEEC/logo.svg?fit=max\u0026auto=format\u0026n=PNs-gxGUVcdBDEEC\u0026q=85\u0026s=989e3194cb32f07e7018b8b7186b9007","href":"https://www.uselayers.com/?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site"},"favicon":"https://mintcdn.com/protoninc/qubyNEZK4oJTl9By/favicon.svg?fit=max\u0026auto=format\u0026n=qubyNEZK4oJTl9By\u0026q=85\u0026s=3611d60346e12f15e4684bc60cb69ece","api":{"mdx":{"server":"https://app.uselayers.com/api/storefront/v1"}},"navbar":{"links":[{"href":"https://www.uselayers.com/changelog?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site","label":"Changelog"},{"href":"mailto:support@uselayers.com","label":"Support"},{"href":"https://app.uselayers.com/dashboard?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-dashboard","label":"Dashboard"}],"primary":{"type":"button","label":"Request Demo","href":"https://www.uselayers.com/demo?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/uselayers"},"links":[{"header":"Legal","items":[{"label":"Privacy Statement","href":"https://docs.uselayers.com/legal/privacy-statement"},{"label":"Terms of Use","href":"https://docs.uselayers.com/legal/terms-of-use"}]}]},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"protoninc","hasAudioNarration":false,"actualSubdomain":"protoninc","customDomains":["docs.uselayers.com"],"gitSource":{"type":"github","owner":"protonagency","repo":"layers-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb8c48545d5e823eb7ee6a","collectionId":"fb35ad40-2254-43d7-b599-db52790f367d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb8c48545d5e823eb7ee6a"},"feedback":{"thumbs":true,"edits":false,"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"}},"buildId":"6adb8c48545d5e823eb7ee6a","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"Documentation","count":102},{"language":"default","tag":"Help Center","count":72},{"language":"default","tag":"Merchandising","count":54},{"language":"default","tag":"Developers","count":42},{"language":"default","tag":"API Reference","count":25},{"language":"default","tag":"SDK","count":20},{"language":"default","tag":"Sort Orders","count":16},{"language":"default","tag":"Liquid","count":14},{"language":"default","tag":"Search \u0026 Discovery","count":14},{"language":"default","tag":"Configuration","count":14}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false,"deflection":{"enabled":true,"email":"support@uselayers.com","showHelpButton":true}},"hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/search","slug":"/api-reference/search","pageMetadata":{"api":"POST /search/{searchQuery}/execute","title":"Text Search: Execute Search","sidebarTitle":"Execute Search","description":"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.","href":"/api-reference/search"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Note,ParamField,ResponseField,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`authorization`,children:`Authorization`}),`\n`,_jsx(ParamField,{header:`X-Storefront-Access-Token`,type:`string`,required:true,id:`param-x-storefront-access-token`,children:_jsxs(_components.p,{children:[`Token-based authentication header in the form of `,_jsx(_components.code,{children:`\u003cYOUR_LAYERS_TOKEN>`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`headers`,children:`Headers`}),`\n`,_jsx(ParamField,{header:`Content-Type`,type:`string`,default:`application/json`,required:true,id:`param-content-type`}),`\n`,_jsx(ParamField,{header:`Accept`,type:`string`,default:`application/json`,required:true,id:`param-accept`}),`\n`,_jsx(ParamField,{header:`X-SDK-Client`,type:`string`,id:`param-x-sdk-client`,children:_jsxs(_components.p,{children:[`Optional header to identify SDK client requests. Format: `,_jsx(_components.code,{children:`sdk-name/version`}),` (e.g., `,_jsx(_components.code,{children:`layers-js-sdk/1.0.0`}),`). When provided with version >= 1.0.0, the server returns HTTP 425 (Too Early) with a `,_jsx(_components.code,{children:`Retry-After`}),` header when prepared search data isn’t ready yet, instead of blocking, so the client can poll until the search is ready.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`path-parameters`,children:`Path parameters`}),`\n`,_jsx(ParamField,{path:`searchQuery`,type:`string`,required:true,id:`param-search-query`,children:_jsx(_components.p,{children:`The url-encoded search query. Layers normalizes the query before validating it, stripping invisible characters and converting Unicode punctuation to ASCII equivalents. After normalization, the query must be 2 to 255 characters. Queries outside this range return HTTP 422.`})}),`\n`,_jsx(Heading,{level:`2`,id:`body`,children:`Body`}),`\n`,_jsx(ParamField,{body:`attributes`,type:`string[]`,description:`Product attributes to include in the response.`,id:`param-attributes`,children:_jsxs(_components.p,{children:[`Product attributes to include in the response. By default, all attributes are included except opt-in attributes noted below. Available attributes include: `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`title`}),`, `,_jsx(_components.code,{children:`handle`}),`, `,_jsx(_components.code,{children:`body_html`}),`, `,_jsx(_components.code,{children:`vendor`}),`, `,_jsx(_components.code,{children:`product_type`}),`, `,_jsx(_components.code,{children:`tags`}),`, `,_jsx(_components.code,{children:`images`}),`, `,_jsx(_components.code,{children:`available`}),`, `,_jsx(_components.code,{children:`created_at`}),`, `,_jsx(_components.code,{children:`updated_at`}),`, `,_jsx(_components.code,{children:`published_at`}),`, `,_jsx(_components.code,{children:`price_range`}),`, `,_jsx(_components.code,{children:`options`}),`, `,_jsx(_components.code,{children:`original_options`}),`, `,_jsx(_components.code,{children:`metafields`}),`, `,_jsx(_components.code,{children:`named_tags`}),`, `,_jsx(_components.code,{children:`calculated`}),`, `,_jsx(_components.code,{children:`category`}),`, `,_jsx(_components.code,{children:`featured_media`}),`, `,_jsx(_components.code,{children:`is_gift_card`}),`, `,_jsx(_components.code,{children:`has_variants_that_require_components`}),`, `,_jsx(_components.code,{children:`combined_listing_parent_product_id`}),`, `,_jsx(_components.code,{children:`combined_listing_role`}),`, `,_jsx(_components.code,{children:`first_or_matched_variant`}),`, and `,_jsx(_components.code,{children:`variants`}),`. The `,_jsx(_components.code,{children:`collection_titles`}),` attribute is opt-in: pass it in `,_jsx(_components.code,{children:`attributes`}),` to include the array of collection titles each product belongs to. It is excluded from responses by default. See the `,_jsx(_components.a,{href:`/developers/product-schema/api-attributes`,children:`Product Schema`}),` for detailed descriptions, including `,_jsx(_components.a,{href:`/developers/product-schema/api-attributes#selecting-nested-fields`,children:`nested field selection`}),` for slicing arrays and filtering collections (for example, `,_jsx(`code`,{children:`images[:2].src`}),`, `,_jsx(`code`,{children:`variants[sku=ABC].price`}),`, `,_jsx(`code`,{children:`metafields[namespace=custom]`}),`).`]})}),`\n`,_jsx(ParamField,{body:`search_id`,type:`string`,id:`param-search-id`,children:_jsxs(_components.p,{children:[`ULID identifier from the `,_jsx(_components.a,{href:`/api-reference/search-prepare`,children:`Prepare Search`}),` endpoint for optimized search execution. When provided, reuses the precomputed intent analysis and query expansions from that prepare call so the search returns faster.`]})}),`\n`,_jsxs(ParamField,{body:`filter_group`,type:`object`,description:`A group of filter conditions using various operators.`,id:`param-filter-group`,children:[_jsxs(_components.p,{children:[`Storefront endpoints accept nested `,_jsx(_components.code,{children:`AND`}),`/`,_jsx(_components.code,{children:`OR`}),` filter groups up to two levels deep. Each nested group must contain at least one expression; empty nested groups are rejected. Metafield filter properties may include hyphens in their namespace or key, for example `,_jsx(_components.code,{children:`metafields.my-app.fit-type`}),`.`]}),_jsxs(_components.p,{children:[`Refer to the dedicated `,_jsx(_components.a,{href:`/engine/filtering`,children:`Filter Expressions`}),` guide to learn more about filter expressions.`]})]}),`\n`,_jsx(ParamField,{body:`pagination`,type:`Pagination Object`,description:`Specifies the page number and limit for pagination.`,id:`param-pagination`,children:_jsxs(Expandable,{title:`pagination`,children:[_jsx(ParamField,{body:`page`,type:`int`,min:`1`,max:`100`,id:`param-page`,children:_jsx(_components.p,{children:`The current page of results to fetch.`})}),_jsx(ParamField,{body:`limit`,type:`int`,min:`1`,max:`100`,id:`param-limit`,children:_jsx(_components.p,{children:`The max results to fetch per page.`})})]})}),`\n`,_jsxs(ParamField,{body:`facets`,type:`string[]`,description:`List of facets to include in the response.`,id:`param-facets`,children:[_jsxs(_components.p,{children:[`Facets to be included. Accepts both exact facet codes (e.g., `,_jsx(_components.code,{children:`\"vendor\"`}),`, `,_jsx(_components.code,{children:`\"options.Size\"`}),`) and wildcard patterns (e.g., `,_jsx(_components.code,{children:`\"options.*\"`}),`, `,_jsx(_components.code,{children:`\"metafields.product.*\"`}),`).`]}),_jsxs(_components.p,{children:[`Wildcard patterns expand to all matching attribute codes. For example, `,_jsx(_components.code,{children:`\"options.*\"`}),` expands to all option facets like `,_jsx(_components.code,{children:`\"options.Size\"`}),` and `,_jsx(_components.code,{children:`\"options.Color\"`}),`. Wildcards must match at least one attribute code to be valid.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Examples:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Exact facet codes`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.Size\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.Color\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Wildcard pattern`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Mixed exact and wildcard`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"metafields.product.*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`]})})})]}),`\n`,_jsx(ParamField,{body:`retrieveFacetCount`,type:`boolean`,description:`Retrieve facet count.`,id:`param-retrieve-facet-count`,children:_jsx(_components.p,{children:`If the count of each facet value should be calculated.`})}),`\n`,_jsx(ParamField,{body:`includeFacetRanges`,type:`boolean`,description:`Return min/max range for facets with a numeric value.`,id:`param-include-facet-ranges`,children:_jsx(_components.p,{children:`If you want a min/max range for numeric facets such as price.`})}),`\n`,_jsxs(ParamField,{body:`enrichFacetMetaobjects`,type:`boolean`,description:`Hydrate metaobject-reference facet values with display data.`,id:`param-enrich-facet-metaobjects`,children:[_jsxs(_components.p,{children:[`When `,_jsx(_components.code,{children:`true`}),`, any facet backed by a `,_jsx(_components.code,{children:`metaobject_reference`}),` or `,_jsx(_components.code,{children:`list.metaobject_reference`}),` metafield is returned with a companion `,_jsx(_components.code,{children:`facetDisplay`}),` object. Each entry maps a facet value (the metaobject handle) to the referenced metaobject’s `,_jsx(_components.code,{children:`display_name`}),` and `,_jsx(_components.code,{children:`fields`}),`. When the metaobject defines a color or image field, the entry also carries a resolved `,_jsx(_components.code,{children:`swatch`}),` object.`]}),_jsxs(_components.p,{children:[`Use this when your storefront filter UI needs human-readable labels or nested field data (for example, a color name or swatch hex) instead of the raw handle. When `,_jsx(_components.code,{children:`false`}),` or omitted, only the handles are returned in `,_jsx(_components.code,{children:`facets`}),`.`]}),_jsxs(_components.p,{children:[`Values are looked up from the local metaobject cache. Handles with no matching cached metaobject are omitted from `,_jsx(_components.code,{children:`facetDisplay`}),` and remain as plain values in `,_jsx(_components.code,{children:`facets`}),`. See `,_jsx(_components.a,{href:`/developers/product-schema/metafields/metaobjects-and-references`,children:`Metaobjects and reference metafields`}),` for the normalized shape of each entry.`]})]}),`\n`,_jsxs(ParamField,{body:`discountEntitlements`,type:`array`,description:`Array of discount entitlement objects for applying dynamic discounts to products. Maximum 50 entries.`,id:`param-discount-entitlements`,children:[_jsxs(_components.p,{children:[`Apply discounts to products, variants, or collections. When provided, price-based sorting and filtering will use discounted prices. See the `,_jsx(_components.a,{href:`/shopify-integration/discount-entitlements`,children:`Discount Entitlements`}),` guide for detailed usage.`]}),_jsxs(Expandable,{title:`Discount Entitlement Object`,children:[_jsxs(ParamField,{body:`entitled`,type:`object`,required:true,id:`param-entitled`,children:[_jsx(_components.p,{children:`Defines which products qualify for the discount.`}),_jsxs(Expandable,{title:`entitled`,children:[_jsx(ParamField,{body:`all`,type:`boolean`,id:`param-all`,children:_jsxs(_components.p,{children:[`When `,_jsx(_components.code,{children:`true`}),`, applies discount to all products. When `,_jsx(_components.code,{children:`false`}),`, uses products, variants, or collections arrays.`]})}),_jsx(ParamField,{body:`products`,type:`string[]`,id:`param-products`,children:_jsx(_components.p,{children:`Array of product IDs or handles that qualify for the discount. Maximum 250 entries.`})}),_jsx(ParamField,{body:`variants`,type:`string[] | number[]`,id:`param-variants`,children:_jsx(_components.p,{children:`Array of variant IDs that qualify for the discount. Maximum 250 entries.`})}),_jsx(ParamField,{body:`collections`,type:`string[]`,id:`param-collections`,children:_jsx(_components.p,{children:`Array of collection handles that qualify for the discount. Maximum 250 entries.`})}),_jsx(ParamField,{body:`conditions`,type:`object`,id:`param-conditions`,children:_jsxs(_components.p,{children:[`Optional filter group that qualifies products for the discount based on their attributes (for example, `,_jsx(_components.code,{children:`tags`}),` or `,_jsx(_components.code,{children:`vendor`}),`). Uses the same shape as the top-level `,_jsx(_components.code,{children:`filter_group`}),` parameter. Matches are additive with `,_jsx(_components.code,{children:`products`}),`, `,_jsx(_components.code,{children:`variants`}),`, and `,_jsx(_components.code,{children:`collections`}),` on the same entitlement.`]})})]})]}),_jsxs(ParamField,{body:`discount`,type:`object`,required:true,id:`param-discount`,children:[_jsx(_components.p,{children:`Defines the discount to apply.`}),_jsxs(Expandable,{title:`discount`,children:[_jsx(ParamField,{body:`type`,type:`string`,required:true,id:`param-type`,children:_jsxs(_components.p,{children:[`The discount type: `,_jsx(_components.code,{children:`PERCENTAGE`}),` or `,_jsx(_components.code,{children:`FIXED_AMOUNT`}),`.`]})}),_jsx(ParamField,{body:`value`,type:`number`,required:true,id:`param-value`,children:_jsxs(_components.p,{children:[`The discount value. For `,_jsx(_components.code,{children:`PERCENTAGE`}),`, this must be a number between 0 and 100 (e.g., 10 for 10% off). For `,_jsx(_components.code,{children:`FIXED_AMOUNT`}),`, this is the currency amount.`]})})]})]})]})]}),`\n`,_jsxs(ParamField,{body:`defaultSelectedOptions`,type:`array`,description:`Default variant selection preferences for search and browse results.`,id:`param-default-selected-options`,children:[_jsxs(_components.p,{children:[`Specify which product variants should be selected by default in the `,_jsx(_components.code,{children:`first_or_matched_variant`}),` field. This is a presentation preference for search and browse results, not a product filter. Request transforms can set or replace this complete list with the `,_jsx(_components.code,{children:`set_default_selected_options`}),` action.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`optionCode`,type:`string`,required:true,id:`param-option-code`,children:_jsxs(_components.p,{children:[`The product option code to match (e.g., `,_jsx(_components.code,{children:`\"birthstone\"`}),`, `,_jsx(_components.code,{children:`\"color\"`}),`). Option codes are automatically normalized (e.g., `,_jsx(_components.code,{children:`\"Birth Stone\"`}),` becomes `,_jsx(_components.code,{children:`\"birth_stone\"`}),`).`]})}),_jsx(ParamField,{body:`value`,type:`string`,required:true,id:`param-value-1`,children:_jsxs(_components.p,{children:[`The option value to match (e.g., `,_jsx(_components.code,{children:`\"February\"`}),`, `,_jsx(_components.code,{children:`\"Blue\"`}),`).`]})})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Behavior:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Uses `,_jsx(_components.strong,{children:`OR logic`}),` - selects the first variant matching ANY of the specified option values`]}),`\n`,_jsx(_components.li,{children:`Query and keyword matches, plus pinned variant choices, take priority over these defaults`}),`\n`,_jsx(_components.li,{children:`Configured defaults take priority over a confident semantic match to a variant`}),`\n`,_jsx(_components.li,{children:`If no variant matches the configured defaults, a confident semantic match can still be selected before falling back to the first variant by position`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Automatically skipped`}),` when any option or variant filters are applied (filters take precedence)`]}),`\n`,_jsxs(_components.li,{children:[`Only affects the `,_jsx(_components.code,{children:`first_or_matched_variant`}),` field in the response`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Works with `,_jsx(_components.a,{href:`/platform/variant-breakouts`,children:`Variant Breakouts`})]}),`: product tiles respect default selected options, and variant tiles respect non-breakout default selected options, preferring matching variants within each breakout group and falling back to position when needed. This does not change breakout grouping or collapse breakout tiles.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"defaultSelectedOptions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"optionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"birthstone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"February\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Multiple options example (OR logic):`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"defaultSelectedOptions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"optionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"birthstone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"February\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"optionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"birthstone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"March\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`This selects variants with either February OR March birthstone, preferring the first match found.`})]}),`\n`,_jsxs(ParamField,{body:`identity`,type:`object`,id:`param-identity`,children:[_jsx(_components.p,{children:`User identity information for tracking and personalization. Automatically managed by the Storefront Pixel; required for headless integrations.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`deviceId`,type:`string`,id:`param-device-id`,children:_jsx(_components.p,{children:`Persistent browser identifier that remains constant across sessions. Used to recognize returning visitors for long-term personalization. Automatically generated and managed by the Storefront Pixel.`})}),_jsx(ParamField,{body:`sessionId`,type:`string`,id:`param-session-id`,children:_jsx(_components.p,{children:`Temporary session identifier. Layers-generated sessions expire after 30 minutes without activity. The Storefront Pixel refreshes the rolling window at page load and on every route change, including pages without tracked events. When a legacy Shopify or fallback cookie is available, Layers prefers it and does not control its lifetime. Without consent, the pixel uses a sessionStorage or in-memory fallback and does not write an analytics cookie.`})}),_jsx(ParamField,{body:`customerId`,type:`string`,id:`param-customer-id`,children:_jsx(_components.p,{children:`Shopify customer ID for authenticated users. Only present when the customer is signed in to their account.`})}),_jsxs(ParamField,{body:`companyLocationId`,type:`string`,id:`param-company-location-id`,children:[_jsxs(_components.p,{children:[`Shopify B2B company location GID (e.g. `,_jsx(_components.code,{children:`gid://shopify/CompanyLocation/123456789`}),`) for the authenticated buyer. Layers resolves the catalog assigned to the company location and uses it to scope results: only products in the catalog are returned, prices come from the catalog’s price list, and excluded collections return 404. Omit for retail (DTC) traffic.`]}),_jsxs(_components.p,{children:[`When you pass `,_jsx(_components.code,{children:`companyLocationId`}),`, you must also pass the buyer’s `,_jsx(_components.code,{children:`customerId`}),`. Layers verifies with Shopify that the customer belongs to the company that owns the location before resolving the catalog; unauthorized or unauthenticated requests return a `,_jsx(_components.code,{children:`403`}),`. See `,_jsx(_components.a,{href:`/shopify-integration/b2b-catalogs`,children:`B2B catalogs`}),`.`]})]})]})]}),`\n`,_jsxs(ParamField,{body:`context`,type:`object`,id:`param-context`,children:[_jsxs(_components.p,{children:[`Contextual information about the customer’s session, behavior, and environment. Automatically collected by the Storefront Pixel; must be manually provided for headless integrations. See `,_jsx(_components.a,{href:`/engine/contextual-information`,children:`Contextual Information`}),` for implementation guidance.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsxs(ParamField,{body:`geo`,type:`object`,id:`param-geo`,children:[_jsxs(_components.p,{children:[`Geographic location information for regional personalization and merchandising. Layers determines it from the IP address for client-side requests. For server-side API calls (headless integrations), provide `,_jsx(_components.code,{children:`geo`}),` explicitly.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`country`,type:`string`,id:`param-country`,children:_jsx(_components.p,{children:`Country code or name (e.g., “US”, “Canada”).`})}),_jsx(ParamField,{body:`province`,type:`string`,id:`param-province`,children:_jsx(_components.p,{children:`State or province name (e.g., “California”, “Ontario”).`})}),_jsx(ParamField,{body:`city`,type:`string`,id:`param-city`,children:_jsx(_components.p,{children:`City name (e.g., “Los Angeles”, “Toronto”).`})})]})]}),_jsxs(ParamField,{body:`productsInCart`,type:`array`,id:`param-products-in-cart`,children:[_jsx(_components.p,{children:`Products currently in the customer’s cart. Used to surface complementary products and influence relevance scoring.`}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`title`,type:`string`,id:`param-title`,children:_jsxs(_components.p,{children:[`Product title. Each entry needs at least a `,_jsx(_components.code,{children:`productId`}),`, `,_jsx(_components.code,{children:`variantId`}),`, or non-empty `,_jsx(_components.code,{children:`title`}),`. Layers drops entries with none of these.`]})}),_jsx(ParamField,{body:`price`,type:`number`,id:`param-price`,children:_jsxs(_components.p,{children:[`Unit price in the request currency’s major units (e.g. `,_jsx(_components.code,{children:`29.00`}),` for $29), not cents. Accepts a JSON number or a numeric string such as `,_jsx(_components.code,{children:`\"29.00\"`}),`.`]})}),_jsx(ParamField,{body:`type`,type:`string`,id:`param-type-1`,children:_jsx(_components.p,{children:`Product type or category.`})}),_jsx(ParamField,{body:`productId`,type:`string`,id:`param-product-id`,children:_jsxs(_components.p,{children:[`Product identifier. Accepts a numeric ID (e.g., `,_jsx(_components.code,{children:`\"8234567890123\"`}),`) or a Shopify GID (e.g., `,_jsx(_components.code,{children:`\"gid://shopify/Product/8234567890123\"`}),`).`]})}),_jsx(ParamField,{body:`variantId`,type:`string`,id:`param-variant-id`,children:_jsx(_components.p,{children:`Product variant identifier.`})}),_jsx(ParamField,{body:`options`,type:`object`,id:`param-options`,children:_jsxs(_components.p,{children:[`Product variant options (e.g., `,_jsx(_components.code,{children:`{\"Size\": \"11\", \"Color\": \"Red\"}`}),`).`]})}),_jsx(ParamField,{body:`quantity`,type:`integer`,id:`param-quantity`,children:_jsxs(_components.p,{children:[`Number of units of this line in the cart. Layers rounds fractional values down to a whole number. Missing values, non-numeric values, and values below `,_jsx(_components.code,{children:`1`}),` count as `,_jsx(_components.code,{children:`1`}),`. Layers uses it to calculate the cart subtotal for `,_jsx(_components.a,{href:`/platform/blocks/strategies#free-shipping-picks`,children:`Free Shipping Picks`}),`.`]})})]})]}),_jsx(ParamField,{body:`freeShippingThreshold`,type:`number`,id:`param-free-shipping-threshold`,children:_jsxs(_components.p,{children:[`The cart subtotal at which the shopper qualifies for free shipping, in the request currency’s major units (e.g. `,_jsx(_components.code,{children:`75.00`}),` for $75), not cents. Layers ignores values that aren’t a number greater than `,_jsx(_components.code,{children:`0`}),`. Required for `,_jsx(_components.a,{href:`/platform/blocks/strategies#free-shipping-picks`,children:`Free Shipping Picks`}),` blocks.`]})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Shopify’s `,_jsx(_components.code,{children:`/cart.js`}),` and Liquid money values such as `,_jsx(_components.code,{children:`cart.total_price`}),` and `,_jsx(_components.code,{children:`item.price`}),` are in cents. Divide them by 100 before sending `,_jsx(_components.code,{children:`productsInCart[].price`}),` or `,_jsx(_components.code,{children:`freeShippingThreshold`}),`.`]})}),_jsxs(ParamField,{body:`productsViewed`,type:`array`,id:`param-products-viewed`,children:[_jsxs(_components.p,{children:[`Products the shopper has viewed during the current session. Layers uses these as short-lived personalization signals, with recent views weighted more heavily. Only the 20 most recent views are used. The Storefront Pixel populates this automatically; send it manually only for headless integrations. See `,_jsx(_components.a,{href:`/engine/contextual-information/data-structure#recently-viewed-products`,children:`Recently viewed products`}),`.`]}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`id`,type:`string`,id:`param-id`,children:_jsxs(_components.p,{children:[`Product identifier. Accepts a numeric ID or a Shopify GID. Also accepted as `,_jsx(_components.code,{children:`productId`}),`.`]})}),_jsx(ParamField,{body:`at`,type:`integer`,id:`param-at`,children:_jsxs(_components.p,{children:[`Timestamp of the view in Unix milliseconds. Views without `,_jsx(_components.code,{children:`at`}),` still count but skip recency weighting.`]})}),_jsx(ParamField,{body:`title`,type:`string`,id:`param-title-1`,children:_jsx(_components.p,{children:`Product title.`})}),_jsx(ParamField,{body:`type`,type:`string`,id:`param-type-2`,children:_jsx(_components.p,{children:`Product type or category.`})}),_jsx(ParamField,{body:`variantId`,type:`string`,id:`param-variant-id-1`,children:_jsx(_components.p,{children:`Variant identifier, if the shopper viewed a specific variant.`})}),_jsx(ParamField,{body:`options`,type:`object`,id:`param-options-1`,children:_jsxs(_components.p,{children:[`Product variant options (e.g., `,_jsx(_components.code,{children:`{\"Size\": \"11\", \"Color\": \"Red\"}`}),`).`]})})]})]}),_jsxs(ParamField,{body:`productsPurchased`,type:`array`,id:`param-products-purchased`,children:[_jsx(_components.p,{children:`Products the customer has previously purchased. Informs recommendations and prevents over-promotion of owned items.`}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`title`,type:`string`,id:`param-title-2`,children:_jsxs(_components.p,{children:[`Product title. Each entry needs at least a `,_jsx(_components.code,{children:`productId`}),`, `,_jsx(_components.code,{children:`variantId`}),`, or non-empty `,_jsx(_components.code,{children:`title`}),`. Layers drops entries with none of these.`]})}),_jsx(ParamField,{body:`price`,type:`number`,id:`param-price-1`,children:_jsxs(_components.p,{children:[`Unit price in the request currency’s major units (e.g. `,_jsx(_components.code,{children:`29.00`}),` for $29), not cents, at time of purchase. Accepts a JSON number or a numeric string such as `,_jsx(_components.code,{children:`\"29.00\"`}),`.`]})}),_jsx(ParamField,{body:`type`,type:`string`,id:`param-type-3`,children:_jsx(_components.p,{children:`Product type or category.`})}),_jsx(ParamField,{body:`productId`,type:`string`,id:`param-product-id-1`,children:_jsxs(_components.p,{children:[`Product identifier. Accepts a numeric ID (e.g., `,_jsx(_components.code,{children:`\"8234567890123\"`}),`) or a Shopify GID (e.g., `,_jsx(_components.code,{children:`\"gid://shopify/Product/8234567890123\"`}),`).`]})}),_jsx(ParamField,{body:`variantId`,type:`string`,id:`param-variant-id-2`,children:_jsx(_components.p,{children:`Product variant identifier.`})}),_jsx(ParamField,{body:`options`,type:`object`,id:`param-options-2`,children:_jsxs(_components.p,{children:[`Product variant options (e.g., `,_jsx(_components.code,{children:`{\"Size\": \"11\", \"Color\": \"Red\"}`}),`).`]})})]})]}),_jsxs(ParamField,{body:`priorSearches`,type:`array`,id:`param-prior-searches`,children:[_jsx(_components.p,{children:`Recent search queries and their outcomes. Helps understand customer intent and refine relevance models.`}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`searchQuery`,type:`string`,required:true,id:`param-search-query-1`,children:_jsx(_components.p,{children:`The search query text.`})}),_jsx(ParamField,{body:`hadClick`,type:`boolean`,default:`false`,id:`param-had-click`,children:_jsx(_components.p,{children:`Whether the customer clicked on any results from this search.`})}),_jsx(ParamField,{body:`hasResults`,type:`boolean`,default:`false`,id:`param-has-results`,children:_jsx(_components.p,{children:`Whether the search returned any results.`})}),_jsx(ParamField,{body:`fromPage`,type:`string`,id:`param-from-page`,children:_jsx(_components.p,{children:`The page the search was started from (e.g., the referring page URL or page type). Layers accepts this field but doesn’t currently use it for ranking or rules.`})})]})]}),_jsxs(ParamField,{body:`marketing`,type:`object`,id:`param-marketing`,children:[_jsx(_components.p,{children:`UTM parameters and marketing campaign information for attribution tracking.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`source`,type:`string`,id:`param-source`,children:_jsx(_components.p,{children:`Marketing source (e.g., “google”, “facebook”).`})}),_jsx(ParamField,{body:`medium`,type:`string`,id:`param-medium`,children:_jsx(_components.p,{children:`Marketing medium (e.g., “cpc”, “email”, “social”).`})}),_jsx(ParamField,{body:`campaign`,type:`string`,id:`param-campaign`,children:_jsx(_components.p,{children:`Campaign name.`})}),_jsx(ParamField,{body:`term`,type:`string`,id:`param-term`,children:_jsx(_components.p,{children:`Search term or keyword.`})}),_jsx(ParamField,{body:`content`,type:`string`,id:`param-content`,children:_jsxs(_components.p,{children:[`Ad or link variant, such as the value of `,_jsx(_components.code,{children:`utm_content`}),`.`]})}),_jsx(ParamField,{body:`clickIds`,type:`object`,id:`param-click-ids`,children:_jsxs(_components.p,{children:[`Click identifiers from the landing URL, keyed by parameter name (e.g., `,_jsx(_components.code,{children:`fbclid`}),`, `,_jsx(_components.code,{children:`gclid`}),`). Layers derives the originating network from them as `,_jsx(_components.code,{children:`marketing.clickSource`}),` and discards the raw tokens. See `,_jsx(_components.a,{href:`/engine/contextual-information/data-structure#click-identifiers-and-derived-click-source`,children:`Context data structure`}),`.`]})})]})]}),_jsx(ParamField,{body:`experiments`,type:`object`,id:`param-experiments`,children:_jsxs(_components.p,{children:[`A/B test assignments for the shopper, keyed by experiment ID with the assigned group ID as the value (e.g., `,_jsx(_components.code,{children:`{\"exp_123\": \"group_b\"}`}),`). Used by the `,_jsx(_components.strong,{children:`Experiment Group`}),` contextual condition. The Layers app embed fills this from Intelligems automatically; values your storefront sends for the same experiment take precedence. Entries whose value isn’t a string are dropped.`]})}),_jsxs(ParamField,{body:`customer`,type:`object`,id:`param-customer`,children:[_jsx(_components.p,{children:`Aggregated customer behavior and purchase patterns for personalization.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`signedIn`,type:`boolean`,id:`param-signed-in`,children:_jsx(_components.p,{children:`Whether the customer is currently authenticated.`})}),_jsx(ParamField,{body:`returning`,type:`boolean`,id:`param-returning`,children:_jsx(_components.p,{children:`Whether this is a returning customer.`})}),_jsx(ParamField,{body:`numberOfOrders`,type:`integer`,id:`param-number-of-orders`,children:_jsx(_components.p,{children:`Total number of orders placed.`})}),_jsx(ParamField,{body:`averageOrderValue`,type:`number`,id:`param-average-order-value`,children:_jsx(_components.p,{children:`Average order value in store currency.`})}),_jsx(ParamField,{body:`daysBetweenOrders`,type:`integer`,id:`param-days-between-orders`,children:_jsx(_components.p,{children:`Average days between orders.`})}),_jsx(ParamField,{body:`daysSinceLastOrder`,type:`integer`,id:`param-days-since-last-order`,children:_jsx(_components.p,{children:`Days since the most recent order.`})}),_jsx(ParamField,{body:`daysSinceOldestOrder`,type:`integer`,id:`param-days-since-oldest-order`,children:_jsx(_components.p,{children:`Days since the first order.`})}),_jsx(ParamField,{body:`totalSpent`,type:`number`,id:`param-total-spent`,children:_jsx(_components.p,{children:`Total amount spent in store currency.`})}),_jsx(ParamField,{body:`tags`,type:`array`,id:`param-tags`,children:_jsxs(_components.p,{children:[`Shopify customer tags on the shopper’s profile (e.g., `,_jsx(_components.code,{children:`[\"vip\", \"wholesale\"]`}),`). Collected by the Storefront Pixel for signed-in customers; `,_jsx(_components.code,{children:`null`}),` for guests.`]})}),_jsx(ParamField,{body:`segments`,type:`array`,id:`param-segments`,children:_jsxs(_components.p,{children:[`Shopify customer segment IDs the shopper belongs to. Server-resolved: Layers populates this from the signed-in `,_jsx(_components.code,{children:`identity.customerId`}),` on every request and ignores any value you send. `,_jsx(_components.code,{children:`null`}),` for guests and customers with no segment memberships. Available as `,_jsx(_components.code,{children:`context.customer.segments`}),` in `,_jsx(_components.a,{href:`/platform/merchandising/contextual-conditions`,children:`contextual conditions`}),`.`]})})]})]}),_jsxs(ParamField,{body:`market`,type:`string`,id:`param-market`,children:[_jsxs(_components.p,{children:[`Explicitly set the Shopify Market for this request. Must be provided inside `,_jsx(_components.code,{children:`context`}),`; it is not a top-level request body parameter. Used for market-specific product availability filtering and contextual pricing. Accepts a two-letter country code (e.g., `,_jsx(_components.code,{children:`\"US\"`}),`, `,_jsx(_components.code,{children:`\"CA\"`}),`), a numeric Shopify Market ID (e.g., `,_jsx(_components.code,{children:`\"12345\"`}),`), or a Shopify Market GID (e.g., `,_jsx(_components.code,{children:`\"gid://shopify/Market/12345\"`}),`).`]}),_jsxs(_components.p,{children:[`When not provided, the market is automatically resolved from `,_jsx(_components.code,{children:`context.geo.country`}),` (or the shopper’s detected country for client-side requests). If no matching market is found, the store’s primary market is used as the fallback.`]}),_jsxs(_components.p,{children:[`When you send a two-letter country code that belongs to the resolved market, Layers also prices for that country, ahead of the shopper’s detected location. See `,_jsx(_components.a,{href:`/engine/contextual-information/data-structure#market`,children:`Market resolution`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Behavior depends on the store’s market application mode`}),` (set under `,_jsx(_components.strong,{children:`Settings > Search \u0026 Discovery > Search Behavior`}),`, in the `,_jsx(_components.strong,{children:`Markets`}),` card):`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Restrict to market catalog`}),` — Products are filtered to only those available in the resolved market, and market-specific pricing is applied`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adjust pricing only`}),` — The full catalog remains visible, but variant prices are swapped to market-specific values where available`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Ignore markets`}),` (default) — Market resolution is skipped entirely; base catalog and base pricing are used for all shoppers`]}),`\n`]})]}),_jsxs(ParamField,{body:`session`,type:`object`,id:`param-session`,children:[_jsx(_components.p,{children:`Session-level signals about the current visit.`}),_jsx(Expandable,{title:`Properties`,children:_jsx(ParamField,{body:`returning`,type:`boolean`,id:`param-returning-1`,children:_jsx(_components.p,{children:`Whether the current session belongs to a returning visitor. Layers derives this from the storefront’s session cookie when not provided.`})})})]}),_jsx(ParamField,{body:`locale`,type:`string`,id:`param-locale`,children:_jsxs(_components.p,{children:[`Storefront locale code (e.g., `,_jsx(_components.code,{children:`\"en\"`}),`, `,_jsx(_components.code,{children:`\"fr\"`}),`, `,_jsx(_components.code,{children:`\"pt-br\"`}),`). Case-insensitive; Layers normalizes to lowercase.`]})}),_jsx(ParamField,{body:`currency`,type:`string`,id:`param-currency`,children:_jsxs(_components.p,{children:[`ISO 4217 currency code (e.g., `,_jsx(_components.code,{children:`\"USD\"`}),`, `,_jsx(_components.code,{children:`\"EUR\"`}),`). Case-insensitive; Layers normalizes to uppercase. When Layers can resolve a currency from the shopper’s market or pricing context, the server-resolved value takes precedence.`]})}),_jsx(ParamField,{body:`b2bCompany`,type:`string`,id:`param-b2b-company`,children:_jsxs(_components.p,{children:[`Shopify B2B company location identifier. When `,_jsx(_components.code,{children:`identity.companyLocationId`}),` is provided, Layers resolves the company location server-side and the server value takes precedence.`]})}),_jsxs(ParamField,{body:`shoppingChannel`,type:`string`,default:`web`,id:`param-shopping-channel`,children:[_jsxs(_components.p,{children:[`The shopping channel the customer is browsing from. Used for channel-specific merchandising, sorting, and analytics segmentation. Automatically detected from request headers when not provided (e.g., mobile app requests via Tapcart, Fuego, or Mobiloud Canvas are detected as `,_jsx(_components.code,{children:`\"app\"`}),`).`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Accepted values:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"web\"`}),` — Standard web browser (default)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"app\"`}),` — Mobile app (e.g., Tapcart, Fuego, Mobiloud Canvas)`]}),`\n`]})]}),_jsx(ParamField,{body:`custom`,type:`object`,id:`param-custom`,children:_jsx(_components.p,{children:`Custom contextual data specific to your implementation. Structure is flexible and can contain any key-value pairs relevant to your use case.`})})]})]}),`\n`,_jsx(ParamField,{body:`sort_order_code`,type:`string`,description:`Sort order for the results.`,id:`param-sort-order-code`,children:_jsxs(_components.p,{children:[`Code of the sort order to apply. Use `,_jsx(_components.code,{children:`\"relevance\"`}),` for the default relevance-based ranking, or any custom sort order code configured in your store. Retrieve available sort order codes from the `,_jsx(_components.a,{href:`/api-reference/sort-orders`,children:`Sort Orders API`}),`.`]})}),`\n`,_jsxs(ParamField,{body:`forceHideOutOfStock`,type:`boolean`,default:`false`,description:`Force-hide out-of-stock products from results.`,id:`param-force-hide-out-of-stock`,children:[_jsxs(_components.p,{children:[`When set to `,_jsx(_components.code,{children:`true`}),`, products with no available variants are excluded from results regardless of the store-level `,_jsx(_components.a,{href:`/help/configuration/configure-search-behavior#out-of-stock-product-visibility`,children:`out-of-stock visibility`}),` setting. If your store’s `,_jsx(_components.a,{href:`/shopify-integration/catalog-sync#inventory-location-scope`,children:`inventory location scope`}),` is narrowed, the same location rules apply.`]}),_jsx(_components.p,{children:`This is useful when a specific search integration or page requires strict in-stock filtering even though the store default allows out-of-stock products to appear.`})]}),`\n`,_jsxs(ParamField,{body:`responseOptions`,type:`object`,description:`Per-request overrides for response behavior.`,id:`param-response-options`,children:[_jsxs(_components.p,{children:[`Per-request overrides for response behavior. Currently controls image preload hints emitted in the `,_jsx(_components.code,{children:`Link`}),` response header. You can disable preloads or narrow the srcset to the breakpoints your storefront uses. You cannot enable preloads when the store has them disabled.`]}),_jsx(Expandable,{title:`Properties`,children:_jsxs(ParamField,{body:`mediaPreloads`,type:`object`,description:`Controls Early Hints preload directives for product images.`,id:`param-media-preloads`,children:[_jsxs(_components.p,{children:[`Controls the `,_jsx(_components.code,{children:`Link: rel=\\\\\"preload\\\\\"`}),` directives generated for product images in this response. See `,_jsx(_components.a,{href:`/sdk/performance#early-hints-link-header-preloading`,children:`Early hints`}),` for background.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`enabled`,type:`boolean`,default:`true`,id:`param-enabled`,children:_jsxs(_components.p,{children:[`Set to `,_jsx(_components.code,{children:`false`}),` to skip the `,_jsx(_components.code,{children:`Link`}),` header for this request. Useful for server-rendered pages that do not benefit from preload hints, or when you want to reduce response header size. Cannot enable preloads if they are disabled at the store level.`]})}),_jsx(ParamField,{body:`srcsetSizes`,type:`int[]`,id:`param-srcset-sizes`,children:_jsxs(_components.p,{children:[`Custom responsive image widths (in pixels) to emit in `,_jsx(_components.code,{children:`imagesrcset`}),`. Each value must be an integer between `,_jsx(_components.code,{children:`1`}),` and `,_jsx(_components.code,{children:`10000`}),`. Overrides the store-level srcset configuration for this request only. When omitted, the store configuration or platform defaults are used.`]})}),_jsx(ParamField,{body:`sizes`,type:`string`,id:`param-sizes`,children:_jsxs(_components.p,{children:[`Media query string emitted as the `,_jsx(_components.code,{children:`imagesizes`}),` attribute in the preload `,_jsx(_components.code,{children:`Link`}),` header (for example `,_jsx(_components.code,{children:`(max-width: 600px) 100vw, 50vw`}),`). Tells the browser which srcset width to pick per viewport. Overrides the store-level sizes value for this request only. When omitted or empty, the store configuration is used. Each comma-separated entry may carry a media condition, including the last entry. See the `,_jsx(_components.a,{href:`/sdk/performance#customization`,children:`accepted format`}),` for details. The API rejects invalid values with a validation error.`]})})]})]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"responseOptions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"mediaPreloads\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"enabled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"srcsetSizes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`320`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`640`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`960`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sizes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(max-width: 600px) 100vw, 50vw\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-result-totals-can-differ`,children:`Why result totals can differ`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`totalResults`}),` is computed for each request. It is the number of products that clear Layers’ relevance thresholds for that request’s query interpretation and filters. Two requests for the same text can return different totals when:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`They use different prepare calls.`}),` Each `,_jsx(_components.code,{children:`search_id`}),` carries its own query expansions and intent analysis. To avoid generating intent rules for every keystroke, Layers only generates a new intent modifier (for example, a “jeans” category preference) once it has seen the same query text before, or once the query belongs to a known query cluster. An instant-results request fired while the shopper is still typing is often the first time Layers sees that text, so it can be interpreted more broadly or more narrowly than the results-page search that follows.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`They use different filters.`}),` `,_jsx(_components.code,{children:`filter_group`}),` values, system filters, and `,_jsx(_components.a,{href:`/platform/variant-breakouts`,children:`variant breakouts`}),` all change what is counted.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The catalog or query data changed between the calls.`}),` Examples are a catalog sync, a newly learned query cluster, or an updated merchandising rule.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Relevance thresholds are relative to the best match for each request. Any difference in how the query is interpreted therefore changes how many products are counted, not just their order.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Which count to show:`}),` use `,_jsx(_components.code,{children:`totalResults`}),` from the results-page search request, meaning the request that renders the grid with the shopper’s filters. Treat totals from instant-results or preview requests (small `,_jsx(_components.code,{children:`limit`}),`, no facets) as approximate. If you show a “View all N results” link in a typeahead, either leave out the number or take it from the same `,_jsx(_components.code,{children:`search_id`}),` the results page will use.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/api-reference/predict`,children:`Autocomplete`}),` endpoint returns query suggestions only and has no product count. A count shown next to typeahead products always comes from a separate Search request.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`results`,type:`Array of Objects`,id:`param-results`,children:_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`id`,type:`number`,id:`param-id-1`,children:_jsx(_components.p,{children:`The unique identifier of the product.`})}),_jsx(ResponseField,{name:`title`,type:`string`,id:`param-title-3`,children:_jsx(_components.p,{children:`The title of the product.`})}),_jsx(ResponseField,{name:`body_html`,type:`string`,id:`param-body-html`,children:_jsx(_components.p,{children:`The HTML content describing the product.`})}),_jsx(ResponseField,{name:`vendor`,type:`string`,id:`param-vendor`,children:_jsx(_components.p,{children:`The vendor of the product.`})}),_jsx(ResponseField,{name:`product_type`,type:`string`,id:`param-product-type`,children:_jsx(_components.p,{children:`The type of the product.`})}),_jsx(ResponseField,{name:`created_at`,type:`number`,id:`param-created-at`,children:_jsx(_components.p,{children:`The timestamp when the product was created.`})}),_jsx(ResponseField,{name:`handle`,type:`string`,id:`param-handle`,children:_jsx(_components.p,{children:`The handle of the product.`})}),_jsx(ResponseField,{name:`updated_at`,type:`number`,id:`param-updated-at`,children:_jsx(_components.p,{children:`The timestamp when the product was updated.`})}),_jsx(ResponseField,{name:`published_at`,type:`number`,id:`param-published-at`,children:_jsx(_components.p,{children:`The timestamp when the product was published.`})}),_jsx(ResponseField,{name:`tags`,type:`Array of strings`,id:`param-tags-1`,children:_jsx(_components.p,{children:`The tags associated with the product.`})}),_jsx(ResponseField,{name:`combined_listing_parent_product_id`,type:`number`,id:`param-combined-listing-parent-product-id`,children:_jsx(_components.p,{children:`The parent product id if a child in a Combined Listing.`})}),_jsx(ResponseField,{name:`combined_listing_role`,type:`string`,id:`param-combined-listing-role`,children:_jsx(_components.p,{children:`The role of the product if part of a Combined Listing.`})}),_jsxs(ResponseField,{name:`images`,type:`Array of Objects`,id:`param-images`,children:[_jsx(_components.p,{children:`The images of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`alt`,type:`string`,id:`param-alt`,children:_jsx(_components.p,{children:`The alt text of the image.`})}),_jsx(ResponseField,{name:`src`,type:`string`,id:`param-src`,children:_jsx(_components.p,{children:`The src of the image.`})}),_jsx(ResponseField,{name:`width`,type:`number`,id:`param-width`,children:_jsx(_components.p,{children:`The width of the image.`})}),_jsx(ResponseField,{name:`height`,type:`number`,id:`param-height`,children:_jsx(_components.p,{children:`The height of the image.`})}),_jsx(ResponseField,{name:`variant_ids`,type:`Array`,id:`param-variant-ids`,children:_jsx(_components.p,{children:`The variant IDs associated with the image.`})})]})]}),_jsx(ResponseField,{name:`metafields`,type:`Object`,id:`param-metafields`,children:_jsx(_components.p,{children:`The metafields of the product.`})}),_jsx(ResponseField,{name:`calculated`,type:`Object`,id:`param-calculated`,children:_jsx(_components.p,{children:`The computed attributes of the product. Only includes attributes with non-null, non-empty values. Attributes that evaluate to null or an empty string are omitted.`})}),_jsxs(ResponseField,{name:`category`,type:`Object`,id:`param-category`,children:[_jsx(_components.p,{children:`The Shopify Product Taxonomy Category of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name`,children:_jsx(_components.p,{children:`The name of the category leaf.`})}),_jsx(ResponseField,{name:`full_name`,type:`string`,id:`param-full-name`,children:_jsx(_components.p,{children:`The full name of the category.`})}),_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-2`,children:_jsx(_components.p,{children:`The ID of the category.`})}),_jsx(ResponseField,{name:`is_leaf`,type:`boolean`,id:`param-is-leaf`,children:_jsx(_components.p,{children:`Is the category a leaf category.`})}),_jsx(ResponseField,{name:`is_root`,type:`boolean`,id:`param-is-root`,children:_jsx(_components.p,{children:`Is the category a root category.`})})]})]}),_jsxs(ResponseField,{name:`first_or_matched_variant`,type:`Object`,id:`param-first-or-matched-variant`,children:[_jsx(_components.p,{children:`The first available variant (depending on OOS settings) or the variant matched with a filter or search query.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`id`,type:`number`,id:`param-id-3`,children:_jsx(_components.p,{children:`The ID of the variant.`})}),_jsx(ResponseField,{name:`title`,type:`string`,id:`param-title-4`,children:_jsx(_components.p,{children:`The title of the variant.`})}),_jsx(ResponseField,{name:`available`,type:`boolean`,id:`param-available`,children:_jsx(_components.p,{children:`The availability of the variant.`})}),_jsx(ResponseField,{name:`sku`,type:`number`,id:`param-sku`,children:_jsx(_components.p,{children:`The sku of the variant.`})}),_jsx(ResponseField,{name:`price`,type:`string`,id:`param-price-2`,children:_jsx(_components.p,{children:`The price of the variant.`})}),_jsx(ResponseField,{name:`compare_at_price`,type:`string`,id:`param-compare-at-price`,children:_jsx(_components.p,{children:`The compare at price of the variant.`})}),_jsx(ResponseField,{name:`metafields`,type:`Object`,id:`param-metafields-1`,children:_jsx(_components.p,{children:`The metafields of the variant.`})}),_jsxs(ResponseField,{name:`selected_options`,type:`Array of Objects`,id:`param-selected-options`,children:[_jsx(_components.p,{children:`The selected options of the variant.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-1`,children:_jsx(_components.p,{children:`The name of the option.`})}),_jsx(ResponseField,{name:`value`,type:`string`,id:`param-value-2`,children:_jsx(_components.p,{children:`The value of the option.`})}),_jsx(ResponseField,{name:`option_value`,type:`object`,id:`param-option-value`,children:_jsx(_components.p,{children:`The linked metafield of the option.`})})]})]}),_jsx(ResponseField,{name:`position`,type:`number`,id:`param-position`,children:_jsx(_components.p,{children:`The position of the variant in the product’s variant list.`})}),_jsx(ResponseField,{name:`inventory_quantity`,type:`number`,id:`param-inventory-quantity`,children:_jsxs(_components.p,{children:[`Total inventory quantity across the locations in the store’s `,_jsx(_components.a,{href:`/shopify-integration/catalog-sync#inventory-location-scope`,children:`inventory location scope`}),`, which is all locations by default. Only included when the store has the `,_jsx(_components.strong,{children:`Expose Variant Inventory`}),` setting enabled.`]})}),_jsx(ResponseField,{name:`inventory_policy`,type:`string`,id:`param-inventory-policy`,children:_jsxs(_components.p,{children:[`Inventory policy for the variant: `,_jsx(_components.code,{children:`DENY`}),` (stop selling when out of stock) or `,_jsx(_components.code,{children:`CONTINUE`}),` (allow overselling). Only included when the store has the `,_jsx(_components.strong,{children:`Expose Variant Inventory`}),` setting enabled.`]})}),_jsx(ResponseField,{name:`inventory_levels`,type:`object`,id:`param-inventory-levels`,children:_jsxs(_components.p,{children:[`Object mapping location IDs to available inventory quantities (e.g., `,_jsx(_components.code,{children:`{\"1001\": 5, \"1002\": 10}`}),`). Returns empty object `,_jsx(_components.code,{children:`{}`}),` when no inventory data exists. Only included when the store has the `,_jsx(_components.strong,{children:`Expose Variant Inventory`}),` setting enabled.`]})}),_jsxs(ResponseField,{name:`featured_media`,type:`Object`,id:`param-featured-media`,children:[_jsx(_components.p,{children:`The featured media of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`mediaContentType`,type:`string`,id:`param-media-content-type`,children:_jsx(_components.p,{children:`The type of media.`})}),_jsx(ResponseField,{name:`alt`,type:`string`,id:`param-alt-1`,children:_jsx(_components.p,{children:`The alt text of the image.`})}),_jsx(ResponseField,{name:`src`,type:`string`,id:`param-src-1`,children:_jsx(_components.p,{children:`The src of the image.`})}),_jsx(ResponseField,{name:`width`,type:`number`,id:`param-width-1`,children:_jsx(_components.p,{children:`The width of the image.`})}),_jsx(ResponseField,{name:`height`,type:`number`,id:`param-height-1`,children:_jsx(_components.p,{children:`The height of the image.`})})]})]})]})]}),_jsxs(ResponseField,{name:`featured_media`,type:`Object`,id:`param-featured-media-1`,children:[_jsx(_components.p,{children:`The featured media of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`mediaContentType`,type:`string`,id:`param-media-content-type-1`,children:_jsx(_components.p,{children:`The type of media.`})}),_jsx(ResponseField,{name:`alt`,type:`string`,id:`param-alt-2`,children:_jsx(_components.p,{children:`The alt text of the image.`})}),_jsx(ResponseField,{name:`src`,type:`string`,id:`param-src-2`,children:_jsx(_components.p,{children:`The src of the image.`})}),_jsx(ResponseField,{name:`width`,type:`number`,id:`param-width-2`,children:_jsx(_components.p,{children:`The width of the image.`})}),_jsx(ResponseField,{name:`height`,type:`number`,id:`param-height-2`,children:_jsx(_components.p,{children:`The height of the image.`})})]})]}),_jsx(ResponseField,{name:`available`,type:`boolean`,id:`param-available-1`,children:_jsx(_components.p,{children:`The availability of the product.`})}),_jsxs(ResponseField,{name:`price_range`,type:`Object`,id:`param-price-range`,children:[_jsx(_components.p,{children:`The price range of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`from`,type:`number`,id:`param-from`,children:_jsx(_components.p,{children:`The starting price of the product.`})}),_jsx(ResponseField,{name:`to`,type:`number`,id:`param-to`,children:_jsx(_components.p,{children:`The ending price of the product.`})})]})]})]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Semantic Redirects`}),`: When a text search query semantically matches a configured redirect term, the response will include a `,_jsx(_components.code,{children:`_meta.redirect`}),` object with the redirect URL. In this case, the `,_jsx(_components.code,{children:`results`}),` array will be empty and `,_jsx(_components.code,{children:`totalResults`}),` will be 0. Semantic redirects only apply to text search queries (not image or similar product searches).`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Degraded responses`}),`: Optional relevance steps such as query expansion, intent modifiers, and personalization boosts fail open. If one of these steps is temporarily unavailable, Layers skips it and returns HTTP 200 with results instead of an error. Skipped steps do not appear in `,_jsx(_components.code,{children:`_workflow`}),`. If Layers is temporarily serving keyword-only results platform-wide, the response includes `,_jsx(_components.code,{children:`_meta.search_lane`}),` set to `,_jsx(_components.code,{children:`\"prefix_only\"`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`totalResults`,type:`number`,id:`param-total-results`,children:_jsxs(_components.p,{children:[`The total number of results that passed relevance filtering for this request, across all pages. It does not depend on `,_jsx(_components.code,{children:`pagination.limit`}),`, `,_jsx(_components.code,{children:`pagination.page`}),`, or which `,_jsx(_components.code,{children:`facets`}),` you request. When variant breakouts are enabled, this reflects the count of tiles (both product and variant tiles) rather than just products. See `,_jsx(_components.a,{href:`#why-result-totals-can-differ`,children:`Why result totals can differ`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`page`,type:`number`,id:`param-page-1`,children:_jsx(_components.p,{children:`The current page number.`})}),`\n`,_jsx(ResponseField,{name:`totalPages`,type:`number`,id:`param-total-pages`,children:_jsx(_components.p,{children:`The total number of pages. Calculated based on tile count when variant breakouts are enabled.`})}),`\n`,_jsx(ResponseField,{name:`attributionToken`,type:`string`,id:`param-attribution-token`,children:_jsxs(_components.p,{children:[`A unique request identifier (ULID) for this API call. Use this token to correlate search requests with analytics events via the `,_jsx(_components.a,{href:`/tracking-api/send-events`,children:`Beacon API`}),`, and to match requests to entries in the `,_jsx(_components.a,{href:`/shopify-integration/storefront-pixel#search-inspector`,children:`Search Inspector`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`facetRanges`,type:`object`,id:`param-facet-ranges`,children:_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`includeFacetRanges`}),` is `,_jsx(_components.code,{children:`true`}),` then an object with keys of the facet attribute code and value is an object with min/max.`]})}),`\n`,_jsx(ResponseField,{name:`facets`,type:`object`,id:`param-facets-1`,children:_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`retrieveFacetCount`}),` is `,_jsx(_components.code,{children:`true`}),` then an object with keys and values of the specified attributes. When variant breakouts are enabled, facet counts reflect tile counts rather than product counts. Empty values and literal `,_jsx(_components.code,{children:`\"null\"`}),` strings are automatically excluded from facet results.`]})}),`\n`,_jsxs(ResponseField,{name:`facetDisplay`,type:`object`,id:`param-facet-display`,children:[_jsx(_components.p,{children:`Returned when at least one requested facet has display data to hydrate. Keys are facet attribute codes; values map each facet value to a display object.`}),_jsxs(_components.p,{children:[`Metaobject-reference facets require `,_jsx(_components.code,{children:`enrichFacetMetaobjects: true`}),` and map each handle to the metaobject’s `,_jsx(_components.code,{children:`display_name`}),` and `,_jsx(_components.code,{children:`fields`}),`. Entries also carry a `,_jsx(_components.code,{children:`swatch`}),` object when the metaobject defines a color or image field. Handles with no matching cached metaobject are omitted here and remain as plain values in `,_jsx(_components.code,{children:`facets`}),`. See `,_jsx(_components.a,{href:`/developers/product-schema/metafields/metaobjects-and-references`,children:`Metaobjects and reference metafields`}),` for the normalized field shape and the `,_jsx(_components.a,{href:`/api-reference/facets#response`,children:`Facets API response`}),` for the `,_jsx(_components.code,{children:`swatch`}),` shape.`]}),_jsxs(_components.p,{children:[`For `,_jsx(_components.code,{children:`variants.pickup_locations`}),`, each entry maps a Shopify location id to the location’s `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`address`}),`, `,_jsx(_components.code,{children:`instructions`}),`, `,_jsx(_components.code,{children:`pickupTime`}),`, and (when the filter is a `,_jsx(_components.code,{children:`geoRadius`}),`) `,_jsx(_components.code,{children:`distance`}),` and `,_jsx(_components.code,{children:`distanceUnit`}),`. Pickup entries are returned whenever pickup facets are requested, regardless of `,_jsx(_components.code,{children:`enrichFacetMetaobjects`}),`. See `,_jsx(_components.a,{href:`/engine/geospatial-filtering#local-pickup-filtering`,children:`Local pickup filtering`}),`.`]})]}),`\n`,_jsx(ResponseField,{name:`_meta`,type:`object`,id:`param-meta`,children:_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`appliedSearchRules`,type:`Array of strings`,id:`param-applied-search-rules`,children:_jsxs(_components.p,{children:[`The IDs of `,_jsx(_components.a,{href:`/platform/request-transforms`,children:`request transforms`}),` whose targeting conditions matched this request. Returns an empty array when no request transforms matched. Use this to verify which request transforms are evaluating against a given search request.`]})}),_jsxs(ResponseField,{name:`appliedSearchRuleActions`,type:`array of objects`,id:`param-applied-search-rule-actions`,children:[_jsxs(_components.p,{children:[`One entry per action executed by a matched request transform, in execution order. Use `,_jsx(_components.code,{children:`changed`}),` to tell whether an action actually modified the request. A matched rule can appear in `,_jsx(_components.code,{children:`appliedSearchRules`}),` while all of its actions report `,_jsx(_components.code,{children:`changed: false`}),`. See `,_jsxs(_components.a,{href:`/platform/request-transforms#debugging-with-_meta`,children:[`Debugging with `,_jsx(_components.code,{children:`_meta`})]}),`.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`ruleId`,type:`string`,id:`param-rule-id`,children:_jsx(_components.p,{children:`The ID of the request transform that owns the action.`})}),_jsx(ResponseField,{name:`type`,type:`string`,id:`param-type-4`,children:_jsxs(_components.p,{children:[`The action type, for example `,_jsx(_components.code,{children:`add_filter_group`}),` or `,_jsx(_components.code,{children:`override_sort_order`}),`.`]})}),_jsx(ResponseField,{name:`changed`,type:`boolean`,id:`param-changed`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` when the action modified the request. `,_jsx(_components.code,{children:`false`}),` when the action was a no-op, for example a `,_jsx(_components.code,{children:`replace_query`}),` action on a request with no query or an `,_jsx(_components.code,{children:`override_sort_order`}),` action matching the already-active sort order.`]})}),_jsx(ResponseField,{name:`error`,type:`string`,id:`param-error`,children:_jsxs(_components.p,{children:[`Only present when the action could not run. `,_jsx(_components.code,{children:`\"unsupported_action_type\"`}),` indicates a stored action type the engine cannot execute. The action is skipped and the rest of the request proceeds normally.`]})})]})]}),_jsxs(ResponseField,{name:`redirect`,type:`object`,id:`param-redirect`,children:[_jsxs(_components.p,{children:[`Semantic redirect information. Only present when a semantic match is found for a text search that keeps regular redirect behavior. When a redirect is returned, the `,_jsx(_components.code,{children:`results`}),` array is empty. A supported collection destination can instead be served inline when `,_jsx(_components.strong,{children:`Inline Collection Redirects`}),` is enabled; see `,_jsx(_components.code,{children:`collection`}),` below.`]}),_jsx(Expandable,{title:`Properties`,children:_jsx(ResponseField,{name:`url`,type:`string`,id:`param-url`,children:_jsx(_components.p,{children:`The redirect URL to navigate to. This URL is determined by semantic matching of the search query against configured redirect terms.`})})})]}),_jsxs(ResponseField,{name:`collection`,type:`object`,id:`param-collection`,children:[_jsxs(_components.p,{children:[`Collection browse metadata returned when `,_jsx(_components.strong,{children:`Inline Collection Redirects`}),` is enabled and an eligible collection landing page is served inside the search response. Collection links with tags, filters, a chosen sort, or a pagination override keep regular redirect behavior; locale prefixes and tracking-only query parameters do not disqualify a link. The response keeps the original search query, normal facets, and pagination. `,_jsx(_components.code,{children:`redirect`}),` is not returned for this inline response.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`id`,type:`string | number`,id:`param-id-4`,children:_jsx(_components.p,{children:`The collection identifier.`})}),_jsx(ResponseField,{name:`handle`,type:`string`,id:`param-handle-1`,children:_jsx(_components.p,{children:`The collection handle.`})}),_jsx(ResponseField,{name:`title`,type:`string`,id:`param-title-5`,children:_jsx(_components.p,{children:`The collection title.`})}),_jsx(ResponseField,{name:`sort_order_code`,type:`string`,id:`param-sort-order-code-1`,children:_jsx(_components.p,{children:`The sort order that served the collection results.`})})]})]}),_jsxs(ResponseField,{name:`variantBreakouts`,type:`array of objects`,id:`param-variant-breakouts`,children:[_jsx(_components.p,{children:`Array of variant breakout configurations applied to search. Only present when one or more variant breakouts are active for search requests. Multiple breakouts with different option codes can work simultaneously.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-5`,children:_jsx(_components.p,{children:`The unique identifier of the variant breakout configuration.`})}),_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-2`,children:_jsx(_components.p,{children:`The display name of the variant breakout configuration (e.g., “Gemstone Breakout”, “Color Breakout”).`})}),_jsx(ResponseField,{name:`optionCode`,type:`string`,id:`param-option-code-1`,children:_jsx(_components.p,{children:`The product option code that determines which variants are broken out (e.g., “Stone”, “Color”). Each product is broken out by the first matching option code from the array.`})})]})]}),_jsxs(ResponseField,{name:`mediaPreloads`,type:`object`,id:`param-media-preloads-1`,children:[_jsxs(_components.p,{children:[`Echoes the image preload configuration used to build the `,_jsx(_components.code,{children:`Link`}),` response header for this request. Only present when image preloads are emitted. Use this to confirm which srcset breakpoints were applied, especially when overriding them via `,_jsx(_components.code,{children:`responseOptions.mediaPreloads`}),`.`]}),_jsx(Expandable,{title:`Properties`,children:_jsx(ResponseField,{name:`srcsetSizes`,type:`int[]`,id:`param-srcset-sizes-1`,children:_jsxs(_components.p,{children:[`The responsive image widths (in pixels) used in the `,_jsx(_components.code,{children:`imagesrcset`}),` of the `,_jsx(_components.code,{children:`Link`}),` header. Reflects the request override when provided, otherwise the store-level configuration or platform defaults.`]})})})]}),_jsxs(ResponseField,{name:`discountEntitlements`,type:`array of objects`,id:`param-discount-entitlements-1`,children:[_jsxs(_components.p,{children:[`Echoes the `,_jsx(_components.a,{href:`/shopify-integration/discount-entitlements`,children:`discount entitlements`}),` applied to this request. Only present when the request included `,_jsx(_components.code,{children:`discountEntitlements`}),` (either directly or via a matched `,_jsx(_components.a,{href:`/platform/request-transforms`,children:`request transform`}),`). Use this to render discount badges or labels on the storefront without re-deriving which entitlements matched. Each entry mirrors the entitlement shape sent in the request.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`entitled`,type:`object`,id:`param-entitled-1`,children:_jsxs(_components.p,{children:[`The entitlement criteria that qualified products for the discount. Contains any of `,_jsx(_components.code,{children:`all`}),`, `,_jsx(_components.code,{children:`products`}),`, `,_jsx(_components.code,{children:`variants`}),`, `,_jsx(_components.code,{children:`collections`}),`, or `,_jsx(_components.code,{children:`conditions`}),`. See the `,_jsx(_components.a,{href:`/shopify-integration/discount-entitlements#entitlement-criteria`,children:`entitlement criteria`}),` reference.`]})}),_jsxs(ResponseField,{name:`discount`,type:`object`,id:`param-discount-1`,children:[_jsx(_components.p,{children:`The discount Layers applied.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`type`,type:`string`,id:`param-type-5`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`\"PERCENTAGE\"`}),` or `,_jsx(_components.code,{children:`\"FIXED_AMOUNT\"`}),`.`]})}),_jsx(ResponseField,{name:`value`,type:`number`,id:`param-value-3`,children:_jsxs(_components.p,{children:[`The discount value. Percent off for `,_jsx(_components.code,{children:`PERCENTAGE`}),`, currency amount for `,_jsx(_components.code,{children:`FIXED_AMOUNT`}),`.`]})})]})]})]})]}),_jsx(ResponseField,{name:`search_lane`,type:`string`,id:`param-search-lane`,children:_jsxs(_components.p,{children:[`Only present when Layers is temporarily serving degraded results. The only value is `,_jsx(_components.code,{children:`\"prefix_only\"`}),`, meaning Layers matched results using keyword and prefix matching only, without semantic ranking, query expansion, or intent detection. The response stays well formed, so no client changes are required. Use this field to tell a keyword-only fallback response apart from a normal semantic one when reviewing analytics or debugging relevance.`]})})]})}),`\n`,_jsxs(ResponseField,{name:`_workflow`,type:`array of objects`,id:`param-workflow`,children:[_jsx(_components.p,{children:`An ordered trace of processing steps the engine performed to produce results for this request. Each entry represents a stage in the search pipeline, recorded in the order it was executed. Use this field to understand how Layers interpreted and transformed your query, which rules and boosts were applied, and why results appear in a particular order.`}),_jsxs(_components.p,{children:[`This field is useful for debugging search behavior in development and is also surfaced in the `,_jsx(_components.a,{href:`/shopify-integration/storefront-pixel#search-inspector`,children:`Search Inspector`}),` panel.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsxs(ResponseField,{name:`type`,type:`string`,id:`param-type-6`,children:[_jsx(_components.p,{children:`The processing step type. Possible values:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"query-replacement\"`}),` — The original query was replaced (e.g., by a spelling correction or request transform). The `,_jsx(_components.code,{children:`payload`}),` contains the corrected query string.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"query-expansion\"`}),` — Additional related queries were generated to broaden the search. The `,_jsx(_components.code,{children:`payload`}),` is an array of expanded query strings.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"query-interpretation\"`}),` — The engine analyzed the query to extract intent signals such as spelling corrections, detected language, and classification. The `,_jsx(_components.code,{children:`payload`}),` contains the interpretation details.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"intent-modifiers\"`}),` — AI-powered intent modifiers adjusted the query based on detected shopping intent. The `,_jsx(_components.code,{children:`payload`}),` contains the modifier actions that were applied.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"ranking-rules\"`}),` — One or more `,_jsx(_components.a,{href:`/platform/ranking-relevancy`,children:`ranking rules`}),` matched and influenced result ordering. The `,_jsx(_components.code,{children:`payload`}),` lists the applied rules.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"semantic-redirect\"`}),` — A `,_jsx(_components.a,{href:`/platform/semantic-redirects`,children:`semantic redirect`}),` matched the query. The `,_jsx(_components.code,{children:`payload`}),` contains the redirect URL.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"rule-applied\"`}),` — A merchandising rule was applied (browse requests). The `,_jsx(_components.code,{children:`payload`}),` contains the rule identifier.`]}),`\n`]})]}),_jsx(ResponseField,{name:`payload`,type:`string | array | object`,id:`param-payload`,children:_jsxs(_components.p,{children:[`The data associated with this processing step. The structure varies by `,_jsx(_components.code,{children:`type`}),`; see the `,_jsx(_components.code,{children:`type`}),` values listed for `,_jsx(_components.code,{children:`_workflow`}),`.`]})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`response-headers`,children:`Response headers`}),`\n`,_jsx(_components.p,{children:`Every API response includes the following headers for request tracing and performance optimization:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`x-request-id`})}),_jsxs(_components.td,{children:[`A unique identifier (ULID) for the request. This matches the `,_jsx(_components.code,{children:`attributionToken`}),` in the response body. Use it to correlate requests across your infrastructure or when contacting support.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`x-layers-build`})}),_jsx(_components.td,{children:`The Layers build version that served the request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Layers-Results-Cache`})}),_jsxs(_components.td,{children:[`Indicates whether the response was served from the results cache. Returns `,_jsx(_components.code,{children:`HIT`}),` when cached results were used, or `,_jsx(_components.code,{children:`MISS`}),` when results were computed fresh. Use this to monitor cache effectiveness and debug performance.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Link`})}),_jsxs(_components.td,{children:[`Contains `,_jsx(_components.code,{children:`rel=\"preload\"`}),` directives for product images in the response (up to 6 items), enabling browsers and CDNs to begin fetching images before your application processes the JSON body. Each entry includes a responsive `,_jsx(_components.code,{children:`imagesrcset`}),` with multiple sizes. See `,_jsx(_components.a,{href:`/sdk/performance#early-hints-link-header-preloading`,children:`Early hints`}),` for configuration options. Only included when early hints are enabled for your store (enabled by default).`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`variant-breakouts`,children:`Variant breakouts`}),`\n`,_jsxs(_components.p,{children:[`When variant breakouts are configured, results may include both product tiles and variant tiles. Each result includes a `,_jsx(_components.code,{children:`__typename`}),` field to identify the tile type:`]}),`\n`,_jsxs(ResponseField,{name:`__typename`,type:`string`,id:`param-typename`,children:[_jsx(_components.p,{children:`Identifies the type of tile in the results:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"Product\"`}),` - A standard product tile`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"Variant\"`}),` - An individual variant tile from a product with a configured breakout option`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`4`,id:`variant-tile-fields`,children:`Variant tile fields`}),`\n`,_jsx(_components.p,{children:`Variant tiles include additional fields to identify the specific variant:`}),`\n`,_jsx(ResponseField,{name:`product_id`,type:`number`,id:`param-product-id-2`,children:_jsx(_components.p,{children:`The parent product ID. Use this to link back to the full product or group variants from the same product.`})}),`\n`,_jsx(ResponseField,{name:`variant_id`,type:`number`,id:`param-variant-id-3`,children:_jsxs(_components.p,{children:[`The specific variant ID. For variant tiles, this matches the `,_jsx(_components.code,{children:`id`}),` field.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`For variant tiles, the `,_jsx(_components.code,{children:`id`}),` field contains the variant ID (not the product ID). The `,_jsx(_components.code,{children:`title`}),` field is formatted as `,_jsx(_components.code,{children:`\"{product title} - {option value}\"`}),` by default (e.g., “Amethyst Ring - Rose Quartz”), but the format can be configured per breakout. If the breakout’s `,_jsx(_components.strong,{children:`Include Option Value in Title`}),` setting is disabled, the title is the original product title. See the `,_jsx(_components.a,{href:`/platform/variant-breakouts`,children:`Variant Breakouts`}),` documentation for more details.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"api":"POST /search/{searchQuery}/execute","title":"Text Search: Execute Search","sidebarTitle":"Execute Search","description":"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.","href":"/api-reference/search"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[410,414,"Example,ResponseFiel"],[710,725,"Example)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingM"],[88960,89388,",`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`Request`,numberOfLines:`33`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`33`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`POST /storefront/v`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/search/running%`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`shoes/execute`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pagination\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"page\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"limit\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`20`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"retrieveFacetCount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"product_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"context\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"geo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"country\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"US\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"province\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"California\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"productsInCart\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"title\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Nike Air Force 1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"productId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1234567890\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"variantId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"9876543210\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"marketing\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"source\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"google\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"medium\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cpc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"campaign\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"summer-sale\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"shoppingChannel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"web\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"identity\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sessionId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"deviceId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"device-uuid\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Response`,numberOfLines:`68`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`68`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"results\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`7003338965178`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"title\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPREME SEALLINE SEE POUCH SMALL\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"body_html\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"The Supreme Sealline See Pouch Small is a versatile and waterproof storage solution that seamlessly marries utility and style. With its clear window for easy visibility and the iconic Supreme branding, it's a sought-after accessory for those who appreciate keeping their essentials dry while making a fashion statement, whether at the beach or in the city..\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPREME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"product_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Accessories\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2022-02-05T01:22:05.000000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"handle\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"supreme-pouch-44370ss18a32-sm\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"updated_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2023-10-25T20:47:04.000000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"published_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2022-02-05T01:22:05.000000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"tags\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"consignment\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"images\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"alt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPREME POUCH\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"src\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.shopify.com/s/files/1/0588/3677/9194/products/ss18_supreme_tnf_pouch_blk_2-l_5fb1316e-22f7-4702-9953-57f3fbdda5be.jpg?v=1644047927\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"width\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`800`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"height\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`534`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"variant_ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metafields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"product\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"alias\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SEALLINE SEE POUCH SMALL\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"colorway\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"BLACK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"styleCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SS18A30 BLACK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"yearOfRelease\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2018`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"searchColor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"black\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"available\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price_range\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"from\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalResults\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"page\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalPages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ADIDAS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"JORDAN\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`336`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"NEW BALANCE\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`15`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"NIKE\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`384`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"REEBOK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"SUPREME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`624`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"VANS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`32`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"attributionToken\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"01JRVX7K2M8N9P4Q5R6S7T8U9V\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"_meta\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"appliedSearchRules\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"appliedSearchRuleActions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"_workflow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"query-expansion\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"payload\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"running sneakers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"athletic shoes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}"]]},"mdxExtracts":{"tableOfContents":[{"title":"Authorization","slug":"authorization","depth":2,"children":[]},{"title":"Headers","slug":"headers","depth":2,"children":[]},{"title":"Path parameters","slug":"path-parameters","depth":2,"children":[]},{"title":"Body","slug":"body","depth":2,"children":[]},{"title":"Why result totals can differ","slug":"why-result-totals-can-differ","depth":2,"children":[]},{"title":"Response","slug":"response","depth":2,"children":[{"title":"Response headers","slug":"response-headers","depth":3,"children":[]},{"title":"Variant breakouts","slug":"variant-breakouts","depth":3,"children":[]},{"title":"Variant tile fields","slug":"variant-tile-fields","depth":4,"children":[]}]}],"codeExamples":{"response":{"type":"ResponseExample","children":[{"filename":"Request","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"33\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">POST /storefront/v\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">/search/running%\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">20\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">shoes/execute\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"pagination\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"page\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"limit\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">20\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"retrieveFacetCount\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"facets\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"vendor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"product_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"context\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"geo\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"country\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"US\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"province\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"California\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"productsInCart\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"title\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Nike Air Force 1\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"productId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"1234567890\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"variantId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"9876543210\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"marketing\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"source\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"google\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"medium\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cpc\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"campaign\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"summer-sale\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"shoppingChannel\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"web\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"identity\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"sessionId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"abc123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"deviceId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"device-uuid\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"Response","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"68\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"results\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">7003338965178\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"title\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SUPREME SEALLINE SEE POUCH SMALL\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"body_html\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"The Supreme Sealline See Pouch Small is a versatile and waterproof storage solution that seamlessly marries utility and style. With its clear window for easy visibility and the iconic Supreme branding, it's a sought-after accessory for those who appreciate keeping their essentials dry while making a fashion statement, whether at the beach or in the city..\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"vendor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SUPREME\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"product_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Accessories\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2022-02-05T01:22:05.000000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"handle\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"supreme-pouch-44370ss18a32-sm\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"updated_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2023-10-25T20:47:04.000000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"published_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2022-02-05T01:22:05.000000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"tags\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"consignment\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"images\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"alt\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SUPREME POUCH\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"src\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.shopify.com/s/files/1/0588/3677/9194/products/ss18_supreme_tnf_pouch_blk_2-l_5fb1316e-22f7-4702-9953-57f3fbdda5be.jpg?v=1644047927\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"width\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">800\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"height\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">534\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"variant_ids\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: []\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"metafields\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"product\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"alias\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SEALLINE SEE POUCH SMALL\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"colorway\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"BLACK\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"styleCode\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SS18A30 BLACK\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"yearOfRelease\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">2018\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"searchColor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"black\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"available\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price_range\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"from\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">30\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"to\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">30\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalResults\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1000\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"page\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalPages\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">20\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"facets\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"vendor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ADIDAS\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">30\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"JORDAN\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">336\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"NEW BALANCE\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">15\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"NIKE\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">384\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"REEBOK\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">4\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"SUPREME\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">624\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"VANS\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">32\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"attributionToken\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"01JRVX7K2M8N9P4Q5R6S7T8U9V\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"_meta\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"appliedSearchRules\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"appliedSearchRuleActions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: []\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"_workflow\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"query-expansion\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"payload\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"running sneakers\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"athletic shoes\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Text Search: Execute Search","path":"/search/{searchQuery}/execute","servers":[{"url":"https://app.uselayers.com/api/storefront/v1"}],"method":"post","request":{"security":[],"parameters":{"query":{},"header":{"X-Storefront-Access-Token":{"schema":[{"type":"string","description":"Token-based authentication header in the form of `\u003cYOUR_LAYERS_TOKEN>` .","required":true}]},"Content-Type":{"schema":[{"type":"string","required":true}]},"Accept":{"schema":[{"type":"string","required":true}]},"X-SDK-Client":{"schema":[{"type":"string","description":"Optional header to identify SDK client requests. Format: `sdk-name/version` (e.g., `layers-js-sdk/1.0.0` ). When provided with version >= 1.0.0, the server returns HTTP 425 (Too Early) with a `Retry-After` header when prepared search data isn’t ready yet, instead of blocking, so the client can poll until the search is ready."}]}},"cookie":{},"path":{"searchQuery":{"schema":[{"type":"string","description":"The url-encoded search query. Layers normalizes the query before validating it, stripping invisible characters and converting Unicode punctuation to ASCII equivalents. After normalization, the query must be 2 to 255 characters. Queries outside this range return HTTP 422.","required":true}]}}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"attributes":[{"type":"array","items":[{"type":"string"}],"description":"Product attributes to include in the response. By default, all attributes are included except opt-in attributes noted below. Available attributes include: `id` , `title` , `handle` , `body_html` , `vendor` , `product_type` , `tags` , `images` , `available` , `created_at` , `updated_at` , `published_at` , `price_range` , `options` , `original_options` , `metafields` , `named_tags` , `calculated` , `category` , `featured_media` , `is_gift_card` , `has_variants_that_require_components` , `combined_listing_parent_product_id` , `combined_listing_role` , `first_or_matched_variant` , and `variants` . The `collection_titles` attribute is opt-in: pass it in `attributes` to include the array of collection titles each product belongs to. It is excluded from responses by default. See the for detailed descriptions, including for slicing arrays and filtering collections (for example, , , )."}],"search_id":[{"type":"string","description":"ULID identifier from the endpoint for optimized search execution. When provided, reuses the precomputed intent analysis and query expansions from that prepare call so the search returns faster."}],"filter_group":[{"type":"object","properties":{},"description":"Storefront endpoints accept nested `AND` / `OR` filter groups up to two levels deep. Each nested group must contain at least one expression; empty nested groups are rejected. Metafield filter properties may include hyphens in their namespace or key, for example `metafields.my-app.fit-type` . Refer to the dedicated Filter Expressions guide to learn more about filter expressions."}],"pagination":[{"type":"object","properties":{"page":[{"type":"integer","description":"The current page of results to fetch."}],"limit":[{"type":"integer","description":"The max results to fetch per page."}]}}],"facets":[{"type":"array","items":[{"type":"string"}],"description":"Facets to be included. Accepts both exact facet codes (e.g., `\"vendor\"` , `\"options.Size\"` ) and wildcard patterns (e.g., `\"options.*\"` , `\"metafields.product.*\"` ). Wildcard patterns expand to all matching attribute codes. For example, `\"options.*\"` expands to all option facets like `\"options.Size\"` and `\"options.Color\"` . Wildcards must match at least one attribute code to be valid. Examples:"}],"retrieveFacetCount":[{"type":"boolean","description":"If the count of each facet value should be calculated."}],"includeFacetRanges":[{"type":"boolean","description":"If you want a min/max range for numeric facets such as price."}],"enrichFacetMetaobjects":[{"type":"boolean","description":"When `true` , any facet backed by a `metaobject_reference` or `list.metaobject_reference` metafield is returned with a companion `facetDisplay` object. Each entry maps a facet value (the metaobject handle) to the referenced metaobject’s `display_name` and `fields` . When the metaobject defines a color or image field, the entry also carries a resolved `swatch` object. Use this when your storefront filter UI needs human-readable labels or nested field data (for example, a color name or swatch hex) instead of the raw handle. When `false` or omitted, only the handles are returned in `facets` . Values are looked up from the local metaobject cache. Handles with no matching cached metaobject are omitted from `facetDisplay` and remain as plain values in `facets` . See Metaobjects and reference metafields for the normalized shape of each entry."}],"discountEntitlements":[{"type":"array","items":[{"type":"object","properties":{"entitled":[{"type":"object","properties":{"all":[{"type":"boolean","description":"When `true` , applies discount to all products. When `false` , uses products, variants, or collections arrays."}],"products":[{"type":"array","items":[{"type":"string"}],"description":"Array of product IDs or handles that qualify for the discount. Maximum 250 entries."}],"variants":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Array of variant IDs that qualify for the discount. Maximum 250 entries."}],"collections":[{"type":"array","items":[{"type":"string"}],"description":"Array of collection handles that qualify for the discount. Maximum 250 entries."}],"conditions":[{"type":"object","properties":{},"description":"Optional filter group that qualifies products for the discount based on their attributes (for example, `tags` or `vendor` ). Uses the same shape as the top-level `filter_group` parameter. Matches are additive with `products` , `variants` , and `collections` on the same entitlement."}]},"description":"Defines which products qualify for the discount.","required":true}],"discount":[{"type":"object","properties":{"type":[{"type":"string","description":"The discount type: `PERCENTAGE` or `FIXED_AMOUNT` .","required":true}],"value":[{"type":"number","description":"The discount value. For `PERCENTAGE` , this must be a number between 0 and 100 (e.g., 10 for 10% off). For `FIXED_AMOUNT` , this is the currency amount.","required":true}]},"description":"Defines the discount to apply.","required":true}]}}],"description":"Apply discounts to products, variants, or collections. When provided, price-based sorting and filtering will use discounted prices. See the Discount Entitlements guide for detailed usage."}],"defaultSelectedOptions":[{"type":"array","items":[{"type":"object","properties":{"optionCode":[{"type":"string","description":"The product option code to match (e.g., `\"birthstone\"` , `\"color\"` ). Option codes are automatically normalized (e.g., `\"Birth Stone\"` becomes `\"birth_stone\"` ).","required":true}],"value":[{"type":"string","description":"The option value to match (e.g., `\"February\"` , `\"Blue\"` ).","required":true}]}}],"description":"Specify which product variants should be selected by default in the `first_or_matched_variant` field. This is a presentation preference for search and browse results, not a product filter. Request transforms can set or replace this complete list with the `set_default_selected_options` action. Behavior: Uses OR logic - selects the first variant matching ANY of the specified option values Query and keyword matches, plus pinned variant choices, take priority over these defaults Configured defaults take priority over a confident semantic match to a variant If no variant matches the configured defaults, a confident semantic match can still be selected before falling back to the first variant by position Automatically skipped when any option or variant filters are applied (filters take precedence) Only affects the `first_or_matched_variant` field in the response Works with Variant Breakouts : product tiles respect default selected options, and variant tiles respect non-breakout default selected options, preferring matching variants within each breakout group and falling back to position when needed. This does not change breakout grouping or collapse breakout tiles. Example: Multiple options example (OR logic): This selects variants with either February OR March birthstone, preferring the first match found."}],"identity":[{"type":"object","properties":{"deviceId":[{"type":"string","description":"Persistent browser identifier that remains constant across sessions. Used to recognize returning visitors for long-term personalization. Automatically generated and managed by the Storefront Pixel."}],"sessionId":[{"type":"string","description":"Temporary session identifier. Layers-generated sessions expire after 30 minutes without activity. The Storefront Pixel refreshes the rolling window at page load and on every route change, including pages without tracked events. When a legacy Shopify or fallback cookie is available, Layers prefers it and does not control its lifetime. Without consent, the pixel uses a sessionStorage or in-memory fallback and does not write an analytics cookie."}],"customerId":[{"type":"string","description":"Shopify customer ID for authenticated users. Only present when the customer is signed in to their account."}],"companyLocationId":[{"type":"string","description":"Shopify B2B company location GID (e.g. `gid://shopify/CompanyLocation/123456789` ) for the authenticated buyer. Layers resolves the catalog assigned to the company location and uses it to scope results: only products in the catalog are returned, prices come from the catalog’s price list, and excluded collections return 404. Omit for retail (DTC) traffic. When you pass `companyLocationId` , you must also pass the buyer’s `customerId` . Layers verifies with Shopify that the customer belongs to the company that owns the location before resolving the catalog; unauthorized or unauthenticated requests return a `403` . See B2B catalogs ."}]},"description":"User identity information for tracking and personalization. Automatically managed by the Storefront Pixel; required for headless integrations."}],"context":[{"type":"object","properties":{"geo":[{"type":"object","properties":{"country":[{"type":"string","description":"Country code or name (e.g., “US”, “Canada”)."}],"province":[{"type":"string","description":"State or province name (e.g., “California”, “Ontario”)."}],"city":[{"type":"string","description":"City name (e.g., “Los Angeles”, “Toronto”)."}]},"description":"Geographic location information for regional personalization and merchandising. Layers determines it from the IP address for client-side requests. For server-side API calls (headless integrations), provide `geo` explicitly."}],"productsInCart":[{"type":"array","items":[{"type":"object","properties":{"title":[{"type":"string","description":"Product title. Each entry needs at least a `productId` , `variantId` , or non-empty `title` . Layers drops entries with none of these."}],"price":[{"type":"number","description":"Unit price in the request currency’s major units (e.g. `29.00` for $29), not cents. Accepts a JSON number or a numeric string such as `\"29.00\"` ."}],"type":[{"type":"string","description":"Product type or category."}],"productId":[{"type":"string","description":"Product identifier. Accepts a numeric ID (e.g., `\"8234567890123\"` ) or a Shopify GID (e.g., `\"gid://shopify/Product/8234567890123\"` )."}],"variantId":[{"type":"string","description":"Product variant identifier."}],"options":[{"type":"object","properties":{},"description":"Product variant options (e.g., `{\"Size\": \"11\", \"Color\": \"Red\"}` )."}],"quantity":[{"type":"integer","description":"Number of units of this line in the cart. Layers rounds fractional values down to a whole number. Missing values, non-numeric values, and values below `1` count as `1` . Layers uses it to calculate the cart subtotal for Free Shipping Picks ."}]}}],"description":"Products currently in the customer’s cart. Used to surface complementary products and influence relevance scoring."}],"freeShippingThreshold":[{"type":"number","description":"The cart subtotal at which the shopper qualifies for free shipping, in the request currency’s major units (e.g. `75.00` for $75), not cents. Layers ignores values that aren’t a number greater than `0` . Required for Free Shipping Picks blocks."}],"productsViewed":[{"type":"array","items":[{"type":"object","properties":{"id":[{"type":"string","description":"Product identifier. Accepts a numeric ID or a Shopify GID. Also accepted as `productId` ."}],"at":[{"type":"integer","description":"Timestamp of the view in Unix milliseconds. Views without `at` still count but skip recency weighting."}],"title":[{"type":"string","description":"Product title."}],"type":[{"type":"string","description":"Product type or category."}],"variantId":[{"type":"string","description":"Variant identifier, if the shopper viewed a specific variant."}],"options":[{"type":"object","properties":{},"description":"Product variant options (e.g., `{\"Size\": \"11\", \"Color\": \"Red\"}` )."}]}}],"description":"Products the shopper has viewed during the current session. Layers uses these as short-lived personalization signals, with recent views weighted more heavily. Only the 20 most recent views are used. The Storefront Pixel populates this automatically; send it manually only for headless integrations. See Recently viewed products ."}],"productsPurchased":[{"type":"array","items":[{"type":"object","properties":{"title":[{"type":"string","description":"Product title. Each entry needs at least a `productId` , `variantId` , or non-empty `title` . Layers drops entries with none of these."}],"price":[{"type":"number","description":"Unit price in the request currency’s major units (e.g. `29.00` for $29), not cents, at time of purchase. Accepts a JSON number or a numeric string such as `\"29.00\"` ."}],"type":[{"type":"string","description":"Product type or category."}],"productId":[{"type":"string","description":"Product identifier. Accepts a numeric ID (e.g., `\"8234567890123\"` ) or a Shopify GID (e.g., `\"gid://shopify/Product/8234567890123\"` )."}],"variantId":[{"type":"string","description":"Product variant identifier."}],"options":[{"type":"object","properties":{},"description":"Product variant options (e.g., `{\"Size\": \"11\", \"Color\": \"Red\"}` )."}]}}],"description":"Products the customer has previously purchased. Informs recommendations and prevents over-promotion of owned items."}],"priorSearches":[{"type":"array","items":[{"type":"object","properties":{"searchQuery":[{"type":"string","description":"The search query text.","required":true}],"hadClick":[{"type":"boolean","description":"Whether the customer clicked on any results from this search."}],"hasResults":[{"type":"boolean","description":"Whether the search returned any results."}],"fromPage":[{"type":"string","description":"The page the search was started from (e.g., the referring page URL or page type). Layers accepts this field but doesn’t currently use it for ranking or rules."}]}}],"description":"Recent search queries and their outcomes. Helps understand customer intent and refine relevance models."}],"marketing":[{"type":"object","properties":{"source":[{"type":"string","description":"Marketing source (e.g., “google”, “facebook”)."}],"medium":[{"type":"string","description":"Marketing medium (e.g., “cpc”, “email”, “social”)."}],"campaign":[{"type":"string","description":"Campaign name."}],"term":[{"type":"string","description":"Search term or keyword."}],"content":[{"type":"string","description":"Ad or link variant, such as the value of `utm_content` ."}],"clickIds":[{"type":"object","properties":{},"description":"Click identifiers from the landing URL, keyed by parameter name (e.g., `fbclid` , `gclid` ). Layers derives the originating network from them as `marketing.clickSource` and discards the raw tokens. See Context data structure ."}]},"description":"UTM parameters and marketing campaign information for attribution tracking."}],"experiments":[{"type":"object","properties":{},"description":"A/B test assignments for the shopper, keyed by experiment ID with the assigned group ID as the value (e.g., `{\"exp_123\": \"group_b\"}` ). Used by the Experiment Group contextual condition. The Layers app embed fills this from Intelligems automatically; values your storefront sends for the same experiment take precedence. Entries whose value isn’t a string are dropped."}],"customer":[{"type":"object","properties":{"signedIn":[{"type":"boolean","description":"Whether the customer is currently authenticated."}],"returning":[{"type":"boolean","description":"Whether this is a returning customer."}],"numberOfOrders":[{"type":"integer","description":"Total number of orders placed."}],"averageOrderValue":[{"type":"number","description":"Average order value in store currency."}],"daysBetweenOrders":[{"type":"integer","description":"Average days between orders."}],"daysSinceLastOrder":[{"type":"integer","description":"Days since the most recent order."}],"daysSinceOldestOrder":[{"type":"integer","description":"Days since the first order."}],"totalSpent":[{"type":"number","description":"Total amount spent in store currency."}],"tags":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Shopify customer tags on the shopper’s profile (e.g., `[\"vip\", \"wholesale\"]` ). Collected by the Storefront Pixel for signed-in customers; `null` for guests."}],"segments":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Shopify customer segment IDs the shopper belongs to. Server-resolved: Layers populates this from the signed-in `identity.customerId` on every request and ignores any value you send. `null` for guests and customers with no segment memberships. Available as `context.customer.segments` in contextual conditions ."}]},"description":"Aggregated customer behavior and purchase patterns for personalization."}],"market":[{"type":"string","description":"Explicitly set the Shopify Market for this request. Must be provided inside `context` ; it is not a top-level request body parameter. Used for market-specific product availability filtering and contextual pricing. Accepts a two-letter country code (e.g., `\"US\"` , `\"CA\"` ), a numeric Shopify Market ID (e.g., `\"12345\"` ), or a Shopify Market GID (e.g., `\"gid://shopify/Market/12345\"` ). When not provided, the market is automatically resolved from `context.geo.country` (or the shopper’s detected country for client-side requests). If no matching market is found, the store’s primary market is used as the fallback. When you send a two-letter country code that belongs to the resolved market, Layers also prices for that country, ahead of the shopper’s detected location. See Market resolution . Behavior depends on the store’s market application mode (set under Settings > Search \u0026 Discovery > Search Behavior , in the Markets card): Restrict to market catalog — Products are filtered to only those available in the resolved market, and market-specific pricing is applied Adjust pricing only — The full catalog remains visible, but variant prices are swapped to market-specific values where available Ignore markets (default) — Market resolution is skipped entirely; base catalog and base pricing are used for all shoppers"}],"session":[{"type":"object","properties":{"returning":[{"type":"boolean","description":"Whether the current session belongs to a returning visitor. Layers derives this from the storefront’s session cookie when not provided."}]},"description":"Session-level signals about the current visit."}],"locale":[{"type":"string","description":"Storefront locale code (e.g., `\"en\"` , `\"fr\"` , `\"pt-br\"` ). Case-insensitive; Layers normalizes to lowercase."}],"currency":[{"type":"string","description":"ISO 4217 currency code (e.g., `\"USD\"` , `\"EUR\"` ). Case-insensitive; Layers normalizes to uppercase. When Layers can resolve a currency from the shopper’s market or pricing context, the server-resolved value takes precedence."}],"b2bCompany":[{"type":"string","description":"Shopify B2B company location identifier. When `identity.companyLocationId` is provided, Layers resolves the company location server-side and the server value takes precedence."}],"shoppingChannel":[{"type":"string","description":"The shopping channel the customer is browsing from. Used for channel-specific merchandising, sorting, and analytics segmentation. Automatically detected from request headers when not provided (e.g., mobile app requests via Tapcart, Fuego, or Mobiloud Canvas are detected as `\"app\"` ). Accepted values: `\"web\"` — Standard web browser (default) `\"app\"` — Mobile app (e.g., Tapcart, Fuego, Mobiloud Canvas)"}],"custom":[{"type":"object","properties":{},"description":"Custom contextual data specific to your implementation. Structure is flexible and can contain any key-value pairs relevant to your use case."}]},"description":"Contextual information about the customer’s session, behavior, and environment. Automatically collected by the Storefront Pixel; must be manually provided for headless integrations. See Contextual Information for implementation guidance."}],"sort_order_code":[{"type":"string","description":"Code of the sort order to apply. Use `\"relevance\"` for the default relevance-based ranking, or any custom sort order code configured in your store. Retrieve available sort order codes from the Sort Orders API ."}],"forceHideOutOfStock":[{"type":"boolean","description":"When set to `true` , products with no available variants are excluded from results regardless of the store-level out-of-stock visibility setting. If your store’s inventory location scope is narrowed, the same location rules apply. This is useful when a specific search integration or page requires strict in-stock filtering even though the store default allows out-of-stock products to appear."}],"responseOptions":[{"type":"object","properties":{"mediaPreloads":[{"type":"object","properties":{"enabled":[{"type":"boolean","description":"Set to `false` to skip the `Link` header for this request. Useful for server-rendered pages that do not benefit from preload hints, or when you want to reduce response header size. Cannot enable preloads if they are disabled at the store level."}],"srcsetSizes":[{"type":"array","items":[{"type":"integer"}],"description":"Custom responsive image widths (in pixels) to emit in `imagesrcset` . Each value must be an integer between `1` and `10000` . Overrides the store-level srcset configuration for this request only. When omitted, the store configuration or platform defaults are used."}],"sizes":[{"type":"string","description":"Media query string emitted as the `imagesizes` attribute in the preload `Link` header (for example `(max-width: 600px) 100vw, 50vw` ). Tells the browser which srcset width to pick per viewport. Overrides the store-level sizes value for this request only. When omitted or empty, the store configuration is used. Each comma-separated entry may carry a media condition, including the last entry. See the accepted format for details. The API rejects invalid values with a validation error."}]},"description":"Controls the `Link: rel=\\\"preload\\\"` directives generated for product images in this response. See Early hints for background."}]},"description":"Per-request overrides for response behavior. Currently controls image preload hints emitted in the `Link` response header. You can disable preloads or narrow the srcset to the breakpoints your storefront uses. You cannot enable preloads when the store has them disabled. Example:"}]}}],"examples":{"example":{"value":{"attributes":["\u003cstring>"],"search_id":"\u003cstring>","filter_group":{},"pagination":{"page":123,"limit":123},"facets":["\u003cstring>"],"retrieveFacetCount":true,"includeFacetRanges":true,"enrichFacetMetaobjects":true,"discountEntitlements":[{"entitled":{"all":true,"products":["\u003cstring>"],"variants":[{}],"collections":["\u003cstring>"],"conditions":{}},"discount":{"type":"\u003cstring>","value":123}}],"defaultSelectedOptions":[{"optionCode":"\u003cstring>","value":"\u003cstring>"}],"identity":{"deviceId":"\u003cstring>","sessionId":"\u003cstring>","customerId":"\u003cstring>","companyLocationId":"\u003cstring>"},"context":{"geo":{"country":"\u003cstring>","province":"\u003cstring>","city":"\u003cstring>"},"productsInCart":[{"title":"\u003cstring>","price":123,"type":"\u003cstring>","productId":"\u003cstring>","variantId":"\u003cstring>","options":{},"quantity":123}],"freeShippingThreshold":123,"productsViewed":[{"id":"\u003cstring>","at":123,"title":"\u003cstring>","type":"\u003cstring>","variantId":"\u003cstring>","options":{}}],"productsPurchased":[{"title":"\u003cstring>","price":123,"type":"\u003cstring>","productId":"\u003cstring>","variantId":"\u003cstring>","options":{}}],"priorSearches":[{"searchQuery":"\u003cstring>","hadClick":true,"hasResults":true,"fromPage":"\u003cstring>"}],"marketing":{"source":"\u003cstring>","medium":"\u003cstring>","campaign":"\u003cstring>","term":"\u003cstring>","content":"\u003cstring>","clickIds":{}},"experiments":{},"customer":{"signedIn":true,"returning":true,"numberOfOrders":123,"averageOrderValue":123,"daysBetweenOrders":123,"daysSinceLastOrder":123,"daysSinceOldestOrder":123,"totalSpent":123,"tags":[{}],"segments":[{}]},"market":"\u003cstring>","session":{"returning":true},"locale":"\u003cstring>","currency":"\u003cstring>","b2bCompany":"\u003cstring>","shoppingChannel":"\u003cstring>","custom":{}},"sort_order_code":"\u003cstring>","forceHideOutOfStock":true,"responseOptions":{"mediaPreloads":{"enabled":true,"srcsetSizes":[123],"sizes":"\u003cstring>"}}}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"results":[{"type":"object","properties":{"id":[{"type":"number","description":"The unique identifier of the product."}],"title":[{"type":"string","description":"The title of the product."}],"body_html":[{"type":"string","description":"The HTML content describing the product."}],"vendor":[{"type":"string","description":"The vendor of the product."}],"product_type":[{"type":"string","description":"The type of the product."}],"created_at":[{"type":"number","description":"The timestamp when the product was created."}],"handle":[{"type":"string","description":"The handle of the product."}],"updated_at":[{"type":"number","description":"The timestamp when the product was updated."}],"published_at":[{"type":"number","description":"The timestamp when the product was published."}],"tags":[{"type":"object","properties":{},"description":"The tags associated with the product."}],"combined_listing_parent_product_id":[{"type":"number","description":"The parent product id if a child in a Combined Listing."}],"combined_listing_role":[{"type":"string","description":"The role of the product if part of a Combined Listing."}],"images":[{"type":"object","properties":{"alt":[{"type":"string","description":"The alt text of the image."}],"src":[{"type":"string","description":"The src of the image."}],"width":[{"type":"number","description":"The width of the image."}],"height":[{"type":"number","description":"The height of the image."}],"variant_ids":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"The variant IDs associated with the image."}]},"description":"The images of the product."}],"metafields":[{"type":"object","properties":{},"description":"The metafields of the product."}],"calculated":[{"type":"object","properties":{},"description":"The computed attributes of the product. Only includes attributes with non-null, non-empty values. Attributes that evaluate to null or an empty string are omitted."}],"category":[{"type":"object","properties":{"name":[{"type":"string","description":"The name of the category leaf."}],"full_name":[{"type":"string","description":"The full name of the category."}],"id":[{"type":"string","description":"The ID of the category."}],"is_leaf":[{"type":"boolean","description":"Is the category a leaf category."}],"is_root":[{"type":"boolean","description":"Is the category a root category."}]},"description":"The Shopify Product Taxonomy Category of the product."}],"first_or_matched_variant":[{"type":"object","properties":{"id":[{"type":"number","description":"The ID of the variant."}],"title":[{"type":"string","description":"The title of the variant."}],"available":[{"type":"boolean","description":"The availability of the variant."}],"sku":[{"type":"number","description":"The sku of the variant."}],"price":[{"type":"string","description":"The price of the variant."}],"compare_at_price":[{"type":"string","description":"The compare at price of the variant."}],"metafields":[{"type":"object","properties":{},"description":"The metafields of the variant."}],"selected_options":[{"type":"object","properties":{"name":[{"type":"string","description":"The name of the option."}],"value":[{"type":"string","description":"The value of the option."}],"option_value":[{"type":"object","properties":{},"description":"The linked metafield of the option."}]},"description":"The selected options of the variant."}],"position":[{"type":"number","description":"The position of the variant in the product’s variant list."}],"inventory_quantity":[{"type":"number","description":"Total inventory quantity across the locations in the store’s inventory location scope , which is all locations by default. Only included when the store has the Expose Variant Inventory setting enabled."}],"inventory_policy":[{"type":"string","description":"Inventory policy for the variant: `DENY` (stop selling when out of stock) or `CONTINUE` (allow overselling). Only included when the store has the Expose Variant Inventory setting enabled."}],"inventory_levels":[{"type":"object","properties":{},"description":"Object mapping location IDs to available inventory quantities (e.g., `{\"1001\": 5, \"1002\": 10}` ). Returns empty object `{}` when no inventory data exists. Only included when the store has the Expose Variant Inventory setting enabled."}],"featured_media":[{"type":"object","properties":{"mediaContentType":[{"type":"string","description":"The type of media."}],"alt":[{"type":"string","description":"The alt text of the image."}],"src":[{"type":"string","description":"The src of the image."}],"width":[{"type":"number","description":"The width of the image."}],"height":[{"type":"number","description":"The height of the image."}]},"description":"The featured media of the product."}]},"description":"The first available variant (depending on OOS settings) or the variant matched with a filter or search query."}],"featured_media":[{"type":"object","properties":{"mediaContentType":[{"type":"string","description":"The type of media."}],"alt":[{"type":"string","description":"The alt text of the image."}],"src":[{"type":"string","description":"The src of the image."}],"width":[{"type":"number","description":"The width of the image."}],"height":[{"type":"number","description":"The height of the image."}]},"description":"The featured media of the product."}],"available":[{"type":"boolean","description":"The availability of the product."}],"price_range":[{"type":"object","properties":{"from":[{"type":"number","description":"The starting price of the product."}],"to":[{"type":"number","description":"The ending price of the product."}]},"description":"The price range of the product."}]}}],"totalResults":[{"type":"number","description":"The total number of results that passed relevance filtering for this request, across all pages. It does not depend on `pagination.limit` , `pagination.page` , or which `facets` you request. When variant breakouts are enabled, this reflects the count of tiles (both product and variant tiles) rather than just products. See Why result totals can differ ."}],"page":[{"type":"number","description":"The current page number."}],"totalPages":[{"type":"number","description":"The total number of pages. Calculated based on tile count when variant breakouts are enabled."}],"attributionToken":[{"type":"string","description":"A unique request identifier (ULID) for this API call. Use this token to correlate search requests with analytics events via the Beacon API , and to match requests to entries in the Search Inspector ."}],"facetRanges":[{"type":"object","properties":{},"description":"If `includeFacetRanges` is `true` then an object with keys of the facet attribute code and value is an object with min/max."}],"facets":[{"type":"object","properties":{},"description":"If `retrieveFacetCount` is `true` then an object with keys and values of the specified attributes. When variant breakouts are enabled, facet counts reflect tile counts rather than product counts. Empty values and literal `\"null\"` strings are automatically excluded from facet results."}],"facetDisplay":[{"type":"object","properties":{},"description":"Returned when at least one requested facet has display data to hydrate. Keys are facet attribute codes; values map each facet value to a display object. Metaobject-reference facets require `enrichFacetMetaobjects: true` and map each handle to the metaobject’s `display_name` and `fields` . Entries also carry a `swatch` object when the metaobject defines a color or image field. Handles with no matching cached metaobject are omitted here and remain as plain values in `facets` . See Metaobjects and reference metafields for the normalized field shape and the Facets API response for the `swatch` shape. For `variants.pickup_locations` , each entry maps a Shopify location id to the location’s `id` , `name` , `address` , `instructions` , `pickupTime` , and (when the filter is a `geoRadius` ) `distance` and `distanceUnit` . Pickup entries are returned whenever pickup facets are requested, regardless of `enrichFacetMetaobjects` . See Local pickup filtering ."}],"_meta":[{"type":"object","properties":{"appliedSearchRules":[{"type":"object","properties":{},"description":"The IDs of request transforms whose targeting conditions matched this request. Returns an empty array when no request transforms matched. Use this to verify which request transforms are evaluating against a given search request."}],"appliedSearchRuleActions":[{"type":"object","properties":{"ruleId":[{"type":"string","description":"The ID of the request transform that owns the action."}],"type":[{"type":"string","description":"The action type, for example `add_filter_group` or `override_sort_order` ."}],"changed":[{"type":"boolean","description":"`true` when the action modified the request. `false` when the action was a no-op, for example a `replace_query` action on a request with no query or an `override_sort_order` action matching the already-active sort order."}],"error":[{"type":"string","description":"Only present when the action could not run. `\"unsupported_action_type\"` indicates a stored action type the engine cannot execute. The action is skipped and the rest of the request proceeds normally."}]},"description":"One entry per action executed by a matched request transform, in execution order. Use `changed` to tell whether an action actually modified the request. A matched rule can appear in `appliedSearchRules` while all of its actions report `changed: false` . See Debugging with `_meta` ."}],"redirect":[{"type":"object","properties":{"url":[{"type":"string","description":"The redirect URL to navigate to. This URL is determined by semantic matching of the search query against configured redirect terms."}]},"description":"Semantic redirect information. Only present when a semantic match is found for a text search that keeps regular redirect behavior. When a redirect is returned, the `results` array is empty. A supported collection destination can instead be served inline when Inline Collection Redirects is enabled; see `collection` below."}],"collection":[{"type":"object","properties":{"id":[{"type":"object","properties":{},"description":"The collection identifier."}],"handle":[{"type":"string","description":"The collection handle."}],"title":[{"type":"string","description":"The collection title."}],"sort_order_code":[{"type":"string","description":"The sort order that served the collection results."}]},"description":"Collection browse metadata returned when Inline Collection Redirects is enabled and an eligible collection landing page is served inside the search response. Collection links with tags, filters, a chosen sort, or a pagination override keep regular redirect behavior; locale prefixes and tracking-only query parameters do not disqualify a link. The response keeps the original search query, normal facets, and pagination. `redirect` is not returned for this inline response."}],"variantBreakouts":[{"type":"object","properties":{"id":[{"type":"string","description":"The unique identifier of the variant breakout configuration."}],"name":[{"type":"string","description":"The display name of the variant breakout configuration (e.g., “Gemstone Breakout”, “Color Breakout”)."}],"optionCode":[{"type":"string","description":"The product option code that determines which variants are broken out (e.g., “Stone”, “Color”). Each product is broken out by the first matching option code from the array."}]},"description":"Array of variant breakout configurations applied to search. Only present when one or more variant breakouts are active for search requests. Multiple breakouts with different option codes can work simultaneously."}],"mediaPreloads":[{"type":"object","properties":{"srcsetSizes":[{"type":"array","items":[{"type":"integer"}],"description":"The responsive image widths (in pixels) used in the `imagesrcset` of the `Link` header. Reflects the request override when provided, otherwise the store-level configuration or platform defaults."}]},"description":"Echoes the image preload configuration used to build the `Link` response header for this request. Only present when image preloads are emitted. Use this to confirm which srcset breakpoints were applied, especially when overriding them via `responseOptions.mediaPreloads` ."}],"discountEntitlements":[{"type":"object","properties":{"entitled":[{"type":"object","properties":{},"description":"The entitlement criteria that qualified products for the discount. Contains any of `all` , `products` , `variants` , `collections` , or `conditions` . See the entitlement criteria reference."}],"discount":[{"type":"object","properties":{"type":[{"type":"string","description":"`\"PERCENTAGE\"` or `\"FIXED_AMOUNT\"` ."}],"value":[{"type":"number","description":"The discount value. Percent off for `PERCENTAGE` , currency amount for `FIXED_AMOUNT` ."}]},"description":"The discount Layers applied."}]},"description":"Echoes the discount entitlements applied to this request. Only present when the request included `discountEntitlements` (either directly or via a matched request transform ). Use this to render discount badges or labels on the storefront without re-deriving which entitlements matched. Each entry mirrors the entitlement shape sent in the request."}],"search_lane":[{"type":"string","description":"Only present when Layers is temporarily serving degraded results. The only value is `\"prefix_only\"` , meaning Layers matched results using keyword and prefix matching only, without semantic ranking, query expansion, or intent detection. The response stays well formed, so no client changes are required. Use this field to tell a keyword-only fallback response apart from a normal semantic one when reviewing analytics or debugging relevance."}]}}],"_workflow":[{"type":"object","properties":{"type":[{"type":"string","description":"The processing step type. Possible values: `\"query-replacement\"` — The original query was replaced (e.g., by a spelling correction or request transform). The `payload` contains the corrected query string. `\"query-expansion\"` — Additional related queries were generated to broaden the search. The `payload` is an array of expanded query strings. `\"query-interpretation\"` — The engine analyzed the query to extract intent signals such as spelling corrections, detected language, and classification. The `payload` contains the interpretation details. `\"intent-modifiers\"` — AI-powered intent modifiers adjusted the query based on detected shopping intent. The `payload` contains the modifier actions that were applied. `\"ranking-rules\"` — One or more ranking rules matched and influenced result ordering. The `payload` lists the applied rules. `\"semantic-redirect\"` — A semantic redirect matched the query. The `payload` contains the redirect URL. `\"rule-applied\"` — A merchandising rule was applied (browse requests). The `payload` contains the rule identifier."}],"payload":[{"type":"object","properties":{},"description":"The data associated with this processing step. The structure varies by `type` ; see the `type` values listed for `_workflow` ."}]},"description":"An ordered trace of processing steps the engine performed to produce results for this request. Each entry represents a stage in the search pipeline, recorded in the order it was executed. Use this field to understand how Layers interpreted and transformed your query, which rules and boosts were applied, and why results appear in a particular order. This field is useful for debugging search behavior in development and is also surfaced in the Search Inspector panel."}],"__typename":[{"type":"string","description":"Identifies the type of tile in the results: `\"Product\"` - A standard product tile `\"Variant\"` - An individual variant tile from a product with a configured breakout option"}],"product_id":[{"type":"number","description":"The parent product ID. Use this to link back to the full product or group variants from the same product."}],"variant_id":[{"type":"number","description":"The specific variant ID. For variant tiles, this matches the `id` field."}]}}],"examples":{"example":{"value":{"results":{"id":123,"title":"\u003cstring>","body_html":"\u003cstring>","vendor":"\u003cstring>","product_type":"\u003cstring>","created_at":123,"handle":"\u003cstring>","updated_at":123,"published_at":123,"tags":{},"combined_listing_parent_product_id":123,"combined_listing_role":"\u003cstring>","images":{"alt":"\u003cstring>","src":"\u003cstring>","width":123,"height":123,"variant_ids":[{}]},"metafields":{},"calculated":{},"category":{"name":"\u003cstring>","full_name":"\u003cstring>","id":"\u003cstring>","is_leaf":true,"is_root":true},"first_or_matched_variant":{"id":123,"title":"\u003cstring>","available":true,"sku":123,"price":"\u003cstring>","compare_at_price":"\u003cstring>","metafields":{},"selected_options":{"name":"\u003cstring>","value":"\u003cstring>","option_value":{}},"position":123,"inventory_quantity":123,"inventory_policy":"\u003cstring>","inventory_levels":{},"featured_media":{"mediaContentType":"\u003cstring>","alt":"\u003cstring>","src":"\u003cstring>","width":123,"height":123}},"featured_media":{"mediaContentType":"\u003cstring>","alt":"\u003cstring>","src":"\u003cstring>","width":123,"height":123},"available":true,"price_range":{"from":123,"to":123}},"totalResults":123,"page":123,"totalPages":123,"attributionToken":"\u003cstring>","facetRanges":{},"facets":{},"facetDisplay":{},"_meta":{"appliedSearchRules":{},"appliedSearchRuleActions":{"ruleId":"\u003cstring>","type":"\u003cstring>","changed":true,"error":"\u003cstring>"},"redirect":{"url":"\u003cstring>"},"collection":{"id":{},"handle":"\u003cstring>","title":"\u003cstring>","sort_order_code":"\u003cstring>"},"variantBreakouts":{"id":"\u003cstring>","name":"\u003cstring>","optionCode":"\u003cstring>"},"mediaPreloads":{"srcsetSizes":[123]},"discountEntitlements":{"entitled":{},"discount":{"type":"\u003cstring>","value":123}},"search_lane":"\u003cstring>"},"_workflow":{"type":"\u003cstring>","payload":{}},"__typename":"\u003cstring>","product_id":123,"variant_id":123}}}}}},"deprecated":false}},"jsLinks":["/_mintlify/custom/protoninc/d2da920448b9ce07/track.js"],"subdomain":"protoninc","siteName":"Layers","title":"Text Search: Execute Search - Layers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T21:47:50.620Z","originalFileLocation":"api-reference/search.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Layers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Text Search: Execute Search - Layers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Layers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.uselayers.com/api-reference/search\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://protoninc.mintlify.app/_mintlify/api/og/v2?division=Text+Search\u0026amp;title=Text+Search%3A+Execute+Search\u0026amp;description=Text+Search+API+endpoint+to+run+semantic+product+searches+with+typo+tolerance%2C+query+understanding%2C+faceting%2C+and+personalization+across+your+catalog.\u0026amp;theme=a10a6113a77cea89cec87611\u0026amp;signature=77dc7c3a5b3aeacac495ce2766c4b895b55d2d1d70b7cfa16abe5f3772aad20b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Text Search: Execute Search - Layers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://protoninc.mintlify.app/_mintlify/api/og/v2?division=Text+Search\u0026amp;title=Text+Search%3A+Execute+Search\u0026amp;description=Text+Search+API+endpoint+to+run+semantic+product+searches+with+typo+tolerance%2C+query+understanding%2C+faceting%2C+and+personalization+across+your+catalog.\u0026amp;theme=a10a6113a77cea89cec87611\u0026amp;signature=77dc7c3a5b3aeacac495ce2766c4b895b55d2d1d70b7cfa16abe5f3772aad20b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Layers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#607FFD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.uselayers.com/api-reference/search\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/search.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.uselayers.com/#organization\",\"name\":\"Layers\",\"url\":\"https://docs.uselayers.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/protoninc/PNs-gxGUVcdBDEEC/logo.svg?fit=max\u0026auto=format\u0026n=PNs-gxGUVcdBDEEC\u0026q=85\u0026s=989e3194cb32f07e7018b8b7186b9007\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.uselayers.com#website\",\"name\":\"Layers\",\"url\":\"https://docs.uselayers.com\",\"publisher\":{\"@id\":\"https://docs.uselayers.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.uselayers.com/api-reference/search#webpage\",\"url\":\"https://docs.uselayers.com/api-reference/search\",\"name\":\"Text Search: Execute Search\",\"description\":\"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.\",\"dateModified\":\"2026-10-22T21:47:50.620Z\",\"isPartOf\":{\"@id\":\"https://docs.uselayers.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.uselayers.com/api-reference/search#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.uselayers.com/api-reference/search#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Product Search\",\"item\":\"https://docs.uselayers.com/api-reference/search-prepare\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Text Search\",\"item\":\"https://docs.uselayers.com/api-reference/search-prepare\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Text Search: Execute Search\",\"item\":\"https://docs.uselayers.com/api-reference/search\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.uselayers.com/api-reference/search#apireference\",\"headline\":\"Text Search: Execute Search\",\"name\":\"Text Search: Execute Search\",\"description\":\"Text Search API endpoint to run semantic product searches with typo tolerance, query understanding, faceting, and personalization across your catalog.\",\"url\":\"https://docs.uselayers.com/api-reference/search\",\"mainEntityOfPage\":{\"@id\":\"https://docs.uselayers.com/api-reference/search#webpage\"},\"dateModified\":\"2026-10-22T21:47:50.620Z\",\"publisher\":{\"@id\":\"https://docs.uselayers.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.uselayers.com#website\"}}]}\u003c/script>","siteName":"Layers","nav":{"global":null,"anchors":[{"anchor":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"anchor":"Help Center","icon":"map","pages":[{"title":"Help Center","href":"/help/onboarding/install"}]},{"anchor":"Developers","icon":"code","pages":[{"title":"Developers","href":"/developers/overview"}]},{"anchor":"API Reference","icon":"rectangle-terminal","tabs":[{"tab":"Storefront API","groups":[{"group":"Browse","pages":[{"api":"POST /browse/{collection_handle}","title":"Browse API: Browse Collection Page","sidebarTitle":"Collection Page","href":"/api-reference/browse"}]},{"group":"Product Search","pages":[{"group":"Text Search","pages":[{"api":"POST /search/{searchQuery}/prepare","title":"Text Search: Prepare Search","sidebarTitle":"Prepare Search","description":"Prepare Search API endpoint that starts a search asynchronously so personalization and ranking can run in the background during a redirect or page load.","href":"/api-reference/search-prepare"},{"api":"POST /search/{searchQuery}/execute","title":"Text Search: Execute Search","sidebarTitle":"Execute Search","href":"/api-reference/search"},{"api":"POST /search/feedback","title":"Text Search: Submit Feedback","sidebarTitle":"Submit Feedback","description":"Search Feedback API endpoint to submit qualitative shopper feedback (thumbs up/down, free-form text, and per-product ratings) for a specific search.","href":"/api-reference/search-feedback"}]},{"group":"Image Search","pages":[{"api":"POST /images/upload","title":"Image Search: Upload Image","sidebarTitle":"Upload Image","href":"/api-reference/upload-image"},{"api":"POST /search/image","title":"Image Search: Execute Search","sidebarTitle":"Execute Search","href":"/api-reference/search-image"}]},{"group":"Autocomplete","pages":[{"api":"GET /search/complete?query={query}","title":"Autocomplete: Get Suggestions","sidebarTitle":"Get Suggestions","href":"/api-reference/predict"}]},{"api":"POST /search/product/{searchProductId}","title":"Search API: Similar Products","sidebarTitle":"Similar Products","href":"/api-reference/similar-products"}]},{"group":"Content Search","pages":[{"api":"POST /search/content/{searchQuery}/execute","title":"Content Search: Execute Search","sidebarTitle":"Execute Search","href":"/api-reference/search-content"}]},{"group":"Blocks","pages":[{"api":"POST /blocks/{blockId}/products","title":"Blocks API: Get Block Products","sidebarTitle":"Block Products","href":"/api-reference/blocks"}]},{"group":"Facets","pages":[{"api":"POST /{collection_handle}/facets","title":"Facets API: Get Collection Facets","sidebarTitle":"Collection Facets","href":"/api-reference/facets"}]},{"group":"Utilities","pages":[{"api":"GET /sort-orders","title":"Sort Orders API: Get Available Sort Orders","sidebarTitle":"Sort Orders","href":"/api-reference/sort-orders"}]}]},{"tab":"Tracking API","pages":[{"title":"Tracking API","href":"/tracking-api/overview"}]}]},{"anchor":"Integrations","icon":"plug","href":"https://www.uselayers.com/integrations?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site"}]},"title":"Text Search: Execute Search - Layers","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js"]}