REST API v1
All endpoints are JSON over HTTPS under /api/v1. Reservation endpoints accept either the internal id or the guest-safe publicReference.
Restaurant
Restaurant profile, active locations, and the booking policy your UI should respect.
scope: config:read
{
"restaurant": { "id": "rst_1", "name": "Atelier Lindenhof", "timezone": "Europe/Berlin" },
"locations": [
{ "id": "loc_1", "name": "Berlin Mitte", "city": "Berlin", "timezone": "Europe/Berlin" }
],
"reservation": {
"minPartySize": 1,
"maxPartySize": 12,
"defaultDurationMinutes": 120,
"minLeadTimeMinutes": 30,
"maxAdvanceBookingDays": 90,
"slotIntervalMinutes": 30
},
"features": { "waitlist": true, "webhooks": true, "reservationChanges": true }
}Weekly opening hours, upcoming special days, and the active availability rules.
scope: config:read
Availability
Bookable slots for a date and party size. Slots already account for existing bookings, buffers, slot limits, lead time, and table capacity, including combinations.
scope: availability:read
Identical to the GET form with the parameters as a JSON body, for clients that prefer POST.
scope: availability:read
Reservations
Create a booking. Tables are assigned automatically; the guest profile is created or updated by email. Send an Idempotency-Key header so retries are safe.
scope: reservations:write
{
"reservation": {
"id": "res_9f31",
"publicReference": "rr_7f3a91",
"status": "confirmed",
"startTime": "2026-06-12T17:00:00.000Z",
"endTime": "2026-06-12T19:00:00.000Z",
"partySize": 4,
"tableIds": ["t-03"],
"guest": { "firstName": "Mara", "lastName": "Schneider", "email": "mara@example.com" }
}
}List bookings, optionally filtered by date and location. Returns at most 200 rows.
scope: reservations:read
Fetch a single booking by internal id or public reference.
scope: reservations:read
Change status or table assignment. Status moves trigger guest emails and webhooks.
scope: reservations:write
Cancel a booking. Already cancelled bookings return unchanged; completed ones answer 409.
scope: reservations:cancel
Waitlist
Add a guest to the waitlist when a service is full. Creates or updates the guest profile and fires waitlist.created.
scope: waitlist:write
Guests
List guest profiles with consent and privacy state. Returns at most 200 rows.
scope: customers:read
Create or update a guest profile by email. Staff-created profiles record how consent was given through consentSource.
scope: customers:write
Webhook test
Dispatch a signed test event to every webhook subscribed to the event type, and record the deliveries in the log.
scope: webhooks:test