EZ Table API

Programmatic access to a restaurant's reservations, availability, analytics, and live menu — authenticated by a merchant API key. Built for the restaurant's own tools and for AI / voice agents that book tables on their behalf.

Authentication

Generate a key in Dashboard → Settings → API keys. Send it on every request:

Authorization: Bearer ezk_live_xxxxxxxxxxxxxxxxxxxx

Keys are scoped and shown once. Treat them like a password; revoke anytime.

Scopes

Base URL

https://api.eztable.startslice.app/v1

Endpoints

GET /me

Merchant name, booking mode, hours, and your key's scopes. Good connection test.

curl https://api.eztable.startslice.app/v1/me \
  -H "Authorization: Bearer $EZ_KEY"

GET /availability?date=YYYY-MM-DD&party=N

Open reservation times for a date, derived from the venue's Clover hours.

curl "https://api.eztable.startslice.app/v1/availability?date=2026-09-01&party=4" \
  -H "Authorization: Bearer $EZ_KEY"

{ "date": "2026-09-01", "party": 4, "times": ["17:00","17:30","18:00", ...] }

POST /reservations

Book a table. Lands as a request the host confirms (channel: phone/IVR).

curl -X POST https://api.eztable.startslice.app/v1/reservations \
  -H "Authorization: Bearer $EZ_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Alex Rivera",
    "phone": "+17875551234",
    "partySize": 4,
    "date": "2026-09-01",
    "time": "19:00",
    "note": "Anniversary — quiet table"
  }'

{ "id": "…", "status": "PRERESERVED", "message": "Reservation request created — the host will confirm." }

Provide a phone or email. Returning guests are matched automatically.

POST /reservations/{id}/cancel

Cancel a reservation. SeatOn's agent API can't do this.

PATCH /reservations/{id}

Change date, time, partySize, or note. Also beyond SeatOn.

GET /reservations?date=YYYY-MM-DD

Reservations for a day. Or a whole month: GET /reservations/month?year=YYYY&month=M.

GET /customers/search?phone=… or ?email=…

Look up a guest before booking — visit history, no-shows, allergies, and card-on-file.

{ "found": true, "customer": { "name": "Alex Rivera", "visits": 7,
  "noShows": 0, "cancellations": 1, "hasCardOnFile": true, "cardLast4": "4242" } }

POST /waitlist

Add a guest to the waitlist when the book is full.

GET /analytics

Today's operational snapshot.

{ "reservationsToday": 12, "upcomingReservations": 8, "waitlist": 2,
  "seatedNow": 5, "coversToday": 34, "noShowsToday": 1 }

GET /menu

The live menu, straight from the merchant's Clover catalog (categories + items + prices).

Errors & limits

Build an AI / voice agent

The flow: /availability → offer times → POST /reservations. We publish a Claude Skill (eztable-reservations) that teaches an agent this API — ask your EZ Table rep for the skill package, drop in your key, and your agent can take bookings by phone or chat.