Skip to main content
GET
/
menus
List menus
curl --request GET \
  --url https://api.example.com/menus
{
  "data": [
    {
      "id": "lunch-delivery",
      "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "organization_id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
      "merchant_id": "c1d2e3f4-a5b6-7890-cdef-123456789abc",
      "store_id": "downtown",
      "store_uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "channel_id": "app",
      "channel_uid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "fulfillment_id": "delivery",
      "fulfillment_uid": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
      "name": "Lunch delivery menu",
      "description": "Weekday lunch items for app delivery",
      "schedules": [
        {
          "monday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "tuesday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "wednesday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "thursday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "friday": { "start_time": "11:00:00", "end_time": "15:00:00" }
        }
      ],
      "products": [],
      "categories": [],
      "modifier_groups": [],
      "cms_template_id": null,
      "cms": null,
      "overrides": [],
      "status": "ACTIVE"
    }
  ]
}
Returns all menus configured for the authenticated merchant. Use this endpoint to map Fire spark menus to catalog versions in your POS or RMS and to inspect how each menu is scoped to a store, channel, and fulfillment type.
Requires an access token with the menus:read scope. See Authorize to obtain a token.

Headers

HeaderRequiredDescription
x-brand-idNoFilter menus by brand. External brand identifier — alphanumeric characters, _, and - only. 1–64 characters. When omitted, all menus for the merchant are returned.

Request

curl "https://firespark.vercel.app/api/integrations/v1/menus" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "x-brand-id: 0001"

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, weekly schedule, and scheduled overrides.
{
  "data": [
    {
      "id": "lunch-delivery",
      "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "organization_id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
      "merchant_id": "c1d2e3f4-a5b6-7890-cdef-123456789abc",
      "store_id": "downtown",
      "store_uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "channel_id": "app",
      "channel_uid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "fulfillment_id": "delivery",
      "fulfillment_uid": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
      "name": "Lunch delivery menu",
      "description": "Weekday lunch items for app delivery",
      "schedules": [
        {
          "monday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "tuesday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "wednesday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "thursday": { "start_time": "11:00:00", "end_time": "15:00:00" },
          "friday": { "start_time": "11:00:00", "end_time": "15:00:00" }
        }
      ],
      "products": [],
      "categories": [],
      "modifier_groups": [],
      "cms_template_id": null,
      "cms": null,
      "overrides": [],
      "status": "ACTIVE"
    }
  ]
}
FieldTypeDescription
idstringExternal menu identifier. Alphanumeric characters, _, and - only. 1–64 characters. Unique per merchant.
uidstring (UUID)Fire spark internal identifier.
organization_idstring (UUID)Organization that owns the merchant.
merchant_idstring (UUID)Merchant the menu belongs to.
store_idstringExternal store identifier this menu applies to.
store_uidstring (UUID)Fire spark store identifier.
channel_idstringExternal channel identifier this menu applies to.
channel_uidstring (UUID)Fire spark channel identifier.
fulfillment_idstringExternal fulfillment identifier this menu applies to.
fulfillment_uidstring (UUID)Fire spark fulfillment identifier.
namestringDisplay name. 1–100 characters.
descriptionstringOptional menu description. Up to 500 characters. null when omitted.
schedulesarray | nullWeekly hour maps. null when there is no schedule restriction.
productsarrayProducts in this composed menu. Schema is evolving — see Update product.
categoriesarrayCategories in this composed menu. Schema is evolving.
modifier_groupsarrayModifier groups in this composed menu. Schema is evolving.
cms_template_idstring (UUID)CMS template linked to this menu. null when no template is assigned.
cmsobjectRead-only. null when cms_template_id is null. When set, the resolved CMS template for this menu.
overridesarrayScheduled menu changes.
statusstringACTIVE or INACTIVE.
An array of weekly hour maps, or null when there is no schedule restriction. Each map is keyed by day name (monday through sunday). Include only the days the menu is active. Each day:
FieldTypeDescription
start_timestringISO time (for example 11:00:00).
end_timestringISO time (for example 15:00:00).
Scheduled changes that take effect on a future date. Each override contains:
FieldTypeDescription
start_datestringISO 8601 datetime when the override activates.
changesobjectPartial menu configuration to apply. Includes name, description, schedules (null when there is no schedule restriction), products, categories, modifier_groups, and cms_template_id.

Mapping menus to your POS

Match the id field to the menu identifier in your POS or RMS. Use store_id, channel_id, and fulfillment_id together to identify the selling context this menu represents.
Use external IDs (store_id, channel_id, fulfillment_id) for cross-system mapping. Use *_uid fields when referencing Fire spark resources in other API calls.

Error responses

StatusDescription
401Missing or invalid access token.
403Token does not include the menus:read scope.