Aller au contenu

Reservation widget

Widget config, menu and booking

What an embeddable widget on your own site calls. Every route takes a `fields` parameter because the widget runs on a guest’s connection: it asks for the columns it renders instead of downloading the whole record.

Widget configuration

GET /public/restaurants/{slug}/widget-config Portée: public (no key)

Returns what the widget needs to render itself for this restaurant before the guest interacts with it. Fetch it once on load rather than hard-coding the values into your page, so a change made in Tablezio reaches the widget without a redeploy.

Paramètres de chemin

slugstringObligatoire

Restaurant slug.

Requête

curl 'https://api.tablezio.com/public/restaurants/casa-pepe/widget-config'

Public menu

GET /public/restaurants/{slug}/menu Portée: public (no key)

The menu for an embedded surface, with field selection, category filtering, availability filtering, paging and language. `lang` picks the translated names and descriptions stored on the item, so a multilingual menu is one request with a different parameter, not a second menu.

Paramètres de chemin

slugstringObligatoire

Restaurant slug.

Paramètres de requête

fieldsstringFacultatif

Comma-separated item fields to return.

categoryFieldsstringFacultatif

Comma-separated category fields to return.

categorystringFacultatif

Restrict to one category.

availablebooleanFacultatif

Only return currently available items.

limitintegerFacultatif

Page size.

offsetintegerFacultatif

Offset into the result set.

langstringFacultatif

Language for translated names and descriptions.

Requête

curl 'https://api.tablezio.com/public/restaurants/casa-pepe/menu?available=true&lang=es&limit=50'

Public menu categories

GET /public/restaurants/{slug}/menu/categories Portée: public (no key)

Just the categories, with field selection and language. Use it to render the menu navigation before pulling the items for the category the guest opens.

Paramètres de chemin

slugstringObligatoire

Restaurant slug.

Paramètres de requête

fieldsstringFacultatif

Comma-separated category fields to return.

langstringFacultatif

Language for translated names.

Requête

curl 'https://api.tablezio.com/public/restaurants/casa-pepe/menu/categories?lang=fr'

Public menu item

GET /public/restaurants/{slug}/menu/items/{itemId} Portée: public (no key)

One menu item, for the detail view a guest opens from the list. Field selection applies here too, so the detail request can ask for the fields the list omitted rather than refetching everything.

Paramètres de chemin

slugstringObligatoire

Restaurant slug.

itemIdstringObligatoire

Menu item id.

Paramètres de requête

fieldsstringFacultatif

Comma-separated fields to return.

langstringFacultatif

Language for translated name and description.

Requête

curl 'https://api.tablezio.com/public/restaurants/casa-pepe/menu/items/5a1b2c3d4e5f6a7b8c9d0e1f'

Check availability

GET /public/restaurants/{slug}/reservations/availability Portée: public (no key)

Returns bookable slots for a date. `partySize` matters because availability is computed against real tables and their capacities, not against a flat cover count; `from`, `to` and `slotInterval` shape the grid the widget renders.

Paramètres de chemin

slugstringObligatoire

Restaurant slug.

Paramètres de requête

datestringObligatoire

Date to check, ISO `YYYY-MM-DD`.

partySizeintegerFacultatif

Number of covers. Availability is computed against table capacity.

fromstringFacultatif

Earliest time of day to consider.

tostringFacultatif

Latest time of day to consider.

slotIntervalintegerFacultatif

Minutes between slots.

fieldsstringFacultatif

Comma-separated fields to return.

Requête

curl 'https://api.tablezio.com/public/restaurants/casa-pepe/reservations/availability?date=2026-10-04&partySize=4'

Create a reservation

POST /public/restaurants/{slug}/reservations Portée: public (no key)

Books one of the slots returned by the availability endpoint. The booking is written straight into the restaurant’s reservation records, which is the difference between an embedded widget and a third-party booking channel: there is nothing to reconcile afterwards, and no per-cover fee in between.

Paramètres de chemin

slugstringObligatoire

Restaurant slug.

Requête

curl -X POST 'https://api.tablezio.com/public/restaurants/casa-pepe/reservations' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ana","email":"[email protected]","partySize":4,"date":"2026-10-04","time":"21:00"}'