Skip to content
Beta: the Biskèt Partner API may still change before v1 is final. Sandbox access is by request:partners@bisket.ai.

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 /menu and GET /availability.
  • Then: menu.updated (with menu_version and the changed items) and availability.changed webhooks.
  • Fallbacks: re-read GET /menu with If-None-Match (a 304 costs half a request), or GET /menu/changes?since_version=N for the delta.
menus.ts
// 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 };
}

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.

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.