Generate variant children for a variant parent product
Creates new product rows as children of the variant parent. Each variant names its own option combination explicitly; this is not a matrix expansion of the parent’s attributes.
-
attribute_idin each option must belong to the parent. -
Option combinations are deduped against the request and against existing children.
-
Capped at 200 children per product, all-or-nothing.
-
supply_priceis never accepted. -
Idempotent via
Idempotency-Key, with every created id replayed. -
Children are ordinary products afterwards, read, updated and deleted via
/products/{id}. -
409 CONFLICT: a duplicate option combination.
Requires scope: catalog:write
Authorizations
Section titled “Authorizations”Request Body
Section titled “Request Body”object
object
object
Examplegenerated
{ "variants": [ { "active": true, "name": "example", "options": [ { "attribute_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "value": "example" } ], "retail_price": 1, "sku": "example" } ]}Responses
Section titled “Responses”Generate variant children for a variant parent product
object
object
object
object
The retail price. Integer minor units (cents).
Live supplier links for this product. Never carries supply_price; use the admin UI or an export for cost data.
object
This supplier link’s own id, not the supplier’s id. Distinct from supplier_id below.
Whether this is the product’s primary supplier.
This retailer’s own code for the product at this supplier, if set.
The linked supplier’s id.
The supplier name as of this document.
Tags attached to this product, with names.
object
The tag’s own id, usable to reference it elsewhere.
The tag name as of this document.
Present on a variant parent product; empty on a variant child or an ordinary product.
object
The variant attribute’s id. A variant child’s variant_options reference it as attribute_id.
The attribute name, for example Size or Colour.
Display order among this product’s variant attributes.
object
Opaque delta-sync version. Increases with every change to this document: its own fields, and the addition, removal, or edit of a code, tag link, supplier link, variant option, variant attribute, or component, including when an attached tag or supplier is itself renamed. Use it to detect updates.
Examplegenerated
{ "data": [ { "active": true, "brand_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "category_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "codes": [ { "code": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "type": "example" } ], "components": [ { "product_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1 } ], "created_at": "2026-04-15T12:00:00Z", "description": "example", "dimension_unit": "example", "has_inventory": true, "has_variants": true, "height": 1, "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "image_thumb_url": "example", "image_url": "example", "is_composite": true, "is_gift_card": true, "length": 1, "loyalty_amount": 1, "name": "example", "purchase_account_code": "example", "retail_price": 1, "sales_account_code": "example", "sku": "example", "suppliers": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "is_primary": true, "supplier_code": "example", "supplier_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "supplier_name": "example" } ], "tags": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example" } ], "updated_at": "2026-04-15T12:00:00Z", "variant_attributes": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "position": 1 } ], "variant_options": [ { "attribute_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "attribute_name": "example", "value": "example" } ], "variant_parent_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "version": "example", "weight": 1, "weight_unit": "example", "width": 1 } ]}default
Section titled “default”An error response.
object
object
A machine-readable error code, e.g. VALIDATION_FAILED.
object
A plain-English sentence describing what went wrong.
Example
{ "error": { "code": "UNAUTHORIZED" }}