Skip to main content
Returns composed menus for the authenticated merchant. Pass scope query parameters to narrow results to a selling context. Each composed menu is keyed by 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 in data. 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.
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:
Each product in a composed menu includes catalog fields plus context-specific pricing and availability:Each availability object:Each bundled_items entry:
Example product
Each category in a composed menu:Each entry in items:Each availability object:
Example category
Each modifier group in a composed menu:
Example modifier group
Each variant group:Each entry in variants:
Example variant group
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 the id 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.
Use external IDs (fulfillment_id, store_id, channel_id, brand_id) for cross-system mapping. Use *_uid fields when referencing Fire spark resources in other API calls.

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.

Error responses