GET https://api.fire.rest/api/v1/fire/external/stores/550e8400-e29b-41d4-a716-446655440000/menus
x-api-key: <your_api_key>
{
"success": true,
"data": {
"menus": [
{
"channel": "KIOSK",
"fulfillmentType": "DINE_IN",
"syncStatus": "SYNCED",
"generatedAt": "2026-09-28T10:00:00Z",
"syncedAt": "2026-09-28T10:00:04Z"
},
{
"channel": "KIOSK",
"fulfillmentType": "TAKEAWAY",
"syncStatus": "FAILED",
"generatedAt": "2026-09-28T10:00:00Z",
"syncedAt": null
}
]
}
}
{
"success": false,
"error": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
{
"success": false,
"error": "FORBIDDEN",
"message": "API key does not have required scope: menu:read"
}
{
"success": false,
"error": "NOT_FOUND",
"message": "Store not found"
}
API
List menus
List the store’s ternas (channel × fulfillment type) that have a generated menu, without the menu body.
GET
/
api
/
v1
/
fire
/
external
/
stores
/
{storeId}
/
menus
GET https://api.fire.rest/api/v1/fire/external/stores/550e8400-e29b-41d4-a716-446655440000/menus
x-api-key: <your_api_key>
{
"success": true,
"data": {
"menus": [
{
"channel": "KIOSK",
"fulfillmentType": "DINE_IN",
"syncStatus": "SYNCED",
"generatedAt": "2026-09-28T10:00:00Z",
"syncedAt": "2026-09-28T10:00:04Z"
},
{
"channel": "KIOSK",
"fulfillmentType": "TAKEAWAY",
"syncStatus": "FAILED",
"generatedAt": "2026-09-28T10:00:00Z",
"syncedAt": null
}
]
}
}
{
"success": false,
"error": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
{
"success": false,
"error": "FORBIDDEN",
"message": "API key does not have required scope: menu:read"
}
{
"success": false,
"error": "NOT_FOUND",
"message": "Store not found"
}
Coming soon. The design is closed but this endpoint is not implemented yet. This page
describes the agreed contract so integrators can plan against it ahead of release.
KIOSK / DINE_IN). The same product can price differently across
ternas of the same store, so there is no single “the store’s menu” to return. This endpoint lists
which ternas of a store currently have a generated menu; use Get menu
to read one.
Authentication
string
required
Your Fire API key with the
menu:read scope. The key must be vendor-scoped (account + vendor
binding) — keys without a vendorId are rejected with 403.Path parameters
string
required
Store UUID (
stores.id).Request
GET https://api.fire.rest/api/v1/fire/external/stores/550e8400-e29b-41d4-a716-446655440000/menus
x-api-key: <your_api_key>
Response
object[]
Show menu
Show menu
string
Sales channel code (e.g.
KIOSK).string
Fulfillment type code (e.g.
DINE_IN, TAKEAWAY).string
SYNCED | FAILED | PENDING — the last delivery attempt of this terna’s generated menu.string
ISO 8601 timestamp of the last menu generation for this terna.
string | null
ISO 8601 timestamp of the last successful delivery to the channel.
null if it never synced. See syncedAt semantics.{
"success": true,
"data": {
"menus": [
{
"channel": "KIOSK",
"fulfillmentType": "DINE_IN",
"syncStatus": "SYNCED",
"generatedAt": "2026-09-28T10:00:00Z",
"syncedAt": "2026-09-28T10:00:04Z"
},
{
"channel": "KIOSK",
"fulfillmentType": "TAKEAWAY",
"syncStatus": "FAILED",
"generatedAt": "2026-09-28T10:00:00Z",
"syncedAt": null
}
]
}
}
{
"success": false,
"error": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
{
"success": false,
"error": "FORBIDDEN",
"message": "API key does not have required scope: menu:read"
}
{
"success": false,
"error": "NOT_FOUND",
"message": "Store not found"
}
Notes
- Only ternas with a generated menu are listed (
generatedAtnot null) — including one whose last generation produced an empty send (see Empty send). That case still shows here, withsyncStatus: FAILED, so the problem is visible. - This listing never returns the menu body — it is built to skip the heavy payload column. Fetch a specific terna with Get menu.
channelandfulfillmentTypeare compared case-insensitively against what you send to Get menu — there is no separate id to look up.
Related
Get menu
Read a single terna’s menu, with its sync status.
Get store
Read a single store by id.

