Holds
A hold claims a slot without booking it, so you can assemble the rest of a package or take a payment while the table stays yours. It occupies a real table from the moment it is taken and counts against availability exactly as a booking does.
A hold has no guest and does not appear in GET /v1/reservations. It becomes a
booking through POST /v1/reservations with a hold_id. Every endpoint here
uses the reservation scopes — there is no separate hold scope. The fields, the
two kinds and the four statuses are on The hold object.
Endpoints
Section titled “Endpoints”| Endpoint | What it does |
|---|---|
POST /v1/holds |
Takes the slot off sale. Idempotency-Key is required, and expires_at in the response is the deadline — the server clamps whatever you asked for. |
GET /v1/holds |
Lists the restaurant’s holds that did not become bookings, newest first. |
GET /v1/holds/{id} |
Retrieves one hold, including a released, expired or converted one. |
DELETE /v1/holds/{id} |
Gives the table back before the deadline. Releasing an already-released or expired hold returns the same hold with 200. |
A converted hold leaves the list
Section titled “A converted hold leaves the list”GET /v1/holds returns live, released and expired holds. One that converted is
absent, because it is a reservation now and belongs to
GET /v1/reservations. Its hold id still
resolves on GET /v1/holds/{id}, answering status: "converted" and naming the
booking in reservation.
Hold a slot walks the sequence, and Change a held time covers moving one.