Update Store Product
Update an existing store product. Only include the fields you want to change.
Endpointโ
PUT /v1/store-products/{id}
Authenticationโ
Requires an API key with the store:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The store product ID |
Request Bodyโ
All fields are optional. Only included fields will be updated.
| Field | Type | Description |
|---|---|---|
name | string | Product name (max 255 characters) |
sku | string | Stock keeping unit (max 100 characters) |
brief_description | string | Short description (max 500 characters) |
long_description | string | Full description |
category_id | integer | null |
category_ids | integer[] | Replace the product's store categories with this set (primary first). The first id becomes the primary. Takes precedence over category_id. |
price | number | Selling price, 0 to 99999999.99 |
compare_at_price | number|null | Original/RRP price |
status | string | active or archived |
track_inventory | boolean | Enable/disable stock tracking |
inventory_tracking | string | Tracking mode: group or item |
stock_quantity | integer | Set stock quantity directly (min 0) |
weight | number|null | Product weight |
weight_unit | string | Weight unit: kg, lb, g, or oz |
dimensions | string|null | Product dimensions (max 255 characters) |
max_per_booking | integer|null | The most one customer can buy in one order, 1 to 9999. null for no limit |
is_standalone | boolean | Available as a standalone product |
staff_only | boolean | Staff only: sold in POS, the app, the API and by Dash, never on the booking page |
who_can_buy | string | everyone, staff_only or off (add-on only). Sets is_standalone and staff_only together. off leaves staff_only as it was |
suggest_in_cart | boolean | false leaves this product out of the suggestions shown in the cart, on the confirmation page and in the confirmation email. true lets it be suggested again. |
tip
To adjust stock quantity incrementally (e.g., add 10 units), use the Adjust Inventory endpoint instead.
caution
Changing inventory_tracking from item to group is not allowed if the product has existing inventory items. Delete the inventory items first before switching tracking mode.
Responseโ
Success (200 OK)โ
{
"data": {
"id": 1,
"name": "Ski Wax Kit - Updated",
"sku": "WAX-001",
"brief_description": "Complete ski wax kit with iron and brush",
"long_description": "...",
"category": {
"id": 3,
"name": "Accessories"
},
"price": 49.99,
"compare_at_price": 59.99,
"status": "active",
"track_inventory": true,
"inventory_tracking": "group",
"stock_quantity": 25,
"weight": 1.2,
"weight_unit": "kg",
"dimensions": "30x20x10 cm",
"variations": false,
"max_per_booking": 5,
"is_standalone": true,
"staff_only": false,
"who_can_buy": "everyone",
"suggest_in_cart": true,
"images": [],
"variation_options": [],
"product_variations": [],
"created_at": "2026-01-10T00:00:00+00:00",
"updated_at": "2026-02-13T12:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-13T12:00:00+00:00"
}
}
Errorsโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 401 | invalid_api_key | Invalid API key |
| 403 | insufficient_scope | API key lacks store:write scope |
| 404 | resource_not_found | Store product does not exist |
| 422 | validation_error | Invalid request body |
| 422 | store_product_error | Business logic error |
Example Requestโ
curl -X PUT "https://app.equipdash.com/api/v1/store-products/1" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"name": "Ski Wax Kit - Updated",
"price": 49.99
}'