Skip to main content
GET
List menus
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
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 10 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

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

fulfillment_id
string

External fulfillment identifier. When set, filters to that fulfillment type.

Required string length: 1 - 64
Pattern: ^[a-zA-Z0-9_-]+$
store_id
string

External store identifier. Omit or pass _ for merchant-wide default (null store_id).

Required string length: 1 - 64
Pattern: ^[a-zA-Z0-9_-]+$
channel_id
string

External channel identifier. Omit or pass _ for all channels (null channel_id).

Required string length: 1 - 64
Pattern: ^[a-zA-Z0-9_-]+$
brand_id
string

External brand identifier. Alphanumeric characters, _, and - only. 1–64 characters.

Required string length: 1 - 64
Pattern: ^[a-zA-Z0-9_-]+$
menu_id
string

External menu identifier. When set, filters to one composed menu.

Required string length: 1 - 64
Pattern: ^[a-zA-Z0-9_-]+$

Response

200 - application/json

Ok

data
object[]