When to use this. A SKU is one unique colour/size combination of a style — the level at
which you assign barcodes, negotiate prices, and read resolved custom-field values. Use these
endpoints to create a style’s SKUs, replace their state in bulk, and look them up again.
SKUs require the Barcodes module and are a designer-only surface.
The workflow
SKUs hang off a style that already has its colourways and size range set up. The usual path is to create the SKUs for the colour/size combinations you sell, adjust their state in bulk as the range evolves, then read them back — each SKU comes back enriched with its nested colour and size, the style’s custom fields resolved to that coordinate, and the lowest applicable price rows.1
Create SKUs on a style
POST /api/styles/{styleId}/skus with an array of { number, colorId, sizeId, state }
objects — one colour/size combination each, created in a single all-or-nothing transaction
(capped at 200 per request).2
Replace SKU state in bulk
PUT /api/styles/{styleId}/skus with an array of { id, state } objects to activate or
deactivate SKUs together. state: "deleted" sets a SKU inactive — a SKU has no separate
deleted state.3
Look SKUs up
GET /api/styles/{styleId}/skus (filter by state, colorId, sizeId) for one style’s
SKUs, GET /api/styles/{styleId}/skus/{skuId} for a single one, or GET /api/skus to page
across every style in the organisation.Walkthrough
Create a SKU for a colour/size combination on a style, then read it back. The body is an array — one or many SKUs are created in a single all-or-nothing transaction.color
and size as nested objects, customFields resolved to that coordinate, prices at the lowest
applicable variant level, and properties flags such as barcodeAssigned.
Field reference
The fields that matter most when creating, updating, or reading a SKU:Roles & permissions
SKUs are a designer-only surface: supplier accounts receive 403. The caller’s organisation must have the Barcodes module enabled, and the user needs thebarcodes
permission — read level for the GETs, write level for POST/PUT. Without the module the
request is refused; without price access, prices comes back empty rather than failing.
When things go wrong
Errors use the standard envelope (status: "error", a code, and error.details[]). A style
that does not exist returns 404; a style in another organisation returns 403; an unknown
skuId under the style returns 404. Bulk POST/PUT failures use the bulk error envelope
with per-item [i].field paths. See Errors & responses for the full list of
codes and how to resolve them.
What to call next
Styles
Set up the style, its colourways, and size range before creating SKUs.
Size ranges
Manage the sizes a SKU’s
sizeId points at.Colours
Manage the colour library a SKU’s
colorId points at.Style prices
The full price rows a SKU’s
prices join back to: GET /api/styles/{styleId}/prices.