fulfillment_id + store_id + channel_id + brand_id + menu.id — the same dimensions as Upsert menus.
This endpoint does not filter by schedule. It returns every ACTIVE menu that matches the resolved scope, regardless of the current time. Use Get menu when you need the customer-facing menu for the current order time.
Requires an access token with the
menus:read scope. See
Token to obtain a token.Query parameters
Omitting
fulfillment_id, store_id, channel_id, or brand_id does not return menus from every store, channel, or brand. Each resolves to the wildcard scope stored as __ANY__, matching Upsert menus. Use menu_id when you need to narrow further within that scope.
Request
Response
The response wraps an array of menu objects indata. Each menu is scoped to one store, channel, and fulfillment combination and includes the composed catalog structure and weekly schedule. All matching menus are returned, including those outside their active schedule window.
Menu object
schedules
schedules
An array of schedule entries, or
null when there is no schedule restriction. When present, the array must contain exactly 7 entries — one per weekday from monday through sunday — with no duplicate days and no overlapping periods on the same day.Each entry:Each period:
products
products
Each product in a composed menu includes catalog fields plus context-specific pricing and availability:
Each
availability object:Each
bundled_items entry:Example product
categories
categories
Each category in a composed menu:
Each entry in
items:Each
availability object:Example category
modifier_groups
modifier_groups
Each modifier group in a composed menu:
Example modifier group
variant_groups
variant_groups
Each variant group:
Each entry in
variants:Example variant group
pricing
pricing
Product pricing in a composed menu:
Each object in
modifiers configures one modifier group referenced in modifier_group_ids. It accepts the same pricing fields as the parent product, plus modifier-specific fields:Mapping menus to your POS
Match theid field to the menu identifier in your POS or RMS. Use fulfillment_id, store_id, channel_id, brand_id, and menu_id query parameters together to read the menu for a specific selling context.
Rate limits
GET and PUT /api/integrations/v1/menus share a limit of 30 requests per 10 seconds per merchant, keyed from your access token’s merchant_id. Send one request at a time per merchant — wait for each response before starting the next. Responses include X-RateLimit-Limit and X-RateLimit-Reset. On 429, also read X-RateLimit-Remaining and Retry-After. See Upsert menus — Rate limits.