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",
      "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,
      "status": "ACTIVE"
    }
  ]
}
Returns menus the customer can browse for the current selling context. Filter by store, channel, and fulfillment to load the catalog that applies to the customer’s session.
Requires a Fire spark access token obtained through token exchange. The token scopes requests to the authenticated customer and merchant.

Query parameters

ParameterRequiredDescription
store_idYesExternal store identifier.
channel_idYesExternal channel identifier.
fulfillment_idYesExternal fulfillment identifier (for example delivery, pickup).

Request

curl "https://firespark.vercel.app/api/storefront/v1/menus?store_id=downtown&channel_id=app&fulfillment_id=delivery" \
  -H "Authorization: Bearer ACCESS_TOKEN"

Response

The response wraps an array of menu objects in data. Only ACTIVE menus are included. When schedules is null, the menu has no hour restriction. When set, the menu is included only during matching hours.
{
  "data": [
    {
      "id": "lunch-delivery",
      "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "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,
      "status": "ACTIVE"
    }
  ]
}
FieldTypeDescription
idstringExternal menu identifier.
uidstring (UUID)Fire spark internal identifier.
store_idstringExternal store identifier.
store_uidstring (UUID)Fire spark store identifier.
channel_idstringExternal channel identifier.
channel_uidstring (UUID)Fire spark channel identifier.
fulfillment_idstringExternal fulfillment identifier.
fulfillment_uidstring (UUID)Fire spark fulfillment identifier.
namestringDisplay name.
descriptionstringOptional menu description. null when omitted.
schedulesarray | nullWeekly hour maps. null when there is no schedule restriction.
productsarrayProducts in this menu. Use Get product for details.
categoriesarrayCategories in this menu. Use Get category for details.
modifier_groupsarrayModifier groups referenced by products in this menu.
cms_template_idstring (UUID)CMS template linked to this menu. null when no template is assigned.
cmsobjectRead-only. Resolved CMS template when cms_template_id is set.
statusstringACTIVE or INACTIVE. Only ACTIVE menus are returned.

Error responses

StatusDescription
400Missing or invalid query parameters.
401Missing or invalid access token.
403Token does not have access to this merchant’s menus.
404No menu found for the given store, channel, and fulfillment.