Batch update variants
Updates multiple existing variants in a single request (does not create new variants). Each entry in batch must include id to match an existing variant; a batch may mix variants of different products, as long as they all belong to the same seller. Up to 50 entries per request, with no repeated ids.
id is either the numeric variant ID or the SKU — the mode is decided by the first entry (numeric → all entries are matched by ID, otherwise all by SKU), so don’t mix both in the same batch. Entries that don’t match a variant of the seller (unknown ID/SKU, or a variant owned by another seller) are silently skipped: the response is still 201 and they simply don’t appear in valid_items/invalid_items.
Stock fields use available_units/total_units (units is deprecated but still accepted).
/variants/updatersAuthorizationBearer token (JWT) · headerrequiredshop_idstringShop ID or subdomain, used to resolve the seller that owns the variants (any shop of that seller gives the same result). May also be sent in the JSON body. Optional when the token grants access to exactly one shop; otherwise required — omitting it returns 422.
application/jsonbatchobject[]requiredShow propertiesHide properties
objectidstringrequiredExisting variant ID or SKU
titlestringAccepted (unlike the standalone update endpoint, which ignores it)
skustringregular_priceintegersale_priceintegerstatusstringvisiblehiddenstocksobject[]Show propertiesHide properties
objectlocation_idintegeravailable_unitsintegertotal_unitsintegerBatch processed. Check invalid_items — a 201 does not mean every entry was applied.
_embeddedobjectShow propertiesHide properties
valid_itemsobject[]Variants that were updated
Show propertiesHide properties
object_linksHalLinksidintegernamestringinvalid_itemsobject[]Variants that matched but failed validation; each embeds its errors
Show propertiesHide properties
object_linksHalLinksidintegernamestringbatch is empty, exceeds 50 entries or repeats an id; or shop_id was omitted and could not be resolved from the token.