Reservations API
List, create, modify and cancel reservations programmatically.
Reservations are the most-used resource in the API. The endpoints below cover the full lifecycle. All endpoints require an API key with the write scope (read scope is enough for the GET endpoint).
List reservations
GET/v1/reservations
Returns a paginated list of reservations for the API key's restaurant. Supported filters: from, to, status, channel, guest_id.
{
"data": [
{
"id": "rsv_01HQXY7JN3K9R0Z2A4",
"guest_id": "gst_01HQXY7JN3K9R0Z2A5",
"starts_at": "2026-04-18T19:00:00Z",
"ends_at": "2026-04-18T21:00:00Z",
"party_size": 4,
"status": "confirmed",
"table_ids": ["tbl_12"],
"channel": "widget",
"notes": "Birthday — bring out a candle"
}
],
"next_cursor": null
}Create a reservation
POST/v1/reservations
{
"guest": {
"name": "Maria Schmidt",
"email": "maria@example.com",
"phone": "+4915112345678"
},
"starts_at": "2026-04-20T19:30:00Z",
"party_size": 2,
"section_id": "sec_terrace",
"notes": "Window seat preferred"
}On success the response is the full reservation object as in the list endpoint above, with status confirmed if a table was successfully assigned and pending if the request needs manual review.
Modify a reservation
PATCH/v1/reservations/{id}
Send only the fields you want to change. Re-assigning a table revalidates capacity and combinability before accepting the change.
Cancel a reservation
DELETE/v1/reservations/{id}
Soft-deletes the reservation by setting status to cancelled. The record remains queryable for reporting purposes.
Idempotency-Key header. Replays with the same key within 24 hours return the original result without creating a duplicate.