> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getscale.ng/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Product Details

Fetch complete product profile details for a single item by ID, including variant details, option choices (e.g. Size, Color), variant-specific pricing, image media list, and active inventory stock counts.

Use this endpoint to render detail pages, option selectors, image carousel lists, and dynamic stock warning banners when a shopper views a product detail page.

### Authorizations

<ParamField header="X-Shop-API-Key" type="string" required>
  Your Publishable Key (`pk_live_...` or `pk_test_...`) generated from the Developer settings in your dashboard.
</ParamField>

### Path Parameters

<ParamField path="shopId" type="string" required>
  The unique UUID of the shop.
</ParamField>

<ParamField path="productId" type="number" required>
  The unique ID of the product.
</ParamField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "status": "success",
    "data": {
      "shopProductId": 1,
      "productName": "Air Max Sneaker",
      "productSlug": "air-max-sneaker",
      "productDescription": "Running athletic shoes",
      "productPrice": 12000,
      "currencySymbol": "₦",
      "media": [
        {
          "mediaUrl": "https://cdn.getscale.ng/products/sneaker1.jpg",
          "mediaType": "image",
          "mediaIndex": 0
        }
      ],
      "variants": [
        {
          "variantId": 10,
          "variantPrice": 12500,
          "stockQuantity": 15,
          "options": [
            {
              "optionTypeName": "Color",
              "optionValueName": "Red"
            },
            {
              "optionTypeName": "Size",
              "optionValueName": "42"
            }
          ],
          "variantMedia": []
        }
      ]
    }
  }
  ```

  ```json 400 Bad Request theme={null}
  {
    "message": "FORM_VALIDATION_ERROR",
    "code": 400,
    "validationErrors": [
      {
        "path": [
          "shopId"
        ],
        "message": "Invalid uuid"
      }
    ]
  }
  ```
</ResponseExample>
