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

# Get product

> Return a single catalog item by its ID or slug.

## Request

```http theme={null}
GET /products/69fb494e51280f9f65d059ae
x-shop-id: {{shopId}}
```

<Info>
  Standard product catalogs accept either the MongoDB product ID or the generated slug in the `id` path segment. Food and service catalogs currently resolve by MongoDB item ID.
</Info>

## Headers

| Header      | Type   | Description                |
| ----------- | ------ | -------------------------- |
| `x-shop-id` | string | Identify the shop context. |

## Path parameters

| Parameter | Type   | Description         |
| --------- | ------ | ------------------- |
| `id`      | string | Product ID or slug. |

<Note>
  Restaurant storefronts return `catalogType: "food"` / `itemType: "food"`, and business storefronts return `catalogType: "service"` / `itemType: "service"` on the item payload. Service items include `addons` and `video`.
</Note>

## Successful response

```json theme={null}
{
    "status": 200,
    "success": true,
    "message": "Food found",
    "data": {
        "_id": "68e5bb463a1fc56a8ac150c0",
        "shop": {
            "_id": "68b8f52575da81b332af29f1",
            "name": "Sample Kitchen",
            "currency": {
                "_id": "68c54dd440e9beff3260c2b2",
                "name": "Nigerian Naira",
                "symbol": "₦",
                "code": "NGN",
                "id": "68c54dd440e9beff3260c2b2"
            },
            "logo": "https://cdn.salesive.com/logos/shop.webp",
            "id": "68b8f52575da81b332af29f1"
        },
        "category": {
            "_id": "69fb494ddf63302ed89ba11d",
            "name": "Pizza",
            "id": "69fb494ddf63302ed89ba11d"
        },
        "createdAt": "2026-05-06T13:59:42.799Z",
        "description": "<p>Stone-baked pizza with basil and tomato sauce</p>",
        "featured": false,
        "images": [
            "https://cdn.salesive.com/foods/margherita.webp"
        ],
        "name": "Margherita Pizza",
        "price": 8500,
        "promoPrice": 7500,
        "updatedAt": "2026-05-06T14:44:04.903Z",
        "video": null,
        "available": true,
        "addons": [
            {
                "_id": "68e5bb463a1fc56a8ac150d1",
                "name": "Extra Cheese",
                "description": "A richer mozzarella finish baked on top.",
                "price": 1500,
                "maxQuantity": 3,
                "image": null,
                "available": true
            }
        ],
        "id": "68e5bb463a1fc56a8ac150c0",
        "inWishlist": false,
        "itemType": "food",
        "catalogType": "food"
    }
}
```

## Error response

```json theme={null}
{
    "status": 404,
    "success": false,
    "message": "Food not found",
    "data": {}
}
```


## OpenAPI

````yaml GET /products/{id}
openapi: 3.1.0
info:
  title: Salesive Store API
  description: >-
    REST interface for querying products, categories, and merchandising banners
    exposed by Salesive storefronts.
  version: 1.0.0
servers:
  - description: Production
    url: https://store.salesive.com/api/v1
security:
  - BearerAuth: []
    ShopIdHeader: []
paths:
  /products/{id}:
    get:
      summary: Get product
      description: >-
        Retrieve details for a single catalog item by identifier or slug.
        Standard product catalogs accept slug lookups; food (restaurant) and
        service (business) storefronts currently resolve by item ID and return
        the matching `catalogType`/`itemType` (`food` or `service`).
      parameters:
        - $ref: '#/components/parameters/XShopIdHeader'
        - name: id
          in: path
          required: true
          description: Product's MongoDB identifier or slug.
          schema:
            type: string
      responses:
        '200':
          description: Product detail response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '404':
          description: Product not found.
components:
  parameters:
    XShopIdHeader:
      name: x-shop-id
      in: header
      description: >-
        Optional identifier that scopes responses to a specific storefront when
        the referer cannot be inferred.
      required: false
      schema:
        type: string
  schemas:
    Product:
      type: object
      required:
        - id
        - name
        - price
      properties:
        id:
          type: string
          description: Unique product identifier.
        itemType:
          type: string
          enum:
            - product
            - food
            - service
          description: Catalog item type.
        catalogType:
          type: string
          enum:
            - product
            - food
            - service
          description: Catalog response type for the current storefront.
        name:
          type: string
          description: Display name of the product.
        description:
          type: string
          description: Rich description of the product.
        price:
          type: number
          format: float
          description: Unit price for the product.
        currency:
          type: string
          description: ISO currency code for the product price.
        category:
          type: string
          description: Identifier of the category the product belongs to.
        status:
          type: string
          description: Derived status such as active or archived.
        images:
          type: array
          items:
            type: string
            format: uri
          description: Optional list of image URLs for the product.
        addons:
          type: array
          items:
            $ref: '#/components/schemas/FoodAddon'
          description: Available add-ons for food catalog items.
        variants:
          type: array
          items:
            type: object
            properties:
              sku:
                type: string
              options:
                type: object
                additionalProperties:
                  type: string
              stock:
                type: integer
                minimum: 0
          description: Optional list of variant definitions for the product.
    FoodAddon:
      type: object
      required:
        - name
        - price
        - maxQuantity
        - available
      properties:
        _id:
          type: string
        name:
          type: string
        description:
          type: string
          description: >-
            Optional helper text shown in the UI and returned by add-on
            endpoints.
        price:
          type: number
        maxQuantity:
          type: integer
          minimum: 1
        image:
          type:
            - string
            - 'null'
          format: uri
        available:
          type: boolean
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT issued by the Salesive Store API for authenticated shoppers.
    ShopIdHeader:
      type: apiKey
      in: header
      name: x-shop-id
      description: >-
        Optional storefront identifier sent as a header to scope responses to a
        specific shop. Try It requests remember this value once provided.

````