Partner API
Jul 14, 2026 4:05 PM

Restaurant Events

Special restaurant events (banquets, themed nights, tastings): reading the event list and working with reservations for them.

Events are special occasions at the restaurant (dinners, banquets, themed nights, tastings) with their own schedule, tickets/deposits and separate booking settings. An event can accept reservations: every reservation has an eventId field that links it to a specific event (see Creating a reservation).

All endpoints use a Bearer token (see Authentication). Base path: /api/core/admin/restaurants/{restaurantId}/events.

MethodPathPurpose
GET/eventsAll events
GET/events/activeActive (published) events
GET/events/pastPast events
GET/events/draftDrafts
GET/events/{eventId}Get an event by ID
POST/eventsCreate an event
PUT/events/{eventId}Update an event
DELETE/events/{eventId}Delete an event
POST/events/{copyFromId}/saveasCreate a copy of an existing event
PUT/events/{eventId}/statusPublish / unpublish
PUT/events/{eventId}/status/systemSystem status change

About the data format. The list endpoints return the compact EventDetailsContract model (see below). Creating, updating, reading by ID and changing status work with the “big” contract RestaurantFullContract — the same structure as the restaurant settings, but applied to an event (schedule, booking settings, the event’s floor plan). So the easiest way is to build the request body from what GET /events/{eventId} returned, changing only the fields you need.


Event model (EventDetailsContract)

This is the model returned by the list endpoints. Top-level fields:

FieldTypeDescription
idintegerEvent identifier
namestringEvent name
descriptionstringDescription
promoImagestringPromo image URL
startDatedate-timeStart date and time
endDatedate-timeEnd date and time
isOfflinebooleanUnpublished (draft/disabled)
isPublicbooleanPublicly visible to guests
datesarray<string>Specific dates the event takes place (for recurring events)
additionalInfoobjectAttributes/requests available at the event (see below)
reservationHoursarrayReservation hours by day of the week (see “Schedule”)
openingHoursarrayEvent operating hours by day of the week
specialPeriodsarraySpecial periods/exceptions in the schedule
reservationSettingsobjectEvent booking settings (ReservationSettingsContract)
depositRulesobjectDeposit/prepayment rules

Event attributes (additionalInfo)

Boolean flags for which requests/options are available at the event: highChair, babyChair, babyCarrier, stroller, vip, booth, highTop, table, party, contactless, dontDisturb, needCardReader, allergy, vegetarian, event, handicapAccessible, proofOfVaccinationOrTest, showNotes. Plus a customs[] array (custom attributes: id, type, label, icon, description, important, online, data[]).

Tickets and price

Event price/tickets are set at the floor plan level: floors[].event (EventInfoContract) holds a tickets[] array (EventTicketContract):

FieldTypeDescription
idstringTicket identifier
eventIdintegerEvent ID
typestringTicket type
titlestringTicket title
descriptionstringDescription
amountintegerTicket price

The event deposit/prepayment is configured via reservationSettings.depositRules, reservationSettings.depositEvents[] and reservationSettings.creditCardChargeEnabled. Capacity and guest limits — via the reservationSettings fields (maxGuestsPerReservation, minGuestsPerReservation, defaultMaxCoversPerSlot, totalCoversAvailableAtTime, maxBookingsPerSlot, etc.).


Event schedule

The schedule is defined by three arrays in the event model:

  • openingHours[] — event operating hours by day of the week.
  • reservationHours[] — the hours during which reservations are accepted.
  • specialPeriods[] — one-off exceptions (holidays, reschedules, closures).

Each openingHours/reservationHours element is a WeekDayOpenHoursContract:

FieldTypeDescription
weekDayintegerDay of the week (0–6)
timearrayIntervals of the day (HourlyIntervalContract)

An HourlyIntervalContract interval: open (start), close (end), name (interval label).

A specialPeriods[] element (SpecialPeriodContract): starts, ends, closed (closed during this period), repeat (recurring), isSystem (system), time[] (intervals).


All events

GET /events

Returns an array of EventDetailsContract.

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
Terminal window
curl -G https://api.hostmeapp.com/api/core/admin/restaurants/123/events \
-H "Authorization: Bearer $TOKEN"

The /events/active, /events/past and /events/draft endpoints take the same parameters and return the same EventDetailsContract array, but filtered:

  • /events/active — published/ongoing events;
  • /events/past — events that have ended;
  • /events/draft — drafts (isOffline = true).
Terminal window
curl -G https://api.hostmeapp.com/api/core/admin/restaurants/123/events/active \
-H "Authorization: Bearer $TOKEN"

Get an event

GET /events/{eventId}

Returns the event as a RestaurantFullContract (full structure: schedule, reservationSettings, the floors[] floor plan with event tickets).

ParameterInType
restaurantId *pathinteger
eventId *pathinteger
Terminal window
curl https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567 \
-H "Authorization: Bearer $TOKEN"

Use the response as the base for a subsequent PUT — change only the fields you need and send the object back.


Create an event

POST /events

Creates a new event. The body is a RestaurantFullContract (the same structure as the restaurant settings, but describing an event): name, description, promo image, dates, schedule (openingHours/reservationHours/specialPeriods), booking settings (reservationSettings), and the event’s floor plan with tickets (floors[].event.tickets[]).

ParameterInType
restaurantId *pathinteger
Terminal window
curl -X POST https://api.hostmeapp.com/api/core/admin/restaurants/123/events \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Wine Dinner",
"description": "A five-course tasting with our sommelier",
"startDate": "2026-07-15T19:00:00",
"endDate": "2026-07-15T23:00:00",
"isPublic": true
}'

This is a simplified example. In practice the schedule and reservationSettings are sent along with the event. It is easier to copy the structure from an existing event (GET /events/{eventId}) and substitute your own values.


Update an event

PUT /events/{eventId}

Updates the event. The body is a RestaurantFullContract (as for creation).

ParameterInType
restaurantId *pathinteger
eventId *pathinteger
Terminal window
curl -X PUT https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567 \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Wine Dinner (updated name)", "isPublic": true }'

Delete an event

DELETE /events/{eventId}

Deletes the event.

ParameterInType
restaurantId *pathinteger
eventId *pathinteger
Terminal window
curl -X DELETE https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567 \
-H "Authorization: Bearer $TOKEN"

The response is 200 OK with no body.


Copy an event

POST /events/{copyFromId}/saveas

Creates a new event based on an existing one (copyFromId). The body is a RestaurantFullContract with the new event’s fields (for example, a new name and dates); everything else is copied from the source.

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
copyFromId *pathintegerSource event ID
Terminal window
curl -X POST https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567/saveas \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Wine Dinner — August", "startDate": "2026-08-15T19:00:00" }'

Publish / unpublish

PUT /events/{eventId}/status

Changes the event’s publication status. Controlled by the isOffline query parameter: isOffline=false — publish (make active), isOffline=true — unpublish (return to drafts).

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
eventId *pathintegerEvent ID
isOfflinequerybooleantrue — unpublish, false — publish
Terminal window
# Publish the event
curl -X PUT "https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567/status?isOffline=false" \
-H "Authorization: Bearer $TOKEN"

The response is the updated event (RestaurantFullContract).

System status change

PUT /events/{eventId}/status/system

The system variant of the status change — the same parameters (isOffline) and the same response. Intended for service/automatic status switching.


The exact success response schemas for create/update are documented as RestaurantFullContract; see the full structure with all nested objects in Swagger UI. Documented errors — ProblemDetails (see Errors).