Reservations API
List, create, modify and cancel reservations programmatically.
/v1/reservations REST endpoints described below are not yet shipped. What does exist today for booking reservations programmatically: the public widget endpoints (POST /api/reservations/public, GET /api/availability, PATCH|DELETE /api/reservations/manage/[id]) and the MCP tools at /api/mcp (see MCP overview). The shapes below are the planned v1 REST shape.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": "[email protected]",
"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.