GET /v1/product-families to browse reviewed groups and GET /v1/product-families/{family_id} to retrieve every current member with its vintage, age statement, package size, price, status, inventory retrieval time, and availability summary. Use family_id, family_ids, and relationship_type on GET /v1/products for product-level filtering. The current family list and product counts also remain published in /v1/meta.
Family detail also includes observed_history, a request-time summary over retained SKU-level events for the current reviewed members. GET /v1/product-families/{family_id}/changes returns those underlying events newest first. Nektir does not persist a second family-event stream: every event remains attached to its original product and store, and the family scope is resolved at the pinned publication revision.
Text search can opt into collapse=family. Nektir returns one representative product for every matching reviewed family, marks it with search_group, and leaves ungrouped products as individual results. The representative’s price and availability are not family-wide aggregates; load the family detail before presenting member choices.
Families do not merge inventory, prices, or availability. Each SKU keeps its own source observations and lifecycle. Brand, producer, corporate owner, and product family are separate concepts; Nektir does not infer corporate ownership from a consumer brand.
Family membership can grow over time as new SKUs arrive. Consumers should key a family by its stable id, not infer membership from names, and continue treating each returned product as the unit of price and availability. Product detail responses include the same rich family_members records so a product page does not need an additional family request.
See Wine and whiskey family journeys for complete integration flows.