Skip to main content

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โ€‹

ParameterTypeLocationDescription
idintegerpathThe store product ID

Request Bodyโ€‹

All fields are optional. Only included fields will be updated.

FieldTypeDescription
namestringProduct name (max 255 characters)
skustringStock keeping unit (max 100 characters)
brief_descriptionstringShort description (max 500 characters)
long_descriptionstringFull description
category_idintegernull
category_idsinteger[]Replace the product's store categories with this set (primary first). The first id becomes the primary. Takes precedence over category_id.
pricenumberSelling price, 0 to 99999999.99
compare_at_pricenumber|nullOriginal/RRP price
statusstringactive or archived
track_inventorybooleanEnable/disable stock tracking
inventory_trackingstringTracking mode: group or item
stock_quantityintegerSet stock quantity directly (min 0)
weightnumber|nullProduct weight
weight_unitstringWeight unit: kg, lb, g, or oz
dimensionsstring|nullProduct dimensions (max 255 characters)
max_per_bookinginteger|nullThe most one customer can buy in one order, 1 to 9999. null for no limit
is_standalonebooleanAvailable as a standalone product
staff_onlybooleanStaff only: sold in POS, the app, the API and by Dash, never on the booking page
who_can_buystringeveryone, staff_only or off (add-on only). Sets is_standalone and staff_only together. off leaves staff_only as it was
suggest_in_cartbooleanfalse 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โ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks store:write scope
404resource_not_foundStore product does not exist
422validation_errorInvalid request body
422store_product_errorBusiness 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
}'