Menus and availability
GET /v1/locations/{location_id}/menu returns the menu as your customers should see it: categories, items,
sizes (variants) and side options (modifier_groups), with menu prices in HTG minor units, tax included. Each
partner gets its own menu: a restaurant can hide items from a channel or from you.
- Initial load:
GET /menuandGET /availability. - Then:
menu.updated(withmenu_versionand the changed items) andavailability.changedwebhooks. - Fallbacks: re-read
GET /menuwithIf-None-Match(a304costs half a request), orGET /menu/changes?since_version=Nfor the delta.
// Menus: read once, then re-read cheaply with If-None-Match (304 when nothing changed).import { createBisket } from '@bisket-ai/partner-sdk';
export async function main(env: { apiKey: string; locationId: string }) { const bisket = createBisket({ apiKey: env.apiKey }); const params = { path: { location_id: env.locationId } }; const first = await bisket.GET('/v1/locations/{location_id}/menu', { params }); const etag = first.response.headers.get('ETag')!; const again = await bisket.GET('/v1/locations/{location_id}/menu', { params: { ...params, header: { 'If-None-Match': etag } } }); const sellable = first.data!.items.filter((i) => i.available).length; return { menuVersion: first.data!.menu_version, sellable, etag, notModified: again.response.status === 304 };}What is on the menu
Section titled “What is on the menu”An item appears when it is active, in an active category, visible to you, and has a price (a base price or at
least one priced size). Items priced at the counter are not offered in v1. Sides are free choices limited by each group’s
max_selections; future modifier groups will appear in the same modifier_groups list.
Availability
Section titled “Availability”The restaurant marks items or sizes unavailable (for example « sold out today »), for every channel, for one type of
partner, or for you only. An item that is unavailable stays on the menu with available: false. Sold-out-today entries
clear when the restaurant’s business day ends (availability.changed with action: cleared). Availability is
read-only for partners.
An order with a stale price or an unavailable item is refused with 409 price_changed or
409 item_unavailable, with current_menu_version: read the menu again before retrying.