Skip to main content

Create Store Product

Create a new store product.

Endpointโ€‹

POST /v1/store-products

Authenticationโ€‹

Requires an API key with the store:write scope.

Request Bodyโ€‹

FieldTypeRequiredDescription
namestringYesProduct name (max 255 characters)
skustringNoStock keeping unit (max 100 characters)
brief_descriptionstringNoShort description (max 500 characters)
long_descriptionstringNoFull description
category_idintegerNoPrimary store category ID. Use category_ids for multiple categories.
category_idsinteger[]NoPut the product in multiple store categories (primary first). The first id becomes the primary (also returned as category). Takes precedence over category_id.
pricenumberYesSelling price (min 0)
compare_at_pricenumberNoOriginal/RRP price (min 0)
statusstringNoactive or archived (default: draft)
track_inventorybooleanNoEnable stock tracking (default: false)
inventory_trackingstringNoTracking mode: group or item (default: group)
stock_quantityintegerNoInitial stock quantity (min 0)
weightnumberNoProduct weight (min 0)
weight_unitstringNoWeight unit: kg, lb, g, or oz
dimensionsstringNoProduct dimensions (max 255 characters)
max_per_bookinginteger|nullNoThe most one customer can buy in one order, 1 to 9999. null for no limit
is_standalonebooleanNoAvailable as a standalone product (default: true)
staff_onlybooleanNoStaff only: sold in POS, the app, the API and by Dash, never on the booking page (default: false)
who_can_buystringNoeveryone, staff_only or off (add-on only). Sets is_standalone and staff_only together

Responseโ€‹

Success (201 Created)โ€‹

{
"data": {
"id": 5,
"name": "Helmet Liner",
"sku": "HL-001",
"brief_description": "Replacement helmet liner",
"long_description": null,
"category": {
"id": 3,
"name": "Accessories"
},
"price": 12.99,
"compare_at_price": null,
"status": "active",
"track_inventory": true,
"inventory_tracking": "group",
"stock_quantity": 100,
"weight": 0.1,
"weight_unit": "kg",
"dimensions": null,
"variations": false,
"max_per_booking": 3,
"is_standalone": true,
"images": [],
"variation_options": [],
"product_variations": [],
"created_at": "2026-02-13T12: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
422validation_errorInvalid request body
422store_product_errorBusiness logic error (e.g., plan limit reached)

Example Requestโ€‹

curl -X POST "https://app.equipdash.com/api/v1/store-products" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"name": "Helmet Liner",
"sku": "HL-001",
"brief_description": "Replacement helmet liner",
"category_id": 3,
"price": 12.99,
"status": "active",
"track_inventory": true,
"inventory_tracking": "group",
"stock_quantity": 100,
"weight": 0.1,
"weight_unit": "kg",
"max_per_booking": 3,
"is_standalone": true,
"staff_only": false,
"who_can_buy": "everyone"
}'