Back to home
API

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.

responsejson
{
  "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

request bodyjson
{
  "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
POST endpoints support an Idempotency-Key header. Replays with the same key within 24 hours return the original result without creating a duplicate.