Update warehouse availabilities
brandCode, warehouseCode and the sku values are placeholders — use a real brand from brands, one of your warehouse codes, and real SKUs.
Use warehouseAvailabilitiesBulkUpdate to set the on-hand quantities of the products of one brand in one warehouse: productAvailabilities lists the sku / onHandQuantity pairs to update. The mutation accepts a WarehouseAvailabilitiesBulkUpdateInput object — its reference lists all the available fields. It returns only the availability records that changed; unchanged rows are omitted from the response.
The mutation is an upsert: a sku that does not exist yet for the brand is created (product and availability record) and returned like any other row, so that a single call keeps the catalog and the stock in sync. Double-check the SKUs you send: a typo silently creates a new product instead of failing.
mutation warehouseAvailabilitiesBulkUpdate {
warehouseAvailabilitiesBulkUpdate(
input: {
brandCode: "BRAND_CODE"
warehouseCode: "MIL"
productAvailabilities: [
{
sku: "SKU-1"
onHandQuantity: 12
}
{
sku: "SKU-2"
onHandQuantity: 5
}
]
}
) {
id
availableQuantity
onHandQuantity
onHandQuantityUpdatedAt
reservedQuantity
product {
id
sku
brand {
id
code
}
}
warehouse {
id
codes
}
}
}{
"data": {
"warehouseAvailabilitiesBulkUpdate": [
{
"id": "8001",
"availableQuantity": 11,
"onHandQuantity": 12,
"onHandQuantityUpdatedAt": "2026-07-22T09:30:00Z",
"reservedQuantity": 1,
"product": {
"id": "501",
"sku": "SKU-1",
"brand": {
"id": "31",
"code": "BRAND_CODE"
}
},
"warehouse": {
"id": "12",
"codes": ["MIL"]
}
}
]
},
"extensions": {
"queryComplexity": 15,
"bucketBalance": 9985,
"bucketRestoreRate": 100
}
}An unknown brandCode or warehouseCode is rejected with the error code NOT_FOUND (see Errors); an unknown sku is not an error, see the caution above.