POST /api/shop/product/bulk-update sets the selling price of each product you list. It can also show or hide the product and mark it in or out of stock.
Authenticate with the API token as a Bearer header. See authentication and limits .
Request
Field Required Meaning productsYes A list with one entry per product products[].idOne of id or barcode The product's id in your shop products[].barcodeOne of id or barcode The product's barcode products[].priceYes The new selling price, a number products[].is_activeNo true shows the product to customers, false hides itproducts[].stock_statusNo in_stock or out_of_stock
{
"products": [
{ "id": 1042, "price": 120, "stock_status": "in_stock" },
{ "barcode": "6291041500213", "price": 42.5, "is_active": false }
]
}
price is required on every entry, even when you only want to change availability. Send the current price again.
When an entry has both id and barcode, both must match a product of your shop. The product found by barcode is the one updated.
Answer
{ "success": true, "data": [], "message": "Products updated successfully" }
Errors
Status Message Cause 403 "Unauthorized." No token, or the token is refused 403 "Only the shop owner, a manager or a product manager can update products." The token belongs to another role 402 "Webhooks & developer API is not included in your plan. Upgrade your plan (Plan & billing) to use it." See Plan and access 404 "Product not found with id: …" or "Product not found with barcode: …" That product is not in your shop 404 "Product not found with id or barcode for item at index: …" The entry has neither id nor barcode 422 A message per field A required field is missing or has the wrong type. Nothing is changed 429 — More than 500 requests in a minute
A missing product stops the call part-way
Products are saved one by one, in the order you send them. When one is not found, the call stops with a 404. The entries before it are already saved. The entries after it are not. Fix the entry and send the rest again.
What it does not do
It does not create products or change stock quantities, names or categories. Use the incoming API for those.