---
title: "Get merchant"
method: GET
path: "/merchants/{merchant_id}"
tags: ["merchants"]
---

# Get merchant

`GET /merchants/{merchant_id}`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/merchants/{merchant_id}`
- Auth: none declared
- TypeScript: <https://skmtc.dev/palette-labs-inc/apis/local-protocol/docs/merchants/:merchant_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a merchant with its full denormalized catalog tree.

## Path parameters

- `merchant_id` string, required: Merchant identifier.

## Response `200`

The merchant.

- Merchant: Merchant catalog payload containing denormalized catalogs.
  - `id` string, required: Merchant identifier.
  - `name` string, required: Merchant name.
  - `timezone` string, required: IANA timezone for availability schedules.
  - `last_updated` string, date-time: RFC 3339 timestamp of the latest catalog update.
  - `catalogs` Catalog[], required: Catalogs available for the merchant.
    - `id` string, required: Catalog identifier.
    - `name` string, required: Catalog name.
    - `description` string: Catalog description.
    - `categories` CatalogCategory[], required: Ordered top-level categories included in this catalog. Nested categories live under each category's categories array.
      - `id` string, required: Category identifier.
      - `name` string, required: Category display name.
      - `description` string: Optional category description.
      - `categories` CatalogCategory[]: Ordered list of child categories for nested category trees.
      - `items` CatalogItem[], required: Ordered list of items in this category.
        - `id` string, required: Item identifier.
        - `name` string, required: Item name.
        - `description` string, required: Item description.
        - `price` Amount, required: Amount with explicit currency. Value is always in minor units (e.g., cents for USD).
          - `value` string, required: Value in minor currency units as an integer string (e.g., "1000" = $10.00 USD, or atomic units for EVM tokens). Use "0" for free items.
          - `currency` union, required: Currency descriptor (fiat or EVM token).
            - FiatCurrency: Fiat currency descriptor.
              - …
            - EvmCurrency: EVM token currency descriptor.
              - …
        - `media` Media[]: Item media (images, videos, 3D models).
          - `type` 'image' | 'video' | 'model_3d', required: Media type discriminator.
          - `url` string, uri, required: URL to the media resource.
          - `alt_text` string: Accessibility text describing the media.
          - `width` integer: Width in pixels (for images/video).
          - `height` integer: Height in pixels (for images/video).
        - `modifier_groups` ModifierGroup[]: Modifier groups available for this item.
          - `id` string, required: Modifier group identifier.
          - `name` string, required: Display name for the modifier group.
          - `description` string: Optional modifier group description.
          - `minimum_selections` integer: Minimum number of selections required from this group.
          - `maximum_selections` integer: Maximum number of selections allowed from this group.
          - `allow_quantities` boolean: Whether modifier options can be selected with quantities greater than 1.
          - `max_per_modifier` integer: Maximum quantity allowed per modifier option. Defaults to 1 (each modifier can be selected at most once).
          - `modifier_options` ModifierOption[], required: Ordered modifier options within this group. Order should be used for display.
            - `id` string, required: Modifier option identifier.
            - `modifier_item` ModifierItem, required: A purchasable modifier item that can be selected within a modifier group.
              - …
            - `child_modifier_groups` ModifierGroup[]: Nested modifier groups required after selecting this option.
            - `is_default` boolean: Whether this option is selected by default.
            - `metadata` object: Business-defined custom data extending the modifier option.
          - `type` string: Modifier group type classification.
          - `metadata` object: Business-defined custom data extending the modifier group.
        - `availability` Availability: Availability schedule for a catalog, category, or item.
          - `timezone` string: IANA timezone for the intervals. Defaults to the merchant timezone when omitted.
          - `intervals` Interval[], required: Availability intervals (weekly or date-specific).
            - `day` string: Day of week (e.g., Monday, Tuesday).
            - `date` string: Calendar date in YYYY-MM-DD.
            - `from_hour` integer, required: Start hour (0-23).
            - `from_minute` integer, required: Start minute (0-59).
            - `to_hour` integer, required: End hour (0-23).
            - `to_minute` integer, required: End minute (0-59).
        - `metadata` object: Business-defined custom data extending the item.
      - `availability` Availability: Availability schedule for a catalog, category, or item.
        - `timezone` string: IANA timezone for the intervals. Defaults to the merchant timezone when omitted.
        - `intervals` Interval[], required: Availability intervals (weekly or date-specific).
          - `day` string: Day of week (e.g., Monday, Tuesday).
          - `date` string: Calendar date in YYYY-MM-DD.
          - `from_hour` integer, required: Start hour (0-23).
          - `from_minute` integer, required: Start minute (0-59).
          - `to_hour` integer, required: End hour (0-23).
          - `to_minute` integer, required: End minute (0-59).
      - `metadata` object: Business-defined custom data extending the category.
    - `items` CatalogItem[]: Ordered items included in this catalog that are not assigned to a category. Consumers that require category membership should place these items into a synthetic category.
      - `id` string, required: Item identifier.
      - `name` string, required: Item name.
      - `description` string, required: Item description.
      - `price` Amount, required: Amount with explicit currency. Value is always in minor units (e.g., cents for USD).
        - `value` string, required: Value in minor currency units as an integer string (e.g., "1000" = $10.00 USD, or atomic units for EVM tokens). Use "0" for free items.
        - `currency` union, required: Currency descriptor (fiat or EVM token).
          - FiatCurrency: Fiat currency descriptor.
            - `symbol` string, required: ISO 4217 currency code (e.g., 'USD', 'EUR', 'JPY').
          - EvmCurrency: EVM token currency descriptor.
            - `chain_id` integer, required: EVM chain id.
            - `address` string, required: Token contract address.
            - `decimals` integer, required: Decimal places for the token.
      - `media` Media[]: Item media (images, videos, 3D models).
        - `type` 'image' | 'video' | 'model_3d', required: Media type discriminator.
        - `url` string, uri, required: URL to the media resource.
        - `alt_text` string: Accessibility text describing the media.
        - `width` integer: Width in pixels (for images/video).
        - `height` integer: Height in pixels (for images/video).
      - `modifier_groups` ModifierGroup[]: Modifier groups available for this item.
        - `id` string, required: Modifier group identifier.
        - `name` string, required: Display name for the modifier group.
        - `description` string: Optional modifier group description.
        - `minimum_selections` integer: Minimum number of selections required from this group.
        - `maximum_selections` integer: Maximum number of selections allowed from this group.
        - `allow_quantities` boolean: Whether modifier options can be selected with quantities greater than 1.
        - `max_per_modifier` integer: Maximum quantity allowed per modifier option. Defaults to 1 (each modifier can be selected at most once).
        - `modifier_options` ModifierOption[], required: Ordered modifier options within this group. Order should be used for display.
          - `id` string, required: Modifier option identifier.
          - `modifier_item` ModifierItem, required: A purchasable modifier item that can be selected within a modifier group.
            - `id` string, required: Modifier item identifier.
            - `name` string, required: Modifier item name.
            - `description` string: Optional modifier item description.
            - `price` object, required: Price for this modifier item.
              - …
            - `metadata` object: Business-defined custom data extending the modifier item.
          - `child_modifier_groups` ModifierGroup[]: Nested modifier groups required after selecting this option.
          - `is_default` boolean: Whether this option is selected by default.
          - `metadata` object: Business-defined custom data extending the modifier option.
        - `type` string: Modifier group type classification.
        - `metadata` object: Business-defined custom data extending the modifier group.
      - `availability` Availability: Availability schedule for a catalog, category, or item.
        - `timezone` string: IANA timezone for the intervals. Defaults to the merchant timezone when omitted.
        - `intervals` Interval[], required: Availability intervals (weekly or date-specific).
          - `day` string: Day of week (e.g., Monday, Tuesday).
          - `date` string: Calendar date in YYYY-MM-DD.
          - `from_hour` integer, required: Start hour (0-23).
          - `from_minute` integer, required: Start minute (0-59).
          - `to_hour` integer, required: End hour (0-23).
          - `to_minute` integer, required: End minute (0-59).
      - `metadata` object: Business-defined custom data extending the item.
    - `availability` Availability: Availability schedule for a catalog, category, or item.
      - `timezone` string: IANA timezone for the intervals. Defaults to the merchant timezone when omitted.
      - `intervals` Interval[], required: Availability intervals (weekly or date-specific).
        - `day` string: Day of week (e.g., Monday, Tuesday).
        - `date` string: Calendar date in YYYY-MM-DD.
        - `from_hour` integer, required: Start hour (0-23).
        - `from_minute` integer, required: Start minute (0-59).
        - `to_hour` integer, required: End hour (0-23).
        - `to_minute` integer, required: End minute (0-59).
    - `metadata` object: Business-defined custom data extending the catalog.
  - `metadata` object: Business-defined custom data extending the merchant.

## Other responses

- `404`: Merchant not found.

## Changes

- **2026-02-16** `c2c61c76b0d0`: 4 breaking, 14 info
  - the `catalogs/items/availability/intervals/items/date` response's property format changed from `date` to no format for status `200`
  - the `catalogs/items/categories/items/availability/intervals/items/date` response's property format changed from `date` to no format for status `200`
  - the `catalogs/items/categories/items/items/items/availability/intervals/items/date` response's property format changed from `date` to no format for status `200`
  - the `catalogs/items/items/items/availability/intervals/items/date` response's property format changed from `date` to no format for status `200`
  - …14 more

[Operation history](https://skmtc.dev/palette-labs-inc/apis/local-protocol/changes/merchants/:merchant_id/get.md)

---

[API](https://skmtc.dev/palette-labs-inc/apis/local-protocol.md) - [All operations](https://skmtc.dev/palette-labs-inc/apis/local-protocol/llms.txt) - [OpenAPI document](https://skmtc.dev/palette-labs-inc/apis/local-protocol/revisions/c2c61c76b0d0?raw)
