Get Store Product
Retrieve a single store product by its ID, including all images, variation options, and product variations.
Endpointโ
GET /v1/store-products/{id}
Authenticationโ
Requires an API key with the store:read scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The store product ID |
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. Includes a waxing iron, scraper, nylon brush, and three temperature-rated wax blocks.",
"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": [
{
"id": 1,
"url": "https://example.com/images/wax-kit-1.jpg",
"is_default": true,
"position": 0
},
{
"id": 2,
"url": "https://example.com/images/wax-kit-2.jpg",
"is_default": false,
"position": 1
}
],
"variation_options": [
{
"id": 1,
"name": "Size",
"values": ["Small", "Medium", "Large"]
},
{
"id": 2,
"name": "Wax Type",
"values": ["Cold", "Warm", "Universal"]
}
],
"product_variations": [
{
"id": 1,
"name": "Small / Cold",
"sku": "WAX-001-SM-C",
"price_override": null,
"stock_quantity": 10,
"option_values": [
{
"option_id": 1,
"value": "Small"
},
{
"option_id": 2,
"value": "Cold"
}
]
},
{
"id": 2,
"name": "Large / Universal",
"sku": "WAX-001-LG-U",
"price_override": 55.00,
"stock_quantity": 15,
"option_values": [
{
"option_id": 1,
"value": "Large"
},
{
"option_id": 2,
"value": "Universal"
}
]
}
],
"content_blocks": {
"whats_included": null,
"does_not_include": null,
"itinerary": null,
"highlights": ["Waterproof zippers"],
"check_in_details": null,
"what_to_bring": null,
"restrictions": null,
"health_and_safety": null,
"cancellation_notes": "<p>Returns accepted within 14 days.</p>",
"custom_sections": null
},
"created_at": "2026-01-10T00:00:00+00:00",
"updated_at": "2026-02-01T14:30:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-13T12:00:00+00:00"
}
}
Response Fieldsโ
See List Store Products for base field descriptions. The detail endpoint additionally loads:
Imagesโ
| Field | Type | Description |
|---|---|---|
id | integer | Image identifier |
url | string | Full URL to the image |
is_default | boolean | Whether this is the primary product image |
position | integer | Display order (0 = first). Images are returned sorted by position |
Variation Optionsโ
Defines the available option types for this product (e.g., Size, Colour).
| Field | Type | Description |
|---|---|---|
id | integer | Variation option identifier |
name | string | Option name (e.g., "Size", "Colour") |
values | array | Available values for this option (e.g., ["Small", "Medium", "Large"]) |
Product Variationsโ
Each variation represents a specific combination of option values.
| Field | Type | Description |
|---|---|---|
id | integer | Variation identifier |
name | string | Auto-generated name from option values (e.g., "Large / Red") |
sku | string|null | Variation-specific SKU |
price_override | float|null | Override price (null uses base product price) |
stock_quantity | integer | Stock quantity for this variation |
option_values | array | The selected value for each variation option |
Option Values (nested in each variation)โ
| Field | Type | Description |
|---|---|---|
option_id | integer | References the variation option id |
value | string | The selected value (e.g., "Large") |
Content Blocksโ
The content_blocks object contains the eight supplier-authored sections rendered on the booking widget. The four prose fields (check_in_details, restrictions, health_and_safety, cancellation_notes) are allowlisted rich-text HTML. Shape is shared with products and experiences, except that store products have no custom sections โ custom_sections is always null here. See Content Blocks for the full field reference.
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 |
| 404 | resource_not_found | Store product does not exist |
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/store-products/1" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."