Skip to main content

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

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

FieldTypeDescription
idintegerImage identifier
urlstringFull URL to the image
is_defaultbooleanWhether this is the primary product image
positionintegerDisplay order (0 = first). Images are returned sorted by position

Variation Optionsโ€‹

Defines the available option types for this product (e.g., Size, Colour).

FieldTypeDescription
idintegerVariation option identifier
namestringOption name (e.g., "Size", "Colour")
valuesarrayAvailable values for this option (e.g., ["Small", "Medium", "Large"])

Product Variationsโ€‹

Each variation represents a specific combination of option values.

FieldTypeDescription
idintegerVariation identifier
namestringAuto-generated name from option values (e.g., "Large / Red")
skustring|nullVariation-specific SKU
price_overridefloat|nullOverride price (null uses base product price)
stock_quantityintegerStock quantity for this variation
option_valuesarrayThe selected value for each variation option

Option Values (nested in each variation)โ€‹

FieldTypeDescription
option_idintegerReferences the variation option id
valuestringThe 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โ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks store:read scope
404resource_not_foundStore product does not exist

Example Requestโ€‹

curl -X GET "https://app.equipdash.com/api/v1/store-products/1" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."