POST /catalogs/products/hydrate

Fetch full product details by IDs.

Used by frontend to get complete product data (images, prices, etc.) from minimal context (just productId). Requires experience JWT authentication.

Security: Only returns products from catalogs authorized for this experience. This prevents cross-catalog data exposure via user-supplied IDs.

Args: request: List of product IDs to hydrate (max 50)

Returns: Full product details for products found in authorized catalogs

application/json

Body Required

  • product_ids array[string] Required

    Product IDs to fetch (max 50)

    At least 1 but not more than 50 elements.

Responses

  • 200 application/json

    Successful Response

    Hide response attribute Show response attribute object
    • products array[object] Required

      Product from catalog API.

      Hide products attributes Show products attributes object
      • id string Required
      • externalId string Required

        Partner's original SKU/ID

      • catalog object Required

        Catalog reference embedded in product responses.

        Hide catalog attributes Show catalog attributes object
        • id string Required
        • slug string Required
        • name string | null
      • name string Required
      • brand string | null
      • description string | null
      • price string Required
      • originalPrice string | null
      • currency string

        Default value is USD.

      • category string | null
      • color string | null
      • material string | null
      • sizes array[string]
      • images array[object]

        Product image with alt text.

        Hide images attributes Show images attributes object
        • url string Required
        • alt string | null
      • imageUrl string | null
      • thumbnailUrl string | null
      • linkUrl string | null
      • inStock boolean

        Default value is true.

      • stockQuantity integer | null
  • 422 application/json

    Validation Error

    Hide response attribute Show response attribute object
    • detail array[object]
      Hide detail attributes Show detail attributes object
      • loc array[string | integer] Required
      • msg string Required
      • type string Required
POST /catalogs/products/hydrate
curl \
 --request POST 'http://api.example.com/catalogs/products/hydrate' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '{"product_ids":["string"]}'
Request examples
{
  "product_ids": [
    "string"
  ]
}
Response examples (200)
{
  "products": [
    {
      "id": "string",
      "externalId": "string",
      "catalog": {
        "id": "string",
        "slug": "string",
        "name": "string"
      },
      "name": "string",
      "brand": "string",
      "description": "string",
      "price": "string",
      "originalPrice": "string",
      "currency": "USD",
      "category": "string",
      "color": "string",
      "material": "string",
      "sizes": [
        "string"
      ],
      "images": [
        {
          "url": "string",
          "alt": "string"
        }
      ],
      "imageUrl": "string",
      "thumbnailUrl": "string",
      "linkUrl": "string",
      "inStock": true,
      "stockQuantity": 42
    }
  ]
}
Response examples (422)
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}