Creating Variant Families
Creating Variant Families
In the product family model, you create variants by creating a product family with classification set to VARIANT, then providing one or more products in that family.
This guide uses the {version} product family endpoints. The base URL for all requests is https://DOMAIN_PREFIX.retail.lightspeed.app/api/{version}/.
Every product in a family must have at least one product code. Codes are not generated automatically. If you do not already have codes to use, generate them first.
1. Generating product codes
Send a POST request to /products/generate_product_codes.
Each entry in codes requests a count of generated codes, with an optional prefix.
Request payload:
{
"codes": [{ "count": 2 }, { "prefix": "shirt", "count": 2 }]
}Response payload:
{
"data": [{ "codes": ["1001", "1002"] }, { "codes": ["shirt", "shirt1"] }]
}NOTE: A single request may generate up to 200 codes in total.
2. Creating a variant family
Send a POST request to /product_families.
For a variant family:
classificationmust beVARIANT.variant_attribute_idsmust contain one to three variant attribute IDs.- Each product in
productsmust providevariant_attributesvalues matching the family attributes. - Each product must have at least one code, either generated or custom.
Request payload:
{
"name": "T-Shirt",
"classification": "VARIANT",
"variant_attribute_ids": [
"069db350-8d41-11eb-f6a9-869155c00090",
"2f0ff40b-60ed-48c7-8e32-01d0c9d263ea"
],
"products": [
{
"variant_attributes": ["Red", "S"],
"codes": [{ "type": "CUSTOM", "code": "TSHIRT-RED-S" }]
},
{
"variant_attributes": ["Red", "M"],
"codes": [{ "type": "CUSTOM", "code": "TSHIRT-RED-M" }]
}
]
}Response payload:
{
"data": {
"product_family_id": "6f32baa8-9a5f-4697-964f-cb2ffa6dff1a",
"product_ids": [
"0e4066d7-7981-4900-b37c-627fd929ad59",
"cae9eebf-abfa-4c19-b3cd-c6e4c09c512e"
]
}
}3. Retrieving the created family
Creation returns IDs only. To retrieve the full representation, call:
GET /product_families/6f32baa8-9a5f-4697-964f-cb2ffa6dff1a
Anything at the top level of data is family-level. Anything inside products is product-level.
4. Adding more variants to an existing family
To add products to an existing variant family, send a POST request to /product_families/{productFamilyID}/products.
The payload is an array of product objects. Each new product must include variant_attributes and at least one product code.
NOTE: You can only add products to a
VARIANTfamily with this endpoint. Adding more products toSTANDARDorCOMPOSITEfamilies is not currently supported.
Request payload:
[
{
"variant_attributes": ["Blue", "S"],
"codes": [{ "type": "CUSTOM", "code": "TSHIRT-BLUE-S" }]
},
{
"variant_attributes": ["Blue", "M"],
"codes": [{ "type": "CUSTOM", "code": "TSHIRT-BLUE-M" }]
}
]Response payload:
{
"data": {
"product_ids": [
"3d7d399d-1d61-4e18-be08-3f51a586584c",
"a9e80b33-c580-4dc1-a7aa-62a6cc2141b0"
]
}
}Validation notes
- Variant families must include
variant_attribute_ids. - The number of
variant_attributesvalues per product must match the family's attributes. - Duplicate variant attribute combinations in the same family are rejected.
- Unknown fields are rejected.
- Product codes must be unique across the catalog.
- A family can have up to 200 products. If adding products would exceed this limit, the request is rejected.
