Skip to content

Reference

Bookings

Read bookings across your restaurants and create them server-to-server. Creation is capacity-checked, so the API can never overbook a slot.

GET/api/v1/bookings

Paginated list of bookings across your restaurants, newest first.

Query: restaurantId, status, from (ISO date), to (ISO date), limit (≤100), cursor

200 OK
{
  "data": [
    {
      "id": "clxa1...",
      "restaurantId": "clw...",
      "date": "2026-01-15T00:00:00.000Z",
      "time": "19:30",
      "partySize": 4,
      "status": "CONFIRMED",
      "notes": "Window table if possible",
      "source": null,
      "createdAt": "2025-12-01T10:42:33.000Z",
      "diner": { "name": "Jane Doe", "email": "jane@example.com", "phone": null }
    }
  ],
  "nextCursor": "clxa0..."
}
POST/api/v1/bookings

Create a guest booking on a restaurant your key owns. Returns 201 with the confirmCode and fires booking.created on subscribed webhooks.

cURL
curl -X POST https://www.openalacarte.com/api/v1/bookings \
  -H "Authorization: Bearer oac_live_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "restaurantId": "clw...",
    "date": "2026-01-15",
    "time": "19:30",
    "partySize": 4,
    "guestName": "Jane Doe",
    "guestEmail": "jane@example.com",
    "guestPhone": "+44 7700 900000",
    "notes": "Allergic to peanuts"
  }'

Required: restaurantId, date (YYYY-MM-DD), time (HH:MM), partySize (1–50), guestName, guestEmail.

Capacity-checked server-side under a lock: if the slot is full you get 409 — the booking is never double-allocated, even under concurrent requests.