Partner API
Oct 27, 2026 1:07 AM

Waitlist

Waitlist (walk-in): the queue of guests without a reservation — adding to the queue, statuses and seating.

The waitlist (walk-in / waitlist) is the queue of guests who arrived without a reservation. The host adds the guest to the queue, the system estimates the wait time, and when a table is ready the guest is called and seated. This section covers both sides of the process:

  • Restaurant side (tag WaitingAdmin, path /api/wm/admin/restaurant/{restaurantId}/waitings) — adding to the queue, listing, changing status, calling and seating the guest, messaging with them.
  • Guest side (tag WaitingGuest, path /api/rsv/mb/guest/walkins) — the guest joins the queue on their own, tracks their position in line and the time estimates.

All endpoints require a Bearer token (see Authentication). Times are ISO 8601 in the restaurant’s local time zone. Errors are ProblemDetails (see Errors).


Waitlist entry (key fields)

A queue entry is described by the WaitingContract contract (in responses) and UpdateWaitingItemContract (when creating/updating). Below are the fields needed in most integrations.

FieldTypeDescription
idstringQueue entry identifier
customerNamestringGuest name
phonestringPhone (call notifications are sent to it)
emailstringEmail
groupSizeintegerParty size (number of guests)
areasstringPreferred area/room
tableNumberstringAssigned/requested table
statusstringEntry status (in queue / called / seated / closed, etc.)
statestringEntry state
typestringEntry type
sourcestringSource (a marker for your channel)
autoSeatbooleanAutomatic seating
specialRequestsstringGuest’s special requests
internalNotesstringInternal notes (not shown to the guest)
aboutGuestNotesstringNotes about the guest
createddate-timeTime the guest was added to the queue
seateddate-timeSeating time
closeddate-timeTime the entry was closed
expectedTimedate-timeExpected seating time
statusTimedate-timeTime of the last status change
estimatedTurnOverTimenumberEstimated table turnover time, minutes
estimatedReleaseTimedate-timeEstimated time the table frees up
unreadMessageCountintegerNumber of unread messages from the guest
receiptAmountnumberReceipt amount (if linked)
eventIdintegerEvent ID, if the entry is for an event
createdBy / updatedBystringWho created / updated (audit)

Nested objects

FieldObjectContains
customerProfileProfileDataGuest profile: allergy[], vegetarian, vip, handicapAccessible, anniversary, birthdate, companyName, delivery address
additionalsAdditionalsFlags/preferences: highChair, vip, booth, highTop, babyChair, stroller, allergy, vegetarian, contactless, dontDisturb, event, eventTypes[], customs[]
waiters[]WaiterContractAssigned servers: id, fullName, email, color, load
detailsDetailsExtra details: cancelOptionName, cancelNote, cancelSource, paymentError, paymentLinkUrl
guestTags[]TagContractGuest tags: id, name, color

Adding a guest to the queue

Add an entry (restaurant side)

POST /waitings

Creates a waitlist entry on behalf of staff. Body — UpdateWaitingItemContract.

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier

The most commonly used body fields: customerName, phone, groupSize, areas, expectedTimeMinutes (wait in minutes), estimatedTurnOverTime, specialRequests, internalNotes, email, tableNumber, waiterIds[], autoSeat, additionals, customerProfile.

Terminal window
curl -X POST https://api.hostmeapp.com/api/wm/admin/restaurant/123/waitings \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customerName": "John Parker",
"phone": "+16175550123",
"groupSize": 2,
"areas": "Terrace",
"specialRequests": "Window table"
}'

Guest joins the queue themselves

POST /api/rsv/mb/guest/walkins

Guest endpoint: the guest adds themselves to the queue (for example, via a widget or a kiosk). Body — CreateMobileWalkinContract.

FieldTypeDescription
restaurantIdintegerRestaurant identifier
groupSizeintegerParty size
expectedTimeintegerDesired wait, minutes
customerNamestringGuest name
phonestringPhone
emailstringEmail
areasstringPreferred area
specialRequestsstringSpecial requests
aboutGuestNotesstringNotes about the guest
campaignInfostringCampaign/source marker
additionalsobjectFlags/preferences (Additionals)
customerProfileobjectGuest profile (ProfileData)
Terminal window
curl -X POST https://api.hostmeapp.com/api/rsv/mb/guest/walkins \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"restaurantId": 123,
"groupSize": 3,
"customerName": "Maria Ivanova",
"phone": "+16175550100",
"expectedTime": 30
}'

Response. Returns the created booking entry as a BookingContract.


Listing and reading entries

List entries for a period

GET /waitings

Returns all waitlist entries of the restaurant for a period.

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
fromquerydate-timePeriod start
toquerydate-timePeriod end
includeEventsquerybooleanInclude event entries

Response — an array of WaitingContract.

Terminal window
curl -G https://api.hostmeapp.com/api/wm/admin/restaurant/123/waitings \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode "from=2026-07-01T00:00:00" \
--data-urlencode "to=2026-07-01T23:59:59"

Compact list

GET /waitings/compact

A lightweight list of entries (BookingCompactContract) — handy for a display board or dashboard: contains id, customerName, phone, groupSize, areas, status, state, tableNumber, expectedTime, estimatedTurnOver, unreadMessageCount and more, without the full order tree.

ParameterInType
restaurantId *pathinteger
fromquerydate-time
toquerydate-time

Get an entry by ID

GET /waitings/{waitingItemId}

Returns an entry by identifier. Response — WaitingContract.

ParameterInType
restaurantId *pathinteger
waitingItemId *pathstring

Updating and deleting an entry

Update an entry

PUT /waitings/{waitingItemId}

Updates a queue entry (name, phone, party size, area, wait, etc.). Body — the same fields as on creation (UpdateWaitingItemContract): send the fields you are changing.

ParameterInType
restaurantId *pathinteger
waitingItemId *pathstring
Terminal window
curl -X PUT https://api.hostmeapp.com/api/wm/admin/restaurant/123/waitings/ABC_ID \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "groupSize": 4, "areas": "Main Hall", "expectedTimeMinutes": 25 }'

Guest removes themselves from the queue

DELETE /api/rsv/mb/guest/walkins/{walkinId}

Guest endpoint: the guest removes their own entry from the queue.

ParameterInType
walkinId *pathstring

Changing entry status

The entry lifecycle is driven by separate PUT endpoints. All of them take restaurantId (path, integer) and waitingItemId (path, string).

EndpointPurpose
PUT /waitings/{waitingItemId}/sitedMark the guest as seated (got a table)
PUT /waitings/{waitingItemId}/closeClose the entry (guest seated/left)
PUT /waitings/{waitingItemId}/cancelCancel the entry
PUT /waitings/{waitingItemId}/reopenReopen a closed entry
PUT /waitings/{waitingItemId}/rollbackRoll back the last status change

Seat a guest

PUT /waitings/{waitingItemId}/sited

When the guest gets a table, the host marks the entry as seated. Body — SeatBookingContract:

FieldTypeDescription
tableNumberstringTable number
waiterIds[]arrayIDs of the assigned servers
updatedBystringWho seated the guest
externalWaiterUserNamestringServer name in the external system
externalWaiterIdstringServer ID in the external system

Response — the updated entry (BookingContract).

Terminal window
curl -X PUT https://api.hostmeapp.com/api/wm/admin/restaurant/123/waitings/ABC_ID/sited \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "tableNumber": "12", "waiterIds": [42] }'

Cancel an entry

PUT /waitings/{waitingItemId}/cancel

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
waitingItemId *pathstringEntry identifier
originquerystringCancellation source (who is cancelling)

Calling a guest

Call a guest

PUT /waitings/{waitingItemId}/call

When a table is ready, the host initiates the call. The guest receives a notification that the table is ready.

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
waitingItemId *pathstringEntry identifier
tableNumberquerystringNumber of the ready table
Terminal window
curl -X PUT "https://api.hostmeapp.com/api/wm/admin/restaurant/123/waitings/ABC_ID/call?tableNumber=12" \
-H "Authorization: Bearer $TOKEN"

Messaging with the guest

The host and the guest can exchange messages (for example, about the wait or the table being ready).

EndpointPurpose
GET /waitings/{waitingItemId}/messagesList messages for an entry
POST /waitings/{waitingItemId}/sendmessageSend a message
GET /waitings/messages/unread/countNumber of unread messages (per restaurant)
POST /waitings/{waitingItemId}/messages/readallMark all messages as read

Messages for an entry

GET /waitings/{waitingItemId}/messages

Returns an array of MessageContract: id, body, time, origin (host/client), phone, deliveryStatus, deliveryTime, isRead.

Send a message to the guest

POST /waitings/{waitingItemId}/sendmessage

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
waitingItemId *pathstringEntry identifier
originquerystringWho is sending: host or client

Body — CreateMessageContract (body — the message text).

Terminal window
curl -X POST "https://api.hostmeapp.com/api/wm/admin/restaurant/123/waitings/ABC_ID/sendmessage?origin=host" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "body": "Your table will be ready in 5 minutes" }'

Unread messages

GET /waitings/messages/unread/count

Response — CountContract: the overall count and countItems[] (entry id + count of unread messages per entry).


Wait time estimate (ETA) and statistics

Queue statistics (restaurant side)

GET /waitings/stats

Returns a queue summary and the average wait time estimate. Response — WalkinStatistic:

FieldTypeDescription
inListintegerNumber of guests in the queue
calledintegerNumber of called guests
tablesAvailableintegerNumber of free tables
totalCoversintegerTotal capacity (seats)
coversAvailableintegerFree seats
oneTwoGroupobjectAverage wait for parties of 1–2 guests (valueMinutes, totalMinutes)
threeFourGroupobjectAverage wait for parties of 3–4 guests
fiveSixGroupobjectAverage wait for parties of 5–6 guests
waitByGroup[]arrayEstimate by party size (avgSeatTime, tableTop, suggestedTables)
waitByTable[]arrayEstimate by table type
ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
partySizesquerystringFilter by party sizes
areaListquerystringFilter by areas

Estimate for the guest

GET /api/rsv/mb/guest/restaurants/{restaurantId}/walkins/expected

Guest endpoint: the expected wait time estimate by party size. Response — ExpectedTimeContract (expectedMinutesForSizes — a “party size → minutes” map).

ParameterInType
restaurantId *pathinteger
partySizesquerystring
areaListquerystring

Waitlist settings

GET / PUT /waitings/.../settings

Read and update the queue module settings. Path: /api/wm/admin/restaurant/{restaurantId}/settings. Body/response — WaitingSettingsContract:

FieldTypeDescription
enabledbooleanOnline waitlist: guests can join the waitlist themselves (widget, apps, QR). When off, a guest join returns 409
enableManualHoldbooleanThe guest can put themselves “on hold” so the host does not call them
autoCallbooleanThe panels call the guest as soon as the host assigns them a table. The server only stores the flag
autoTableAssignmentbooleanA guest who joins the waitlist online gets the table that frees up first right away (with table-availability estimation). No call is made
autoCallAndTableAssignmentbooleanWhen a table frees up, the server calls the first fitting waitlist guest and holds the table for them
adjustEstimatedWaitTimebooleanAdjust the wait time estimate
waitEtaRuleEnabledbooleanUse the ETA calculation rule
maximumHoldTimeintegerMaximum hold time, minutes
waitEstimateLookBackMinutesintegerLook-back window for the wait estimate, minutes
etaAlgorithmstringETA calculation algorithm
showAdditionalsInAreasbooleanShow flags/preferences in areas
positionMessages[]arrayMessages to the guest when their position in line changes (minPos, maxPos, messageTemplate)
statusMessages[]arrayMessages to the guest on status change (fromStatus, toStatus, depositStatus, messageTemplate)
Terminal window
curl -G https://api.hostmeapp.com/api/wm/admin/restaurant/123/settings \
-H "Authorization: Bearer $TOKEN"

Guest side: tracking the queue

Guest endpoints (/api/rsv/mb/guest/walkins) let the guest track their place in the queue and manage their entry.

EndpointPurpose
GET /api/rsv/mb/guest/walkinsThe guest’s entries (parameters skip, top, from, to)
GET /api/rsv/mb/guest/walkins/{walkinId}Get the guest’s entry (WalkinGuestContract)
PUT /api/rsv/mb/guest/walkins/{walkinId}/seatThe guest confirms seating
PUT /api/rsv/mb/guest/walkins/{walkinId}/skipThe guest skips their turn
DELETE /api/rsv/mb/guest/walkins/{walkinId}The guest deletes the entry
GET /api/rsv/mb/guest/restaurants/{restaurantId}/walkins/linePosition in line
GET /api/rsv/mb/guest/walkins/dataReference data (restaurants, statuses)

Walk-in status (guest)

GET /api/rsv/mb/guest/walkins/{walkinId}

Returns the guest’s entry (WalkinGuestContract) with the fields customerName, phone, groupSize, areas, status, tableNumber, expectedTime, estimatedTurnOverTime, restaurantName, restaurantImage, timeZone, plus the guest profile and flags.

Position in line

GET /api/rsv/mb/guest/restaurants/{restaurantId}/walkins/line

Returns the entry’s current position in the queue (LineStateContract):

FieldTypeDescription
bookingIdstringEntry identifier
overallLinePositionintegerPosition in the overall queue
groupLinePositionintegerPosition in the queue for this party size
groupLineLengthintegerQueue length for this party size
areaLinePositionobjectPosition in the queue by area
ParameterInType
restaurantId *pathinteger
walkinIdquerystring
groupSizequeryinteger
Terminal window
curl -G "https://api.hostmeapp.com/api/rsv/mb/guest/restaurants/123/walkins/line" \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode "walkinId=ABC_ID" \
--data-urlencode "groupSize=2"

Walk-in data (guest)

GET /api/rsv/mb/guest/walkins/data

Reference data for the guest interface (GuestWalkinsDataContract): restaurantIds[], statuses[].


Related sections. For guests with a reservation, use Reservations. General request rules and the error format are in Conventions and Errors.