Skip to main content
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.
The response wraps each SKU in the standard envelope. A read returns the SKU enriched: 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 the barcodes 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.