Reservations API

Manage restaurant reservations end-to-end — create new bookings, confirm or seat guests, mark visits as completed, cancel, or record no-shows. All endpoints are scoped to the API key's business and require the business type to be set to restaurant.

Base URL

All URLs referenced in the documentation use the following base:

Base URL
https://api.meetandrock.com/v1/dev

Restaurant only

Reservations are only available for businesses with type restaurant. Calls from any other business type will respond with 403 and the error message:

{
  "message": "This feature is available only for restaurant businesses. Update the business type to enable reservations."
}

Reservation Management

Endpoints for listing, creating, updating, and cancelling reservations. Reservations include guest details, party size, date and time, optional table assignment and notes.

GET/reservations

List reservations

Retrieve reservations with pagination and rich filters.

  • search matches name, phone, email and table.
  • status filters by lifecycle status.
  • from and to are ISO timestamps that bound reservation_at.
  • customer_id filters reservations linked to a CRM customer.
GEThttps://api.meetandrock.com/v1/dev/reservations?page=1&limit=10&status=confirmed&from=2026-05-01&to=2026-05-31
List reservations

List reservations with optional filters.

curl -X GET "https://api.meetandrock.com/v1/dev/reservations?page=1&limit=10&status=confirmed" \
-H "Authorization: Bearer YOUR_API_KEY"
POST/reservations

Create reservation

Create a new reservation. Required fields: customer_name, customer_phone, party_size, reservation_at.

Optional fields: customer_email, customer_id, duration_minutes, table_number, notes, status.

POSThttps://api.meetandrock.com/v1/dev/reservations
Create reservation

Create a reservation in the restaurant.

curl -X POST "https://api.meetandrock.com/v1/dev/reservations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_name": "Jane Doe",
"customer_phone": "+1 555 123 4567",
"customer_email": "jane@example.com",
"party_size": 4,
"reservation_at": "2026-05-12T19:30:00.000Z",
"duration_minutes": 90,
"table_number": "12",
"notes": "Window seat preferred"
}'
GET/reservations/:reservationId

Get reservation

Fetch a single reservation by id, including the optional linked CRM customer.

GEThttps://api.meetandrock.com/v1/dev/reservations/:reservationId
Get reservation

Get reservation details by id.

curl -X GET "https://api.meetandrock.com/v1/dev/reservations/RES_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
PUT/reservations/:reservationId

Update reservation

Partially update a reservation. Any subset of writeable fields is accepted.

PUThttps://api.meetandrock.com/v1/dev/reservations/:reservationId
Update reservation

Update writeable fields of a reservation.

curl -X PUT "https://api.meetandrock.com/v1/dev/reservations/RES_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "party_size": 6, "table_number": "21" }'
PATCH/reservations/:reservationId/status

Update status

Move the reservation through its lifecycle. Setting the status to cancelled also stamps cancelled_at automatically.

PATCHhttps://api.meetandrock.com/v1/dev/reservations/:reservationId/status
Update status

Update the lifecycle status.

curl -X PATCH "https://api.meetandrock.com/v1/dev/reservations/RES_ID/status" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "confirmed" }'
POST/reservations/:reservationId/cancel

Cancel reservation

Convenience endpoint that cancels a reservation and stores an optional reason.

POSThttps://api.meetandrock.com/v1/dev/reservations/:reservationId/cancel
Cancel reservation

Cancel a reservation with an optional reason.

curl -X POST "https://api.meetandrock.com/v1/dev/reservations/RES_ID/cancel" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "cancellation_reason": "Guest cancelled" }'
DELETE/reservations/:reservationId

Delete reservation

Permanently remove a reservation record. Prefer cancellation for active bookings.

DELETEhttps://api.meetandrock.com/v1/dev/reservations/:reservationId
Delete reservation

Permanently delete a reservation.

curl -X DELETE "https://api.meetandrock.com/v1/dev/reservations/RES_ID" \
-H "Authorization: Bearer YOUR_API_KEY"

Status lifecycle

Reservations move through these statuses:

  • pending — newly created, awaiting confirmation.
  • confirmed — confirmed by the restaurant.
  • seated — guests have arrived and been seated.
  • completed — visit ended successfully.
  • cancelled — cancelled by guest or staff.
  • no_show — guests did not arrive.

Filters & pagination

All list endpoints support standard page and limit pagination, returning a pagination object with total, page and limit.

Error responses

400 Bad Request

{ "message": "\"customer_phone\" is required" }

403 Forbidden

{
  "message": "This feature is available only for restaurant businesses..."
}

404 Not Found

{ "message": "Reservation not found" }

500 Internal Server Error

{ "message": "Something went wrong" }

Contents