This endpoint returns the full product, with support for extended projections via ?extend=. This page also covers two related endpoints on a specific product: similar products via embeddings, and the variants/options summary.
Use it when you need to:
Display a product's full record in your application.
Bring in inventory per variant and location without an extra call (extend=inventory).
Suggest related products on a detail page.
Get only the variants/options structure of a product without pulling in the rest of its fields.
extend accepts a comma-separated list of additional fields, from a closed set: variants, options, description, bindings, metadata, inventory, dimensions, seo, all.
extend=inventory and extend=all attach real stock
When you include inventory (or all) in extend, the response attaches available inventory per variant and per location — a variant's stock does not live in the product document (it's resolved by a join against the separate inventory collection), so without this extend the stock field simply doesn't appear.
For the full product data model (all fields, price/cost/media/binding sub-shapes, and the known divergences between the real schema and the public TS type), see the product data model.
{ "code": "not-found", "message": "Product not found: CAM-ROJO-M" }
Permission required:products:read
Results use embeddings-based search with a minimum similarity threshold (minScore: 0.3) — products below that threshold don't appear, even if they belong to the same category. The 404 triggers when the internal error message contains the text "not found" (for example, when sourceSku doesn't exist).