List Store Products
Retrieve a paginated list of store products.
Endpointโ
GET /v1/store-products
Authenticationโ
Requires an API key with the store:read scope.
Query Parametersโ
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 15 | Items per page (max 100) |
search | string | - | Search by name or SKU |
category_id | integer | - | Filter by store category ID |
status | string | - | Filter by status: active, archived |
is_standalone | boolean | - | Filter by standalone flag |
who_can_buy | string | - | Filter by everyone, staff_only or off. Replaces the standalone default |
track_inventory | boolean | - | Filter by inventory tracking |
sort | string | - | Sort field: id, name, sku, price, stock_quantity, created_at, status, sort_order |
direction | string | desc | Sort direction: asc or desc |
Default order
With no sort parameter, store products are returned in the supplier's manual display order โ the same order shown in the booking widget, POS, and app (category order, then product order within each category, as set on the Arrange order screen). Pass an explicit sort to override it.
Responseโ
Success (200 OK)โ
{
"data": [
{
"id": 1,
"name": "Ski Wax Kit",
"sku": "WAX-001",
"brief_description": "Complete ski wax kit with iron and brush",
"long_description": "Everything you need to wax your skis at home...",
"category": {
"id": 3,
"name": "Accessories"
},
"price": 45.00,
"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": null,
"variation_options": null,
"product_variations": null,
"created_at": "2026-01-10T00:00:00+00:00",
"updated_at": "2026-02-01T14:30:00+00:00"
}
],
"meta": {
"current_page": 1,
"per_page": 15,
"total": 12,
"total_pages": 1,
"request_id": "req_abc123",
"timestamp": "2026-02-13T12:00:00+00:00"
}
}
note
The images, variation_options, and product_variations fields are not loaded in the list endpoint for performance. Use the Get Store Product endpoint to retrieve the full product with all relations.
Response Fieldsโ
Store Productโ
| Field | Type | Description |
|---|---|---|
id | integer | Unique product identifier |
name | string | Product name |
sku | string|null | Stock keeping unit |
brief_description | string|null | Short description for listings |
long_description | string|null | Full description |
category | object|null | Store category (id, name) |
price | float | Selling price |
compare_at_price | float|null | Original/RRP price for discount display |
status | string | active or archived |
track_inventory | boolean | Whether stock quantity is tracked |
inventory_tracking | string | Tracking mode: group (total quantity) or item (individual items with identifiers) |
stock_quantity | integer | Current stock level |
weight | float|null | Product weight |
weight_unit | string|null | Weight unit: kg, lb, g, or oz |
dimensions | string|null | Product dimensions (free text, e.g., "30x20x10 cm") |
variations | boolean | Whether the product has variations enabled |
max_per_booking | integer|null | Maximum quantity per booking |
is_standalone | boolean | Available as a standalone store product |
staff_only | boolean | Sold by staff only (POS, the app, the API, Dash), never on the booking page |
who_can_buy | string | everyone, staff_only or off (add-on only) |
suggest_in_cart | boolean | false when the shop left this product out of cart suggestions. |
images | array|null | Product images (loaded on detail endpoint) |
variation_options | array|null | Variation option definitions (loaded on detail endpoint) |
product_variations | array|null | Product variations (loaded on detail endpoint) |
created_at | string | ISO 8601 datetime |
updated_at | string | ISO 8601 datetime |
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:read scope |
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/store-products?status=active&per_page=25" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."