Core resources
Booking flow
With the Bookingmood API you can access and manage your data in a programmatic way, using HTTP requests. The structure of the Bookingmood API is based on PostgREST v11.1 .
The Bookingmood API uses api keys for authentication. You can create and manage API keys from the bottom of settings page of your organization in the admin dashboard .
Once you have an API key simply provide it in the HTTP Authorization header as bearer token.
curl -X GET "https://api.bookingmood.com/v1/products" \
-H "Authorization: Bearer YOUR_API_KEY"For each endpoint, you can select which columns you want to retrieve by using the select query parameter. Besides the columns of the resource itself, you can also select columns from related resources. For more advanced selection options refer to the PostgREST documentation .
curl -X GET "https://api.bookingmood.com/v1/products?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.bookingmood.com/v1/products?select=id,name" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.bookingmood.com/v1/products?select=name,capacities(*)" \
-H "Authorization: Bearer YOUR_API_KEY"Filters can be applied on each list, update and delete request, to restrict the rows affected by the request. For a complete list of filters refer to the PostgREST documentation .
curl -X GET "https://api.bookingmood.com/v1/calendar_events?status=eq.CONFIRMED" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.bookingmood.com/v1/calendar_events?status=eq.CONFIRMED&type=eq.booking" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X DELETE "https://api.bookingmood.com/v1/contacts?email=like.%test.com" \
-H "Authorization: Bearer YOUR_API_KEY"By default, results are sorted by the primary key of the underlying table. You can change the sorting by using the order query parameter. To limit the number of results, use the limit and offset query parameters. The API will return at most 1000 results per request. For more advanced sorting and pagination options refer to the PostgREST documentation .
curl -X GET "https://api.bookingmood.com/v1/products?order=created_at.desc" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.bookingmood.com/v1/products?limit=10&offset=10" \
-H "Authorization: Bearer YOUR_API_KEY"Possible options per attribute
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
nameMultiLanguageStringLocalized name
orderintegerOrder of the option in the list of options as displayed on widgets and websites
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"attribute_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.540Z",
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"order": 1
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
nameFilter<MultiLanguageString>Localized name
orderFilter<integer>Order of the option in the list of options as displayed on widgets and websites
200A list of attribute options with the selected columns
206Partial Content
GET /attribute_optionscurl -X GET "https://api.bookingmood.com/v1/attribute_options?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<AttributeOption> | Array<Partial<AttributeOption>>201The newly created attribute options with the selected columns
POST /attribute_optionscurl -X POST "https://api.bookingmood.com/v1/attribute_options" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
nameFilter<MultiLanguageString>Localized name
orderFilter<integer>Order of the option in the list of options as displayed on widgets and websites
204The deleted attribute options with the selected columns
DELETE /attribute_optionscurl -X DELETE "https://api.bookingmood.com/v1/attribute_options" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
nameFilter<MultiLanguageString>Localized name
orderFilter<integer>Order of the option in the list of options as displayed on widgets and websites
Partial<AttributeOption>204The updated attribute options with the selected columns
PATCH /attribute_optionscurl -X PATCH "https://api.bookingmood.com/v1/attribute_options" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Attributes to segment and filter units by
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
nameMultiLanguageStringLocalized name
orderintegerOrder of the attribute displayed on widgets and websites
type"single-select" | "multi-select"Attribute type, either single-select of multi-select
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.675Z",
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"order": 1,
"type": "single-select"
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this attribute is defined in
created_atFilter<timestamp with time zone>Creation timestamp
nameFilter<MultiLanguageString>Localized name
orderFilter<integer>Order of the attribute displayed on widgets and websites
typeFilter<"single-select" | "multi-select">Attribute type, either single-select of multi-select
200A list of attributes with the selected columns
206Partial Content
GET /attributescurl -X GET "https://api.bookingmood.com/v1/attributes?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Attribute> | Array<Partial<Attribute>>201The newly created attributes with the selected columns
POST /attributescurl -X POST "https://api.bookingmood.com/v1/attributes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this attribute is defined in
created_atFilter<timestamp with time zone>Creation timestamp
nameFilter<MultiLanguageString>Localized name
orderFilter<integer>Order of the attribute displayed on widgets and websites
typeFilter<"single-select" | "multi-select">Attribute type, either single-select of multi-select
204The deleted attributes with the selected columns
DELETE /attributescurl -X DELETE "https://api.bookingmood.com/v1/attributes" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this attribute is defined in
created_atFilter<timestamp with time zone>Creation timestamp
nameFilter<MultiLanguageString>Localized name
orderFilter<integer>Order of the attribute displayed on widgets and websites
typeFilter<"single-select" | "multi-select">Attribute type, either single-select of multi-select
Partial<Attribute>204The updated attributes with the selected columns
PATCH /attributescurl -X PATCH "https://api.bookingmood.com/v1/attributes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Booking details as filled in by guests in the booking form
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
attachmenttext | nulldescriptionjsonbnameMultiLanguageStringLocalized name of the form field
valuetext | nullValue filled in by the customer
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"option_id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.718Z",
"updated_at": "2025-10-24T22:43:34.718Z",
"attachment": "",
"description": {},
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"value": ""
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentFilter<text | null>descriptionFilter<jsonb>nameFilter<MultiLanguageString>Localized name of the form field
valueFilter<text | null>Value filled in by the customer
200A list of booking details with the selected columns
206Partial Content
GET /booking_detailscurl -X GET "https://api.bookingmood.com/v1/booking_details?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<BookingDetail> | Array<Partial<BookingDetail>>201The newly created booking details with the selected columns
POST /booking_detailscurl -X POST "https://api.bookingmood.com/v1/booking_details" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentFilter<text | null>descriptionFilter<jsonb>nameFilter<MultiLanguageString>Localized name of the form field
valueFilter<text | null>Value filled in by the customer
204The deleted booking details with the selected columns
DELETE /booking_detailscurl -X DELETE "https://api.bookingmood.com/v1/booking_details" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentFilter<text | null>descriptionFilter<jsonb>nameFilter<MultiLanguageString>Localized name of the form field
valueFilter<text | null>Value filled in by the customer
Partial<BookingDetail>204The updated booking details with the selected columns
PATCH /booking_detailscurl -X PATCH "https://api.bookingmood.com/v1/booking_details" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Logs of each time a booking is updated
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.817Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of booking updates with the selected columns
206Partial Content
GET /booking_updatescurl -X GET "https://api.bookingmood.com/v1/booking_updates?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
confirmed_attimestamp with time zone | nullTimestamp at which the booking was confirmed
currencyCurrencyBase currency of the booking
display_currencyCurrencyCurrency used to display prices to the customer
exchange_raterealExchange rate used to convert the booking currency to the display currency
ftstsvectormethodtextMethod used to make the booking, request or book
occupancyRecord<uuid, number>Occupancy per capacity group.
referencetextPublicly visible reference of the booking
secrettextSecret reference of the booking
silentbooleanWhether the booking was made without automatically sending a confirmation email
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"site_id": "00000000-0000-0000-0000-000000000000",
"widget_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.819Z",
"updated_at": "2025-10-24T22:43:34.819Z",
"confirmed_at": "2025-10-24T22:43:34.819Z",
"currency": "USD",
"display_currency": "USD",
"exchange_rate": 0,
"method": "request",
"occupancy": {
"00000000-0000-0000-0000-000000000000": 1
},
"reference": "",
"secret": "extensions.uuid_generate_v4()",
"silent": false
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this booking is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
confirmed_atFilter<timestamp with time zone | null>Timestamp at which the booking was confirmed
currencyFilter<Currency>Base currency of the booking
display_currencyFilter<Currency>Currency used to display prices to the customer
exchange_rateFilter<real>Exchange rate used to convert the booking currency to the display currency
ftsFilter<tsvector>methodFilter<text>Method used to make the booking, request or book
occupancyFilter<Record<uuid, number>>Occupancy per capacity group.
referenceFilter<text>Publicly visible reference of the booking
secretFilter<text>Secret reference of the booking
silentFilter<boolean>Whether the booking was made without automatically sending a confirmation email
200A list of bookings with the selected columns
206Partial Content
GET /bookingscurl -X GET "https://api.bookingmood.com/v1/bookings?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this booking is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
confirmed_atFilter<timestamp with time zone | null>Timestamp at which the booking was confirmed
currencyFilter<Currency>Base currency of the booking
display_currencyFilter<Currency>Currency used to display prices to the customer
exchange_rateFilter<real>Exchange rate used to convert the booking currency to the display currency
ftsFilter<tsvector>methodFilter<text>Method used to make the booking, request or book
occupancyFilter<Record<uuid, number>>Occupancy per capacity group.
referenceFilter<text>Publicly visible reference of the booking
secretFilter<text>Secret reference of the booking
silentFilter<boolean>Whether the booking was made without automatically sending a confirmation email
204The deleted bookings with the selected columns
DELETE /bookingscurl -X DELETE "https://api.bookingmood.com/v1/bookings" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this booking is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
confirmed_atFilter<timestamp with time zone | null>Timestamp at which the booking was confirmed
currencyFilter<Currency>Base currency of the booking
display_currencyFilter<Currency>Currency used to display prices to the customer
exchange_rateFilter<real>Exchange rate used to convert the booking currency to the display currency
ftsFilter<tsvector>methodFilter<text>Method used to make the booking, request or book
occupancyFilter<Record<uuid, number>>Occupancy per capacity group.
referenceFilter<text>Publicly visible reference of the booking
secretFilter<text>Secret reference of the booking
silentFilter<boolean>Whether the booking was made without automatically sending a confirmation email
Partial<Booking>204The updated bookings with the selected columns
PATCH /bookingscurl -X PATCH "https://api.bookingmood.com/v1/bookings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Private notes send around some calendar event
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
notetextThe note itself
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"author_id": "00000000-0000-0000-0000-000000000000",
"calendar_event_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.956Z",
"updated_at": "2025-10-24T22:43:34.956Z",
"note": ""
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
noteFilter<text>The note itself
200A list of calendar event notes with the selected columns
206Partial Content
GET /calendar_event_notescurl -X GET "https://api.bookingmood.com/v1/calendar_event_notes?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<CalendarEventNote> | Array<Partial<CalendarEventNote>>201The newly created calendar event notes with the selected columns
POST /calendar_event_notescurl -X POST "https://api.bookingmood.com/v1/calendar_event_notes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
noteFilter<text>The note itself
204The deleted calendar event notes with the selected columns
DELETE /calendar_event_notescurl -X DELETE "https://api.bookingmood.com/v1/calendar_event_notes" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
noteFilter<text>The note itself
Partial<CalendarEventNote>204The updated calendar event notes with the selected columns
PATCH /calendar_event_notescurl -X PATCH "https://api.bookingmood.com/v1/calendar_event_notes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Tasks defined per event.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
completed_attimestamp with time zone | nullTimestamp at which the task was completed
due_attimestamp with time zoneDue date of the task
labeltextLabel of the task
notification_sent_attimestamp with time zone | nullTimestamp of the last notification sent
schedule"manual" | "arrival" | "departure"Task schedule relative to the event
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"calendar_event_id": "00000000-0000-0000-0000-000000000000",
"product_task_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.977Z",
"updated_at": "2025-10-24T22:43:34.977Z",
"completed_at": "2025-10-24T22:43:34.977Z",
"due_at": "2025-10-24T22:43:34.977Z",
"label": "",
"notification_sent_at": "2025-10-24T22:43:34.977Z",
"schedule": "arrival"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
completed_atFilter<timestamp with time zone | null>Timestamp at which the task was completed
due_atFilter<timestamp with time zone>Due date of the task
labelFilter<text>Label of the task
notification_sent_atFilter<timestamp with time zone | null>Timestamp of the last notification sent
scheduleFilter<"manual" | "arrival" | "departure">Task schedule relative to the event
200A list of calendar event tasks with the selected columns
206Partial Content
GET /calendar_event_taskscurl -X GET "https://api.bookingmood.com/v1/calendar_event_tasks?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<CalendarEventTask> | Array<Partial<CalendarEventTask>>201The newly created calendar event tasks with the selected columns
POST /calendar_event_taskscurl -X POST "https://api.bookingmood.com/v1/calendar_event_tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
completed_atFilter<timestamp with time zone | null>Timestamp at which the task was completed
due_atFilter<timestamp with time zone>Due date of the task
labelFilter<text>Label of the task
notification_sent_atFilter<timestamp with time zone | null>Timestamp of the last notification sent
scheduleFilter<"manual" | "arrival" | "departure">Task schedule relative to the event
204The deleted calendar event tasks with the selected columns
DELETE /calendar_event_taskscurl -X DELETE "https://api.bookingmood.com/v1/calendar_event_tasks" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
completed_atFilter<timestamp with time zone | null>Timestamp at which the task was completed
due_atFilter<timestamp with time zone>Due date of the task
labelFilter<text>Label of the task
notification_sent_atFilter<timestamp with time zone | null>Timestamp of the last notification sent
scheduleFilter<"manual" | "arrival" | "departure">Task schedule relative to the event
Partial<CalendarEventTask>204The updated calendar event tasks with the selected columns
PATCH /calendar_event_taskscurl -X PATCH "https://api.bookingmood.com/v1/calendar_event_tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Snapshots of each time a calendar event is updated
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
next_intervaldaterangeEvent interval after the update
next_status"CANCELLED" | "TENTATIVE" | "CONFIRMED"Status of the calendar event after the update
prev_intervaldaterangeEvent interval before the update
prev_status"CANCELLED" | "TENTATIVE" | "CONFIRMED"Status of the calendar event before the update
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"calendar_event_id": "00000000-0000-0000-0000-000000000000",
"next_product_id": "00000000-0000-0000-0000-000000000000",
"prev_product_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.980Z",
"next_interval": null,
"next_status": "CANCELLED",
"prev_interval": null,
"prev_status": "CANCELLED"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
next_intervalFilter<daterange>Event interval after the update
next_statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Status of the calendar event after the update
prev_intervalFilter<daterange>Event interval before the update
prev_statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Status of the calendar event before the update
200A list of calendar event updates with the selected columns
206Partial Content
GET /calendar_event_updatescurl -X GET "https://api.bookingmood.com/v1/calendar_event_updates?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Events as visible on your timeline. Can be bookings, blocked periods or notes.
iduuidUnique identifier
calendar_iduuid | nullIdentifier of the external calendar this event is related to
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
end_datedateEvent end date
ftstsvectorgenerated_titletextTitle of the event generated from the product name and the customer name
notestextPrivate notes about the event
origintext | nullOrigin of the event
paddingsmallintPadding of the event due to cooldown time
start_datedateEvent start date
status"CANCELLED" | "TENTATIVE" | "CONFIRMED"Status of the event
titletextTitle of the event
type"booking" | "blocked period" | "note" | "blocked-period"Type of the event
uidtext | nullIdentifier of the event in the original calendar
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"calendar_id": "00000000-0000-0000-0000-000000000000",
"creator_id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:34.995Z",
"updated_at": "2025-10-24T22:43:34.995Z",
"end_date": null,
"generated_title": "",
"notes": "",
"origin": "",
"padding": 0,
"start_date": null,
"status": "CONFIRMED",
"title": "",
"type": "booking",
"uid": ""
}idFilter<uuid>Unique identifier
calendar_idFilter<uuid | null>Identifier of the external calendar this event is related to
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
end_dateFilter<date>Event end date
ftsFilter<tsvector>generated_titleFilter<text>Title of the event generated from the product name and the customer name
notesFilter<text>Private notes about the event
originFilter<text | null>Origin of the event
paddingFilter<smallint>Padding of the event due to cooldown time
start_dateFilter<date>Event start date
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Status of the event
titleFilter<text>Title of the event
typeFilter<"booking" | "blocked period" | "note" | "blocked-period">Type of the event
uidFilter<text | null>Identifier of the event in the original calendar
200A list of calendar events with the selected columns
206Partial Content
GET /calendar_eventscurl -X GET "https://api.bookingmood.com/v1/calendar_events?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
calendar_idFilter<uuid | null>Identifier of the external calendar this event is related to
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
end_dateFilter<date>Event end date
ftsFilter<tsvector>generated_titleFilter<text>Title of the event generated from the product name and the customer name
notesFilter<text>Private notes about the event
originFilter<text | null>Origin of the event
paddingFilter<smallint>Padding of the event due to cooldown time
start_dateFilter<date>Event start date
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Status of the event
titleFilter<text>Title of the event
typeFilter<"booking" | "blocked period" | "note" | "blocked-period">Type of the event
uidFilter<text | null>Identifier of the event in the original calendar
204The deleted calendar events with the selected columns
DELETE /calendar_eventscurl -X DELETE "https://api.bookingmood.com/v1/calendar_events" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
calendar_idFilter<uuid | null>Identifier of the external calendar this event is related to
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
end_dateFilter<date>Event end date
ftsFilter<tsvector>generated_titleFilter<text>Title of the event generated from the product name and the customer name
notesFilter<text>Private notes about the event
originFilter<text | null>Origin of the event
paddingFilter<smallint>Padding of the event due to cooldown time
start_dateFilter<date>Event start date
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Status of the event
titleFilter<text>Title of the event
typeFilter<"booking" | "blocked period" | "note" | "blocked-period">Type of the event
uidFilter<text | null>Identifier of the event in the original calendar
Partial<CalendarEvent>204The updated calendar events with the selected columns
PATCH /calendar_eventscurl -X PATCH "https://api.bookingmood.com/v1/calendar_events" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Occupancy limits per unit per occupancy group
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
maxintegerMaximum allowed occupancy
minintegerMinimum allowed occupancy
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"capacity_group_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.018Z",
"updated_at": "2025-10-24T22:43:35.018Z",
"max": 1,
"min": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
maxFilter<integer>Maximum allowed occupancy
minFilter<integer>Minimum allowed occupancy
200A list of capacities with the selected columns
206Partial Content
GET /capacitiescurl -X GET "https://api.bookingmood.com/v1/capacities?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Capacity> | Array<Partial<Capacity>>201The newly created capacities with the selected columns
POST /capacitiescurl -X POST "https://api.bookingmood.com/v1/capacities" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
maxFilter<integer>Maximum allowed occupancy
minFilter<integer>Minimum allowed occupancy
204The deleted capacities with the selected columns
DELETE /capacitiescurl -X DELETE "https://api.bookingmood.com/v1/capacities" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
maxFilter<integer>Maximum allowed occupancy
minFilter<integer>Minimum allowed occupancy
Partial<Capacity>204The updated capacities with the selected columns
PATCH /capacitiescurl -X PATCH "https://api.bookingmood.com/v1/capacities" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Dependencies between occupancy groups.
When booking, the value of the group referenced by accumulator_id will be set to the sum of the groups referenced by element_id.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"accumulator_id": "00000000-0000-0000-0000-000000000000",
"element_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.039Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of capacity group dependencies with the selected columns
206Partial Content
GET /capacity_group_dependenciescurl -X GET "https://api.bookingmood.com/v1/capacity_group_dependencies?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<CapacityGroupDependency> | Array<Partial<CapacityGroupDependency>>201The newly created capacity group dependencies with the selected columns
POST /capacity_group_dependenciescurl -X POST "https://api.bookingmood.com/v1/capacity_group_dependencies" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted capacity group dependencies with the selected columns
DELETE /capacity_group_dependenciescurl -X DELETE "https://api.bookingmood.com/v1/capacity_group_dependencies" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<CapacityGroupDependency>204The updated capacity group dependencies with the selected columns
PATCH /capacity_group_dependenciescurl -X PATCH "https://api.bookingmood.com/v1/capacity_group_dependencies" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Distinct groups that can occupy units. Useful for configuring separate prices & limits for adult / children / pets.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
descriptionMultiLanguageStringLocalized description
nameMultiLanguageStringLocalized name
name_singularMultiLanguageStringLocalized singular name
orderintegerOrder to display the capacity group in
requires_explicit_inputbooleanWhether guests need to explicitly fill in the capacity before booking
type"manual" | "sum"Type of the capacity group
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.055Z",
"updated_at": "2025-10-24T22:43:35.055Z",
"description": {
"default": "Hello",
"nl-NL": "Hallo"
},
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"name_singular": {
"default": "Hello",
"nl-NL": "Hallo"
},
"order": 1,
"requires_explicit_input": false,
"type": "manual"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<MultiLanguageString>Localized description
nameFilter<MultiLanguageString>Localized name
name_singularFilter<MultiLanguageString>Localized singular name
orderFilter<integer>Order to display the capacity group in
requires_explicit_inputFilter<boolean>Whether guests need to explicitly fill in the capacity before booking
typeFilter<"manual" | "sum">Type of the capacity group
200A list of capacity groups with the selected columns
206Partial Content
GET /capacity_groupscurl -X GET "https://api.bookingmood.com/v1/capacity_groups?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<CapacityGroup> | Array<Partial<CapacityGroup>>201The newly created capacity groups with the selected columns
POST /capacity_groupscurl -X POST "https://api.bookingmood.com/v1/capacity_groups" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<MultiLanguageString>Localized description
nameFilter<MultiLanguageString>Localized name
name_singularFilter<MultiLanguageString>Localized singular name
orderFilter<integer>Order to display the capacity group in
requires_explicit_inputFilter<boolean>Whether guests need to explicitly fill in the capacity before booking
typeFilter<"manual" | "sum">Type of the capacity group
204The deleted capacity groups with the selected columns
DELETE /capacity_groupscurl -X DELETE "https://api.bookingmood.com/v1/capacity_groups" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<MultiLanguageString>Localized description
nameFilter<MultiLanguageString>Localized name
name_singularFilter<MultiLanguageString>Localized singular name
orderFilter<integer>Order to display the capacity group in
requires_explicit_inputFilter<boolean>Whether guests need to explicitly fill in the capacity before booking
typeFilter<"manual" | "sum">Type of the capacity group
Partial<CapacityGroup>204The updated capacity groups with the selected columns
PATCH /capacity_groupscurl -X PATCH "https://api.bookingmood.com/v1/capacity_groups" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Link between contacts and bookings
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"contact_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.075Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of contact bookings with the selected columns
206Partial Content
GET /contact_bookingscurl -X GET "https://api.bookingmood.com/v1/contact_bookings?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ContactBooking> | Array<Partial<ContactBooking>>201The newly created contact bookings with the selected columns
POST /contact_bookingscurl -X POST "https://api.bookingmood.com/v1/contact_bookings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted contact bookings with the selected columns
DELETE /contact_bookingscurl -X DELETE "https://api.bookingmood.com/v1/contact_bookings" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<ContactBooking>204The updated contact bookings with the selected columns
PATCH /contact_bookingscurl -X PATCH "https://api.bookingmood.com/v1/contact_bookings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
addresstextConcatenation of the address fields
avatartext | nullURL of the avatar image
citytextCity of the contact
countrytextCountry of the contact
emailtextContact email address
first_nametextFirst name of the contact
ftstsvectorFull text search index
languageLanguage | nullLanguage of the contact
last_nametextLast name of the contact
metaArray<{ key: string; value: string }>nametextFull name of the contact
notestextphonetextContact phone number
provincetextProvince of the contact
statetextState of the contact
streettextStreet address of the contact
street2textStreet address of the contact
ziptextZip code of the contact
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"creator_id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.077Z",
"updated_at": "2025-10-24T22:43:35.077Z",
"address": "",
"avatar": "",
"city": "",
"country": "",
"email": "",
"first_name": "",
"language": "en-US",
"last_name": "",
"meta": [
{
"key": "key",
"value": "value"
}
],
"name": "",
"notes": "",
"phone": "",
"province": "",
"state": "",
"street": "",
"street2": "",
"zip": ""
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this contact is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
addressFilter<text>Concatenation of the address fields
avatarFilter<text | null>URL of the avatar image
cityFilter<text>City of the contact
countryFilter<text>Country of the contact
emailFilter<text>Contact email address
first_nameFilter<text>First name of the contact
ftsFilter<tsvector>Full text search index
languageFilter<Language | null>Language of the contact
last_nameFilter<text>Last name of the contact
metaFilter<Array<{ key: string; value: string }>>nameFilter<text>Full name of the contact
notesFilter<text>phoneFilter<text>Contact phone number
provinceFilter<text>Province of the contact
stateFilter<text>State of the contact
streetFilter<text>Street address of the contact
street2Filter<text>Street address of the contact
zipFilter<text>Zip code of the contact
200A list of contacts with the selected columns
206Partial Content
GET /contactscurl -X GET "https://api.bookingmood.com/v1/contacts?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Contact> | Array<Partial<Contact>>201The newly created contacts with the selected columns
POST /contactscurl -X POST "https://api.bookingmood.com/v1/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this contact is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
addressFilter<text>Concatenation of the address fields
avatarFilter<text | null>URL of the avatar image
cityFilter<text>City of the contact
countryFilter<text>Country of the contact
emailFilter<text>Contact email address
first_nameFilter<text>First name of the contact
ftsFilter<tsvector>Full text search index
languageFilter<Language | null>Language of the contact
last_nameFilter<text>Last name of the contact
metaFilter<Array<{ key: string; value: string }>>nameFilter<text>Full name of the contact
notesFilter<text>phoneFilter<text>Contact phone number
provinceFilter<text>Province of the contact
stateFilter<text>State of the contact
streetFilter<text>Street address of the contact
street2Filter<text>Street address of the contact
zipFilter<text>Zip code of the contact
204The deleted contacts with the selected columns
DELETE /contactscurl -X DELETE "https://api.bookingmood.com/v1/contacts" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this contact is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
addressFilter<text>Concatenation of the address fields
avatarFilter<text | null>URL of the avatar image
cityFilter<text>City of the contact
countryFilter<text>Country of the contact
emailFilter<text>Contact email address
first_nameFilter<text>First name of the contact
ftsFilter<tsvector>Full text search index
languageFilter<Language | null>Language of the contact
last_nameFilter<text>Last name of the contact
metaFilter<Array<{ key: string; value: string }>>nameFilter<text>Full name of the contact
notesFilter<text>phoneFilter<text>Contact phone number
provinceFilter<text>Province of the contact
stateFilter<text>State of the contact
streetFilter<text>Street address of the contact
street2Filter<text>Street address of the contact
zipFilter<text>Zip code of the contact
Partial<Contact>204The updated contacts with the selected columns
PATCH /contactscurl -X PATCH "https://api.bookingmood.com/v1/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Defines for which products a coupon applies. Only checked when coupon.scope is rent or product.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"coupon_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.084Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of coupon products with the selected columns
206Partial Content
GET /coupon_productscurl -X GET "https://api.bookingmood.com/v1/coupon_products?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<CouponProduct> | Array<Partial<CouponProduct>>201The newly created coupon products with the selected columns
POST /coupon_productscurl -X POST "https://api.bookingmood.com/v1/coupon_products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted coupon products with the selected columns
DELETE /coupon_productscurl -X DELETE "https://api.bookingmood.com/v1/coupon_products" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<CouponProduct>204The updated coupon products with the selected columns
PATCH /coupon_productscurl -X PATCH "https://api.bookingmood.com/v1/coupon_products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Defines for which services a coupon applies. Only checked when coupon.scope is service.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"coupon_id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.103Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of coupon services with the selected columns
206Partial Content
GET /coupon_servicescurl -X GET "https://api.bookingmood.com/v1/coupon_services?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<CouponService> | Array<Partial<CouponService>>201The newly created coupon services with the selected columns
POST /coupon_servicescurl -X POST "https://api.bookingmood.com/v1/coupon_services" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted coupon services with the selected columns
DELETE /coupon_servicescurl -X DELETE "https://api.bookingmood.com/v1/coupon_services" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<CouponService>204The updated coupon services with the selected columns
PATCH /coupon_servicescurl -X PATCH "https://api.bookingmood.com/v1/coupon_services" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Coupon usage in bookings
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"coupon_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.114Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of coupon uses with the selected columns
206Partial Content
GET /coupon_usescurl -X GET "https://api.bookingmood.com/v1/coupon_uses?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<CouponUse> | Array<Partial<CouponUse>>201The newly created coupon uses with the selected columns
POST /coupon_usescurl -X POST "https://api.bookingmood.com/v1/coupon_uses" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted coupon uses with the selected columns
DELETE /coupon_usescurl -X DELETE "https://api.bookingmood.com/v1/coupon_uses" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<CouponUse>204The updated coupon uses with the selected columns
PATCH /coupon_usescurl -X PATCH "https://api.bookingmood.com/v1/coupon_uses" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Codes guests can enter for additional discounts
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
deleted_attimestamp with time zone | nullTimestamp at which the coupon was deleted
codetextCoupon code
definitionPriceExpressionDefinition of the coupon
descriptiontextDescription of the coupon
ftstsvectorFull text search index
quotainteger | nullMaximum number of times this coupon can be used
scope"global" | "product" | "service" | "rent"Scope of the coupon
stackablebooleanJSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.115Z",
"updated_at": "2025-10-24T22:43:35.115Z",
"deleted_at": "2025-10-24T22:43:35.115Z",
"code": "",
"definition": {
"type": "absolute",
"restrictions": [],
"value": [
{
"value": 10,
"occupancy_group_id": null,
"period": null,
"variable": null
}
]
},
"description": "",
"quota": 0,
"scope": "global",
"stackable": true
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the coupon was deleted
codeFilter<text>Coupon code
definitionFilter<PriceExpression>Definition of the coupon
descriptionFilter<text>Description of the coupon
ftsFilter<tsvector>Full text search index
quotaFilter<integer | null>Maximum number of times this coupon can be used
scopeFilter<"global" | "product" | "service" | "rent">Scope of the coupon
stackableFilter<boolean>200A list of coupons with the selected columns
206Partial Content
GET /couponscurl -X GET "https://api.bookingmood.com/v1/coupons?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Coupon> | Array<Partial<Coupon>>201The newly created coupons with the selected columns
POST /couponscurl -X POST "https://api.bookingmood.com/v1/coupons" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the coupon was deleted
codeFilter<text>Coupon code
definitionFilter<PriceExpression>Definition of the coupon
descriptionFilter<text>Description of the coupon
ftsFilter<tsvector>Full text search index
quotaFilter<integer | null>Maximum number of times this coupon can be used
scopeFilter<"global" | "product" | "service" | "rent">Scope of the coupon
stackableFilter<boolean>204The deleted coupons with the selected columns
DELETE /couponscurl -X DELETE "https://api.bookingmood.com/v1/coupons" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the coupon was deleted
codeFilter<text>Coupon code
definitionFilter<PriceExpression>Definition of the coupon
descriptionFilter<text>Description of the coupon
ftsFilter<tsvector>Full text search index
quotaFilter<integer | null>Maximum number of times this coupon can be used
scopeFilter<"global" | "product" | "service" | "rent">Scope of the coupon
stackableFilter<boolean>Partial<Coupon>204The updated coupons with the selected columns
PATCH /couponscurl -X PATCH "https://api.bookingmood.com/v1/coupons" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Bounce, delivery and open events for emails
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
email_addresstextEmail address the email was sent to
event_type
| "processed"
| "dropped"
| "deferred"
| "bounce"
| "delivered"
| "open"
| "click"
| "spamreport"
| "unsubscribe"
| "group_unsubscribe"
| "group_resubscribe"Type of the event
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"email_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.119Z",
"email_address": "",
"event_type": ""
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
email_addressFilter<text>Email address the email was sent to
event_typeFilter<
| "processed"
| "dropped"
| "deferred"
| "bounce"
| "delivered"
| "open"
| "click"
| "spamreport"
| "unsubscribe"
| "group_unsubscribe"
| "group_resubscribe">Type of the event
200A list of email events with the selected columns
206Partial Content
GET /email_eventscurl -X GET "https://api.bookingmood.com/v1/email_events?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Re-usable email templates
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
attachmentsArray<{ filename: string; url: string; type: string }>List of attachments to include in the email
bodyMultiLanguageStringBody of the email
ftstsvectorFull text search index
include_booking_detailsbooleanWhether to include booking details in the email
include_booking_linkbooleanWhether to include a link to the booking status page in the email
include_ical_databooleanWhether to include an iCal attachment in the email
include_product_imagebooleanWhether to include a product image in the email
momentMomentExpression | nullMoment at which the email should be sent.
past_schedule_behavior"skip" | "send"Behavior when the message is created with a schedule in the past
status"CANCELLED" | "TENTATIVE" | "CONFIRMED"Whether the message will be scheduled for pending and confirmed events, or just for confirmed events
subjectMultiLanguageStringSubject of the email
timetime without time zone | nullTime at which the message should be sent
titletexttriggertext | nullTrigger of the email template
type"email" | "sms"Message type. email or sms
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.120Z",
"updated_at": "2025-10-24T22:43:35.120Z",
"attachments": [
{
"filename": "file",
"url": "https://example.com",
"type": "application/pdf"
}
],
"body": {
"default": "Hello",
"nl-NL": "Hallo"
},
"include_booking_details": false,
"include_booking_link": true,
"include_ical_data": false,
"include_product_image": false,
"moment": {
"type": "check-in",
"offset": 1
},
"past_schedule_behavior": "send''::text",
"status": "CONFIRMED",
"subject": {
"default": "Hello",
"nl-NL": "Hallo"
},
"time": null,
"title": "",
"trigger": "",
"type": "email"
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this email template is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentsFilter<Array<{ filename: string; url: string; type: string }>>List of attachments to include in the email
bodyFilter<MultiLanguageString>Body of the email
ftsFilter<tsvector>Full text search index
include_booking_detailsFilter<boolean>Whether to include booking details in the email
include_booking_linkFilter<boolean>Whether to include a link to the booking status page in the email
include_ical_dataFilter<boolean>Whether to include an iCal attachment in the email
include_product_imageFilter<boolean>Whether to include a product image in the email
momentFilter<MomentExpression | null>Moment at which the email should be sent.
past_schedule_behaviorFilter<"skip" | "send">Behavior when the message is created with a schedule in the past
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Whether the message will be scheduled for pending and confirmed events, or just for confirmed events
subjectFilter<MultiLanguageString>Subject of the email
timeFilter<time without time zone | null>Time at which the message should be sent
titleFilter<text>triggerFilter<text | null>Trigger of the email template
typeFilter<"email" | "sms">Message type. email or sms
200A list of email templates with the selected columns
206Partial Content
GET /email_templatescurl -X GET "https://api.bookingmood.com/v1/email_templates?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<EmailTemplate> | Array<Partial<EmailTemplate>>201The newly created email templates with the selected columns
POST /email_templatescurl -X POST "https://api.bookingmood.com/v1/email_templates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this email template is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentsFilter<Array<{ filename: string; url: string; type: string }>>List of attachments to include in the email
bodyFilter<MultiLanguageString>Body of the email
ftsFilter<tsvector>Full text search index
include_booking_detailsFilter<boolean>Whether to include booking details in the email
include_booking_linkFilter<boolean>Whether to include a link to the booking status page in the email
include_ical_dataFilter<boolean>Whether to include an iCal attachment in the email
include_product_imageFilter<boolean>Whether to include a product image in the email
momentFilter<MomentExpression | null>Moment at which the email should be sent.
past_schedule_behaviorFilter<"skip" | "send">Behavior when the message is created with a schedule in the past
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Whether the message will be scheduled for pending and confirmed events, or just for confirmed events
subjectFilter<MultiLanguageString>Subject of the email
timeFilter<time without time zone | null>Time at which the message should be sent
titleFilter<text>triggerFilter<text | null>Trigger of the email template
typeFilter<"email" | "sms">Message type. email or sms
204The deleted email templates with the selected columns
DELETE /email_templatescurl -X DELETE "https://api.bookingmood.com/v1/email_templates" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this email template is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentsFilter<Array<{ filename: string; url: string; type: string }>>List of attachments to include in the email
bodyFilter<MultiLanguageString>Body of the email
ftsFilter<tsvector>Full text search index
include_booking_detailsFilter<boolean>Whether to include booking details in the email
include_booking_linkFilter<boolean>Whether to include a link to the booking status page in the email
include_ical_dataFilter<boolean>Whether to include an iCal attachment in the email
include_product_imageFilter<boolean>Whether to include a product image in the email
momentFilter<MomentExpression | null>Moment at which the email should be sent.
past_schedule_behaviorFilter<"skip" | "send">Behavior when the message is created with a schedule in the past
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Whether the message will be scheduled for pending and confirmed events, or just for confirmed events
subjectFilter<MultiLanguageString>Subject of the email
timeFilter<time without time zone | null>Time at which the message should be sent
titleFilter<text>triggerFilter<text | null>Trigger of the email template
typeFilter<"email" | "sms">Message type. email or sms
Partial<EmailTemplate>204The updated email templates with the selected columns
PATCH /email_templatescurl -X PATCH "https://api.bookingmood.com/v1/email_templates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Emails scheduled or sent to guests
iduuidUnique identifier
booking_iduuid | nullemail_template_iduuid | nullIdentifier of the email template this email is based on
created_attimestamp with time zoneCreation timestamp
attachmentsArray<{ filename: string; url: string; type: string }> | nullList of attachments to include in the email
bodytextBody of the email
htmltext | nullHTML of the email
include_booking_detailsbooleanWhether booking details should be included in the email
include_booking_linkbooleanWhether a link to the booking status page should be included in the email
include_ical_databooleanWhether an iCal attachment should be included in the email
include_product_imagebooleanWhether a product image should be included in the email
send_attimestamp with time zoneTimestamp at which the email is sent or should be sent
status"manually-scheduled" | "scheduled-around-arrival" | "scheduled-around-departure" | "sent"Status of the email
subjecttextSubject of the email
type"email" | "sms"JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"calendar_event_id": "00000000-0000-0000-0000-000000000000",
"email_template_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.156Z",
"attachments": [
{
"filename": "file",
"url": "https://example.com",
"type": "application/pdf"
}
],
"body": "",
"html": "",
"include_booking_details": false,
"include_booking_link": false,
"include_ical_data": false,
"include_product_image": false,
"send_at": "2025-10-24T22:43:35.156Z",
"status": "sent",
"subject": "",
"type": "email"
}idFilter<uuid>Unique identifier
booking_idFilter<uuid | null>email_template_idFilter<uuid | null>Identifier of the email template this email is based on
created_atFilter<timestamp with time zone>Creation timestamp
attachmentsFilter<Array<{ filename: string; url: string; type: string }> | null>List of attachments to include in the email
bodyFilter<text>Body of the email
htmlFilter<text | null>HTML of the email
include_booking_detailsFilter<boolean>Whether booking details should be included in the email
include_booking_linkFilter<boolean>Whether a link to the booking status page should be included in the email
include_ical_dataFilter<boolean>Whether an iCal attachment should be included in the email
include_product_imageFilter<boolean>Whether a product image should be included in the email
send_atFilter<timestamp with time zone>Timestamp at which the email is sent or should be sent
statusFilter<"manually-scheduled" | "scheduled-around-arrival" | "scheduled-around-departure" | "sent">Status of the email
subjectFilter<text>Subject of the email
typeFilter<"email" | "sms">200A list of emails with the selected columns
206Partial Content
GET /emailscurl -X GET "https://api.bookingmood.com/v1/emails?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Calendars which are being imported. Useful for syncing bookings with services like Airbnb or booking.com.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zone | nullTimestamp at which the calendar last received new events
activebooleanWhether the external calendar is active
errortext | nullError message if the calendar could not be synced
event_status_sync"import" | "CONFIRMED" | "TENTATIVE"ical_urltextURL of the iCal feed
last_syncedtimestamp with time zone | nullTimestamp at which the calendar was last synced
nametext | nullName of the calendar
sync_requested_attimestamp with time zoneTimestamp at which a sync was last requested
time_offsetintegertldtextJSON
{
"id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.159Z",
"updated_at": "2025-10-24T22:43:35.159Z",
"active": true,
"error": "",
"event_status_sync": "import",
"ical_url": "",
"last_synced": "2025-10-24T22:43:35.159Z",
"name": "",
"sync_requested_at": "2025-10-24T22:43:35.159Z",
"time_offset": 0,
"tld": ""
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone | null>Timestamp at which the calendar last received new events
activeFilter<boolean>Whether the external calendar is active
errorFilter<text | null>Error message if the calendar could not be synced
event_status_syncFilter<"import" | "CONFIRMED" | "TENTATIVE">ical_urlFilter<text>URL of the iCal feed
last_syncedFilter<timestamp with time zone | null>Timestamp at which the calendar was last synced
nameFilter<text | null>Name of the calendar
sync_requested_atFilter<timestamp with time zone>Timestamp at which a sync was last requested
time_offsetFilter<integer>tldFilter<text>200A list of external calendars with the selected columns
206Partial Content
GET /external_calendarscurl -X GET "https://api.bookingmood.com/v1/external_calendars?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ExternalCalendar> | Array<Partial<ExternalCalendar>>201The newly created external calendars with the selected columns
POST /external_calendarscurl -X POST "https://api.bookingmood.com/v1/external_calendars" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone | null>Timestamp at which the calendar last received new events
activeFilter<boolean>Whether the external calendar is active
errorFilter<text | null>Error message if the calendar could not be synced
event_status_syncFilter<"import" | "CONFIRMED" | "TENTATIVE">ical_urlFilter<text>URL of the iCal feed
last_syncedFilter<timestamp with time zone | null>Timestamp at which the calendar was last synced
nameFilter<text | null>Name of the calendar
sync_requested_atFilter<timestamp with time zone>Timestamp at which a sync was last requested
time_offsetFilter<integer>tldFilter<text>204The deleted external calendars with the selected columns
DELETE /external_calendarscurl -X DELETE "https://api.bookingmood.com/v1/external_calendars" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone | null>Timestamp at which the calendar last received new events
activeFilter<boolean>Whether the external calendar is active
errorFilter<text | null>Error message if the calendar could not be synced
event_status_syncFilter<"import" | "CONFIRMED" | "TENTATIVE">ical_urlFilter<text>URL of the iCal feed
last_syncedFilter<timestamp with time zone | null>Timestamp at which the calendar was last synced
nameFilter<text | null>Name of the calendar
sync_requested_atFilter<timestamp with time zone>Timestamp at which a sync was last requested
time_offsetFilter<integer>tldFilter<text>Partial<ExternalCalendar>204The updated external calendars with the selected columns
PATCH /external_calendarscurl -X PATCH "https://api.bookingmood.com/v1/external_calendars" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Invoices for bookings
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
ftstsvectorreferencetextInvoice reference
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.176Z",
"updated_at": "2025-10-24T22:43:35.176Z",
"reference": ""
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this invoice is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
ftsFilter<tsvector>referenceFilter<text>Invoice reference
200A list of invoices with the selected columns
206Partial Content
GET /invoicescurl -X GET "https://api.bookingmood.com/v1/invoices?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Invoice> | Array<Partial<Invoice>>201The newly created invoices with the selected columns
POST /invoicescurl -X POST "https://api.bookingmood.com/v1/invoices" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this invoice is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
ftsFilter<tsvector>referenceFilter<text>Invoice reference
204The deleted invoices with the selected columns
DELETE /invoicescurl -X DELETE "https://api.bookingmood.com/v1/invoices" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this invoice is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
ftsFilter<tsvector>referenceFilter<text>Invoice reference
Partial<Invoice>204The updated invoices with the selected columns
PATCH /invoicescurl -X PATCH "https://api.bookingmood.com/v1/invoices" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Taxes applying on line items
iduuidUnique identifier
amountintegerAmount of the tax
nameMultiLanguageStringName of the tax
percentagerealPercentage of the tax
type"on-top" | "included"Type of the tax
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"line_item_id": "00000000-0000-0000-0000-000000000000",
"tax_id": "00000000-0000-0000-0000-000000000000",
"amount": 0,
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"percentage": 0,
"type": "on-top"
}idFilter<uuid>Unique identifier
amountFilter<integer>Amount of the tax
nameFilter<MultiLanguageString>Name of the tax
percentageFilter<real>Percentage of the tax
typeFilter<"on-top" | "included">Type of the tax
200A list of line item taxes with the selected columns
206Partial Content
GET /line_item_taxescurl -X GET "https://api.bookingmood.com/v1/line_item_taxes?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<LineItemTax> | Array<Partial<LineItemTax>>201The newly created line item taxes with the selected columns
POST /line_item_taxescurl -X POST "https://api.bookingmood.com/v1/line_item_taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
amountFilter<integer>Amount of the tax
nameFilter<MultiLanguageString>Name of the tax
percentageFilter<real>Percentage of the tax
typeFilter<"on-top" | "included">Type of the tax
204The deleted line item taxes with the selected columns
DELETE /line_item_taxescurl -X DELETE "https://api.bookingmood.com/v1/line_item_taxes" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
amountFilter<integer>Amount of the tax
nameFilter<MultiLanguageString>Name of the tax
percentageFilter<real>Percentage of the tax
typeFilter<"on-top" | "included">Type of the tax
Partial<LineItemTax>204The updated line item taxes with the selected columns
PATCH /line_item_taxescurl -X PATCH "https://api.bookingmood.com/v1/line_item_taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Invoice lines for booking invoices
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
amountintegerAmount of the line item
fee_type"fee" | "deposit"Type of the fee. fee or deposit
item_typetextType of the line item. Most commonly fee
nameMultiLanguageStringName of the line item
quantityintegerQuantity of the line item
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.182Z",
"updated_at": "2025-10-24T22:43:35.182Z",
"amount": 0,
"fee_type": "fee",
"item_type": "rent",
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"quantity": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Amount of the line item
fee_typeFilter<"fee" | "deposit">Type of the fee. fee or deposit
item_typeFilter<text>Type of the line item. Most commonly fee
nameFilter<MultiLanguageString>Name of the line item
quantityFilter<integer>Quantity of the line item
200A list of line items with the selected columns
206Partial Content
GET /line_itemscurl -X GET "https://api.bookingmood.com/v1/line_items?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<LineItem> | Array<Partial<LineItem>>201The newly created line items with the selected columns
POST /line_itemscurl -X POST "https://api.bookingmood.com/v1/line_items" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Amount of the line item
fee_typeFilter<"fee" | "deposit">Type of the fee. fee or deposit
item_typeFilter<text>Type of the line item. Most commonly fee
nameFilter<MultiLanguageString>Name of the line item
quantityFilter<integer>Quantity of the line item
204The deleted line items with the selected columns
DELETE /line_itemscurl -X DELETE "https://api.bookingmood.com/v1/line_items" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Amount of the line item
fee_typeFilter<"fee" | "deposit">Type of the fee. fee or deposit
item_typeFilter<text>Type of the line item. Most commonly fee
nameFilter<MultiLanguageString>Name of the line item
quantityFilter<integer>Quantity of the line item
Partial<LineItem>204The updated line items with the selected columns
PATCH /line_itemscurl -X PATCH "https://api.bookingmood.com/v1/line_items" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Organization members.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
role"user" | "admin" | "superuser"Role of the member
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.194Z",
"updated_at": "2025-10-24T22:43:35.194Z",
"role": "user"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
roleFilter<"user" | "admin" | "superuser">Role of the member
200A list of members with the selected columns
206Partial Content
GET /memberscurl -X GET "https://api.bookingmood.com/v1/members?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Invite a member to your organization. The member will receive an email with a link to accept the invitation. The member will have the user role. To make a member admin or superuser use the dashboard.
emailrequiredstringThe email address of the member to invite.
languageLanguageThe member's preferred language.
namestringThe name of the member to invite.
201The invited member with user profile information
POST /memberscurl -X POST "https://api.bookingmood.com/v1/members" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"email": "johndoe@example.com",
"name": "John Doe"
}'JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.196Z",
"updated_at": "2025-10-24T22:43:35.196Z",
"role": "user",
"user_profile": {
"referrer_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.196Z",
"updated_at": "2025-10-24T22:43:35.196Z",
"avatar": "",
"email": "",
"first_week_contains_date": 0,
"last_login_at": "2025-10-24T22:43:35.196Z",
"locale": "en-US",
"name": "",
"source": "",
"week_starts_on": 0
}
}Revoke a member from your organization. The member will no longer have access to your organization. Only works for members with the user role. To revoke an admin or superuser members use the dashboard.
idrequireduuidThe identifier of the member to revoke.
200The deleted member
DELETE /memberscurl -X DELETE "https://api.bookingmood.com/v1/members?id=00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY"Booking payments. Both planned, partially paid and paid.
iduuidUnique identifier
provider_idtext | nullcreated_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
amountintegerTotal amount of the payment
completed_attimestamp with time zone | nullTimestamp at which the payment was completed
currencyCurrencyCurrency of the payment
due_attimestamp with time zoneTimestamp at which the payment is due
is_paidbooleanofflinebooleanpaidintegerAmount of the payment that was paid
referencetextJSON
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "",
"created_at": "2025-10-24T22:43:35.198Z",
"updated_at": "2025-10-24T22:43:35.198Z",
"amount": 0,
"completed_at": "2025-10-24T22:43:35.198Z",
"currency": "USD",
"due_at": "2025-10-24T22:43:35.198Z",
"is_paid": false,
"offline": false,
"paid": 0,
"reference": ""
}idFilter<uuid>Unique identifier
provider_idFilter<text | null>created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Total amount of the payment
completed_atFilter<timestamp with time zone | null>Timestamp at which the payment was completed
currencyFilter<Currency>Currency of the payment
due_atFilter<timestamp with time zone>Timestamp at which the payment is due
is_paidFilter<boolean>offlineFilter<boolean>paidFilter<integer>Amount of the payment that was paid
referenceFilter<text>200A list of payments with the selected columns
206Partial Content
GET /paymentscurl -X GET "https://api.bookingmood.com/v1/payments?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Payment> | Array<Partial<Payment>>201The newly created payments with the selected columns
POST /paymentscurl -X POST "https://api.bookingmood.com/v1/payments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
provider_idFilter<text | null>created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Total amount of the payment
completed_atFilter<timestamp with time zone | null>Timestamp at which the payment was completed
currencyFilter<Currency>Currency of the payment
due_atFilter<timestamp with time zone>Timestamp at which the payment is due
is_paidFilter<boolean>offlineFilter<boolean>paidFilter<integer>Amount of the payment that was paid
referenceFilter<text>204The deleted payments with the selected columns
DELETE /paymentscurl -X DELETE "https://api.bookingmood.com/v1/payments" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
provider_idFilter<text | null>created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Total amount of the payment
completed_atFilter<timestamp with time zone | null>Timestamp at which the payment was completed
currencyFilter<Currency>Currency of the payment
due_atFilter<timestamp with time zone>Timestamp at which the payment is due
is_paidFilter<boolean>offlineFilter<boolean>paidFilter<integer>Amount of the payment that was paid
referenceFilter<text>Partial<Payment>204The updated payments with the selected columns
PATCH /paymentscurl -X PATCH "https://api.bookingmood.com/v1/payments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Access level for team members with the user role per unit.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
bookings"none" | "maintenance" | "view" | "manage"Bookings permission level
notifications"none" | "non-financial" | "all"Notifications permission level
permission"maintenance" | "view-bookings" | "manage-bookings" | "all"Permission level
settings"none" | "all"Settings permission level
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"member_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.223Z",
"updated_at": "2025-10-24T22:43:35.223Z",
"bookings": "view",
"notifications": "none",
"permission": "view-bookings",
"settings": "none"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
bookingsFilter<"none" | "maintenance" | "view" | "manage">Bookings permission level
notificationsFilter<"none" | "non-financial" | "all">Notifications permission level
permissionFilter<"maintenance" | "view-bookings" | "manage-bookings" | "all">Permission level
settingsFilter<"none" | "all">Settings permission level
200A list of permissions with the selected columns
206Partial Content
GET /permissionscurl -X GET "https://api.bookingmood.com/v1/permissions?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Permission> | Array<Partial<Permission>>201The newly created permissions with the selected columns
POST /permissionscurl -X POST "https://api.bookingmood.com/v1/permissions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
bookingsFilter<"none" | "maintenance" | "view" | "manage">Bookings permission level
notificationsFilter<"none" | "non-financial" | "all">Notifications permission level
permissionFilter<"maintenance" | "view-bookings" | "manage-bookings" | "all">Permission level
settingsFilter<"none" | "all">Settings permission level
204The deleted permissions with the selected columns
DELETE /permissionscurl -X DELETE "https://api.bookingmood.com/v1/permissions" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
bookingsFilter<"none" | "maintenance" | "view" | "manage">Bookings permission level
notificationsFilter<"none" | "non-financial" | "all">Notifications permission level
permissionFilter<"maintenance" | "view-bookings" | "manage-bookings" | "all">Permission level
settingsFilter<"none" | "all">Settings permission level
Partial<Permission>204The updated permissions with the selected columns
PATCH /permissionscurl -X PATCH "https://api.bookingmood.com/v1/permissions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Attribute options assigned to each unit
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"option_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.234Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of product attribute options with the selected columns
206Partial Content
GET /product_attribute_optionscurl -X GET "https://api.bookingmood.com/v1/product_attribute_options?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ProductAttributeOption> | Array<Partial<ProductAttributeOption>>201The newly created product attribute options with the selected columns
POST /product_attribute_optionscurl -X POST "https://api.bookingmood.com/v1/product_attribute_options" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted product attribute options with the selected columns
DELETE /product_attribute_optionscurl -X DELETE "https://api.bookingmood.com/v1/product_attribute_options" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<ProductAttributeOption>204The updated product attribute options with the selected columns
PATCH /product_attribute_optionscurl -X PATCH "https://api.bookingmood.com/v1/product_attribute_options" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Logs for each time the ical feed of a unit is read by an external platform
idbigintUnique identifier
created_attimestamp with time zoneCreation timestamp
paramsjsonbParams of the request
referrertextReferrer of the request
status"success" | "error"Status of the request
JSON
{
"id": 0,
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.236Z",
"params": {},
"referrer": "",
"status": "success"
}idFilter<bigint>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
paramsFilter<jsonb>Params of the request
referrerFilter<text>Referrer of the request
statusFilter<"success" | "error">Status of the request
200A list of product calendar logs with the selected columns
206Partial Content
GET /product_calendar_logscurl -X GET "https://api.bookingmood.com/v1/product_calendar_logs?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Rate and availability configurations. Applied per unit on multiple intervals
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
check_in_days[boolean, boolean, boolean, boolean, boolean, boolean, boolean]List of days of the week on which check-in is possible
checkout_days[boolean, boolean, boolean, boolean, boolean, boolean, boolean]List of days of the week on which check-out is possible
colortextColor to distinguish the configuration from others
ftstsvectorFull text search index
intervalsdatemultirangemax_advanceintegerMaximum number of days between booking and arrival
max_durationintegerMaximum duration of a booking in days
min_advanceintegerMinimum number of days between booking and arrival
min_durationintegerMinimum duration of a booking in days
nameMultiLanguageStringLocalized name
new_ratesArray<{ duration: number; occupancy: number; rate: number }>Rate per night on day X of a booking given some occupancy
orderintegerJSON
{
"id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.237Z",
"updated_at": "2025-10-24T22:43:35.237Z",
"check_in_days": [
true,
false,
true,
false,
true,
false,
true
],
"checkout_days": [
true,
false,
true,
false,
true,
false,
true
],
"color": "#FACC15",
"intervals": null,
"max_advance": 365,
"max_duration": 30,
"min_advance": 0,
"min_duration": 1,
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"new_rates": [
{
"duration": 1,
"occupancy": 1,
"rate": 1500
}
],
"order": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
check_in_daysFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean]>List of days of the week on which check-in is possible
checkout_daysFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean]>List of days of the week on which check-out is possible
colorFilter<text>Color to distinguish the configuration from others
ftsFilter<tsvector>Full text search index
intervalsFilter<datemultirange>max_advanceFilter<integer>Maximum number of days between booking and arrival
max_durationFilter<integer>Maximum duration of a booking in days
min_advanceFilter<integer>Minimum number of days between booking and arrival
min_durationFilter<integer>Minimum duration of a booking in days
nameFilter<MultiLanguageString>Localized name
new_ratesFilter<Array<{ duration: number; occupancy: number; rate: number }>>Rate per night on day X of a booking given some occupancy
orderFilter<integer>200A list of product configurations with the selected columns
206Partial Content
GET /product_configurationscurl -X GET "https://api.bookingmood.com/v1/product_configurations?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ProductConfiguration> | Array<Partial<ProductConfiguration>>201The newly created product configurations with the selected columns
POST /product_configurationscurl -X POST "https://api.bookingmood.com/v1/product_configurations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
check_in_daysFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean]>List of days of the week on which check-in is possible
checkout_daysFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean]>List of days of the week on which check-out is possible
colorFilter<text>Color to distinguish the configuration from others
ftsFilter<tsvector>Full text search index
intervalsFilter<datemultirange>max_advanceFilter<integer>Maximum number of days between booking and arrival
max_durationFilter<integer>Maximum duration of a booking in days
min_advanceFilter<integer>Minimum number of days between booking and arrival
min_durationFilter<integer>Minimum duration of a booking in days
nameFilter<MultiLanguageString>Localized name
new_ratesFilter<Array<{ duration: number; occupancy: number; rate: number }>>Rate per night on day X of a booking given some occupancy
orderFilter<integer>204The deleted product configurations with the selected columns
DELETE /product_configurationscurl -X DELETE "https://api.bookingmood.com/v1/product_configurations" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
check_in_daysFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean]>List of days of the week on which check-in is possible
checkout_daysFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean]>List of days of the week on which check-out is possible
colorFilter<text>Color to distinguish the configuration from others
ftsFilter<tsvector>Full text search index
intervalsFilter<datemultirange>max_advanceFilter<integer>Maximum number of days between booking and arrival
max_durationFilter<integer>Maximum duration of a booking in days
min_advanceFilter<integer>Minimum number of days between booking and arrival
min_durationFilter<integer>Minimum duration of a booking in days
nameFilter<MultiLanguageString>Localized name
new_ratesFilter<Array<{ duration: number; occupancy: number; rate: number }>>Rate per night on day X of a booking given some occupancy
orderFilter<integer>Partial<ProductConfiguration>204The updated product configurations with the selected columns
PATCH /product_configurationscurl -X PATCH "https://api.bookingmood.com/v1/product_configurations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Automated emails active per unit
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
orderintegerOrder of the email template as displayed in the admin
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"email_template_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.257Z",
"order": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
orderFilter<integer>Order of the email template as displayed in the admin
200A list of product email templates with the selected columns
206Partial Content
GET /product_email_templatescurl -X GET "https://api.bookingmood.com/v1/product_email_templates?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ProductEmailTemplate> | Array<Partial<ProductEmailTemplate>>201The newly created product email templates with the selected columns
POST /product_email_templatescurl -X POST "https://api.bookingmood.com/v1/product_email_templates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
orderFilter<integer>Order of the email template as displayed in the admin
204The deleted product email templates with the selected columns
DELETE /product_email_templatescurl -X DELETE "https://api.bookingmood.com/v1/product_email_templates" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
orderFilter<integer>Order of the email template as displayed in the admin
Partial<ProductEmailTemplate>204The updated product email templates with the selected columns
PATCH /product_email_templatescurl -X PATCH "https://api.bookingmood.com/v1/product_email_templates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Reply-to addresses per unit
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"reply_to_address_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.260Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of product reply to addresses with the selected columns
206Partial Content
GET /product_reply_to_addressescurl -X GET "https://api.bookingmood.com/v1/product_reply_to_addresses?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ProductReplyToAddresse> | Array<Partial<ProductReplyToAddresse>>201The newly created product reply to addresses with the selected columns
POST /product_reply_to_addressescurl -X POST "https://api.bookingmood.com/v1/product_reply_to_addresses" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted product reply to addresses with the selected columns
DELETE /product_reply_to_addressescurl -X DELETE "https://api.bookingmood.com/v1/product_reply_to_addresses" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<ProductReplyToAddresse>204The updated product reply to addresses with the selected columns
PATCH /product_reply_to_addressescurl -X PATCH "https://api.bookingmood.com/v1/product_reply_to_addresses" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Services included in the booking form of a unit
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
orderintegerOrder of the service in the booking form of the unit
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.262Z",
"updated_at": "2025-10-24T22:43:35.262Z",
"order": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<integer>Order of the service in the booking form of the unit
200A list of product services with the selected columns
206Partial Content
GET /product_servicescurl -X GET "https://api.bookingmood.com/v1/product_services?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ProductService> | Array<Partial<ProductService>>201The newly created product services with the selected columns
POST /product_servicescurl -X POST "https://api.bookingmood.com/v1/product_services" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<integer>Order of the service in the booking form of the unit
204The deleted product services with the selected columns
DELETE /product_servicescurl -X DELETE "https://api.bookingmood.com/v1/product_services" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<integer>Order of the service in the booking form of the unit
Partial<ProductService>204The updated product services with the selected columns
PATCH /product_servicescurl -X PATCH "https://api.bookingmood.com/v1/product_services" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Tasks required for all bookings for a unit
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
labeltextLabel of the task
momentMomentExpressionMoment at which the task should be completed
status"CANCELLED" | "TENTATIVE" | "CONFIRMED"Whether the task only applies to confirmed events, or also to pending events
timetime without time zone | nullTime at which the task should be scheduled
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"assignee_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.264Z",
"updated_at": "2025-10-24T22:43:35.264Z",
"label": "",
"moment": {
"type": "check-in",
"offset": 1
},
"status": "CONFIRMED",
"time": null
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
labelFilter<text>Label of the task
momentFilter<MomentExpression>Moment at which the task should be completed
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Whether the task only applies to confirmed events, or also to pending events
timeFilter<time without time zone | null>Time at which the task should be scheduled
200A list of product tasks with the selected columns
206Partial Content
GET /product_taskscurl -X GET "https://api.bookingmood.com/v1/product_tasks?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ProductTask> | Array<Partial<ProductTask>>201The newly created product tasks with the selected columns
POST /product_taskscurl -X POST "https://api.bookingmood.com/v1/product_tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
labelFilter<text>Label of the task
momentFilter<MomentExpression>Moment at which the task should be completed
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Whether the task only applies to confirmed events, or also to pending events
timeFilter<time without time zone | null>Time at which the task should be scheduled
204The deleted product tasks with the selected columns
DELETE /product_taskscurl -X DELETE "https://api.bookingmood.com/v1/product_tasks" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
labelFilter<text>Label of the task
momentFilter<MomentExpression>Moment at which the task should be completed
statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Whether the task only applies to confirmed events, or also to pending events
timeFilter<time without time zone | null>Time at which the task should be scheduled
Partial<ProductTask>204The updated product tasks with the selected columns
PATCH /product_taskscurl -X PATCH "https://api.bookingmood.com/v1/product_tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Units that can be booked individually
iduuidUnique identifier
ac_idtext | nullIdentifier for products imported from AvailabilityCalendar.com
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
deleted_attimestamp with time zone | nullTimestamp at which the unit was deleted
approximate_addresstextApproximate address of the unit
approximate_coordinatesCoordinates | nullCoordinates of the approximate address
cancel_after_initial_payment_errorbooleanconfirm_after_initial_paymentbooleanWhether to automatically confirm the booking after the initial payment. Only applies when interaction is request
confirmation_messageMultiLanguageStringMessage to show to the customer after submitting a booking from a widget or website
confirmation_message_titleMultiLanguageStringcooldown_timeintegerMinimum number of days between bookings
ctaMultiLanguageStringCall to action shown at the bottom of the booking form
currencyCurrencyCurrency bookings are made in
descriptionMultiLanguageStringLocalized description
exact_addresstextExact address of the unit
exact_coordinatesCoordinates | nullCoordinates of the exact address
ftstsvectorFull text search index
hide_exact_addressbooleanWhether to hide the exact address from customers before bookings are confirmed
ical_export_secrettextSecret used to generate iCal feed URLs
ical_export_secret_no_detailstextSecret used to generate iCal feed URLs without booking details
imagesArray<ProductImage>List of images
interaction"request" | "book"Interaction type, either request or book
latest_arrival_timetime without time zone | nullnameMultiLanguageStringLocalized name
payment_expiration_durationintegerprice_breakdown_specificity"combined" | "separate"rent_period"daily" | "nightly"Rent period of the unit
rent_pricing_definition"configurations" | "pricelabs" | "service"Pricing definition of the unit. Either configuration or services
request_status"CANCELLED" | "TENTATIVE" | "CONFIRMED"Status of new bookings. Only applies when interaction is request
tentative_interactiontextInteraction type on tentative intervals, either request or book
timezonetextTimezone of the unit
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"ac_id": "",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.276Z",
"updated_at": "2025-10-24T22:43:35.276Z",
"deleted_at": "2025-10-24T22:43:35.276Z",
"approximate_address": "",
"approximate_coordinates": {
"lat": 52.379189,
"lng": 4.899431
},
"cancel_after_initial_payment_error": false,
"confirm_after_initial_payment": false,
"confirmation_message": {
"default": "Hello",
"nl-NL": "Hallo"
},
"confirmation_message_title": {
"default": "Hello",
"nl-NL": "Hallo"
},
"cooldown_time": 0,
"cta": {
"default": "Hello",
"nl-NL": "Hallo"
},
"currency": "USD",
"description": {
"default": "Hello",
"nl-NL": "Hallo"
},
"exact_address": "",
"exact_coordinates": {
"lat": 52.379189,
"lng": 4.899431
},
"hide_exact_address": false,
"ical_export_secret": "md5((random())::text)",
"ical_export_secret_no_details": "md5((random())::text)",
"images": [
{
"alt": {
"default": "Image"
},
"size": "1x1",
"src": "https://example.com/image.jpg"
}
],
"interaction": "request",
"latest_arrival_time": null,
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"payment_expiration_duration": 0,
"price_breakdown_specificity": "combined",
"rent_period": "nightly",
"rent_pricing_definition": "configurations",
"request_status": "TENTATIVE",
"tentative_interaction": "request",
"timezone": "UTC"
}idFilter<uuid>Unique identifier
ac_idFilter<text | null>Identifier for products imported from AvailabilityCalendar.com
organization_idFilter<uuid>Identifier of the organization this product is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the unit was deleted
approximate_addressFilter<text>Approximate address of the unit
approximate_coordinatesFilter<Coordinates | null>Coordinates of the approximate address
cancel_after_initial_payment_errorFilter<boolean>confirm_after_initial_paymentFilter<boolean>Whether to automatically confirm the booking after the initial payment. Only applies when interaction is request
confirmation_messageFilter<MultiLanguageString>Message to show to the customer after submitting a booking from a widget or website
confirmation_message_titleFilter<MultiLanguageString>cooldown_timeFilter<integer>Minimum number of days between bookings
ctaFilter<MultiLanguageString>Call to action shown at the bottom of the booking form
currencyFilter<Currency>Currency bookings are made in
descriptionFilter<MultiLanguageString>Localized description
exact_addressFilter<text>Exact address of the unit
exact_coordinatesFilter<Coordinates | null>Coordinates of the exact address
ftsFilter<tsvector>Full text search index
hide_exact_addressFilter<boolean>Whether to hide the exact address from customers before bookings are confirmed
ical_export_secretFilter<text>Secret used to generate iCal feed URLs
ical_export_secret_no_detailsFilter<text>Secret used to generate iCal feed URLs without booking details
imagesFilter<Array<ProductImage>>List of images
interactionFilter<"request" | "book">Interaction type, either request or book
latest_arrival_timeFilter<time without time zone | null>nameFilter<MultiLanguageString>Localized name
payment_expiration_durationFilter<integer>price_breakdown_specificityFilter<"combined" | "separate">rent_periodFilter<"daily" | "nightly">Rent period of the unit
rent_pricing_definitionFilter<"configurations" | "pricelabs" | "service">Pricing definition of the unit. Either configuration or services
request_statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Status of new bookings. Only applies when interaction is request
tentative_interactionFilter<text>Interaction type on tentative intervals, either request or book
timezoneFilter<text>Timezone of the unit
200A list of products with the selected columns
206Partial Content
GET /productscurl -X GET "https://api.bookingmood.com/v1/products?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
ac_idFilter<text | null>Identifier for products imported from AvailabilityCalendar.com
organization_idFilter<uuid>Identifier of the organization this product is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the unit was deleted
approximate_addressFilter<text>Approximate address of the unit
approximate_coordinatesFilter<Coordinates | null>Coordinates of the approximate address
cancel_after_initial_payment_errorFilter<boolean>confirm_after_initial_paymentFilter<boolean>Whether to automatically confirm the booking after the initial payment. Only applies when interaction is request
confirmation_messageFilter<MultiLanguageString>Message to show to the customer after submitting a booking from a widget or website
confirmation_message_titleFilter<MultiLanguageString>cooldown_timeFilter<integer>Minimum number of days between bookings
ctaFilter<MultiLanguageString>Call to action shown at the bottom of the booking form
currencyFilter<Currency>Currency bookings are made in
descriptionFilter<MultiLanguageString>Localized description
exact_addressFilter<text>Exact address of the unit
exact_coordinatesFilter<Coordinates | null>Coordinates of the exact address
ftsFilter<tsvector>Full text search index
hide_exact_addressFilter<boolean>Whether to hide the exact address from customers before bookings are confirmed
ical_export_secretFilter<text>Secret used to generate iCal feed URLs
ical_export_secret_no_detailsFilter<text>Secret used to generate iCal feed URLs without booking details
imagesFilter<Array<ProductImage>>List of images
interactionFilter<"request" | "book">Interaction type, either request or book
latest_arrival_timeFilter<time without time zone | null>nameFilter<MultiLanguageString>Localized name
payment_expiration_durationFilter<integer>price_breakdown_specificityFilter<"combined" | "separate">rent_periodFilter<"daily" | "nightly">Rent period of the unit
rent_pricing_definitionFilter<"configurations" | "pricelabs" | "service">Pricing definition of the unit. Either configuration or services
request_statusFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">Status of new bookings. Only applies when interaction is request
tentative_interactionFilter<text>Interaction type on tentative intervals, either request or book
timezoneFilter<text>Timezone of the unit
Partial<Product>204The updated products with the selected columns
PATCH /productscurl -X PATCH "https://api.bookingmood.com/v1/products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Register a new product in your organization. This action will automatically update your subscription.
nameMultiLanguageStringLocalized name
rent_period"daily" | "nightly"Rent period of the unit
timezonetextTimezone of the unit
201The newly created product
POST /productscurl -X POST "https://api.bookingmood.com/v1/products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"name": {},
"rent_period": "nightly",
"timezone": "UTC"
}'Delete a product from your organization. This will also delete all bookings for this product. Your subscription will be adjusted automatically. This action cannot be undone.
idrequireduuidThe identifier of the product to delete
200The deleted product
DELETE /productscurl -X DELETE "https://api.bookingmood.com/v1/products" \
-H "Authorization: Bearer YOUR_API_KEY"Reply-to email addresses
iduuidUnique identifier
organization_iduuidIdentifier of the organization this reply-to address is defined in
emailtextThe email address to send the reply to
nametextThe display name of email address to send the reply to
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"email": "",
"name": ""
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this reply-to address is defined in
emailFilter<text>The email address to send the reply to
nameFilter<text>The display name of email address to send the reply to
200A list of reply to addresses with the selected columns
206Partial Content
GET /reply_to_addressescurl -X GET "https://api.bookingmood.com/v1/reply_to_addresses?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ReplyToAddresse> | Array<Partial<ReplyToAddresse>>201The newly created reply to addresses with the selected columns
POST /reply_to_addressescurl -X POST "https://api.bookingmood.com/v1/reply_to_addresses" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this reply-to address is defined in
emailFilter<text>The email address to send the reply to
nameFilter<text>The display name of email address to send the reply to
204The deleted reply to addresses with the selected columns
DELETE /reply_to_addressescurl -X DELETE "https://api.bookingmood.com/v1/reply_to_addresses" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this reply-to address is defined in
emailFilter<text>The email address to send the reply to
nameFilter<text>The display name of email address to send the reply to
Partial<ReplyToAddresse>204The updated reply to addresses with the selected columns
PATCH /reply_to_addressescurl -X PATCH "https://api.bookingmood.com/v1/reply_to_addresses" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Season definitions. Useful for making re-usable pricing definitions
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
nameMultiLanguageStringLocalized name
valueSeasonExpression | nullList of intervals defining the season
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.297Z",
"updated_at": "2025-10-24T22:43:35.297Z",
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"value": {
"type": "recurring-date-range",
"intervals": [
{
"min": {
"month": 1,
"day": 1
},
"max": {
"month": 12,
"day": 31
}
}
]
}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
nameFilter<MultiLanguageString>Localized name
valueFilter<SeasonExpression | null>List of intervals defining the season
200A list of seasons with the selected columns
206Partial Content
GET /seasonscurl -X GET "https://api.bookingmood.com/v1/seasons?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Season> | Array<Partial<Season>>201The newly created seasons with the selected columns
POST /seasonscurl -X POST "https://api.bookingmood.com/v1/seasons" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
nameFilter<MultiLanguageString>Localized name
valueFilter<SeasonExpression | null>List of intervals defining the season
204The deleted seasons with the selected columns
DELETE /seasonscurl -X DELETE "https://api.bookingmood.com/v1/seasons" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
nameFilter<MultiLanguageString>Localized name
valueFilter<SeasonExpression | null>List of intervals defining the season
Partial<Season>204The updated seasons with the selected columns
PATCH /seasonscurl -X PATCH "https://api.bookingmood.com/v1/seasons" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Deposit schedule per service
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
momentMomentExpressionMoment at which the deposit should be paid
valuePriceExpressionValue of the deposit
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.318Z",
"updated_at": "2025-10-24T22:43:35.318Z",
"moment": {
"type": "check-in",
"offset": 1
},
"value": {
"type": "absolute",
"restrictions": [],
"value": [
{
"value": 10,
"occupancy_group_id": null,
"period": null,
"variable": null
}
]
}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
momentFilter<MomentExpression>Moment at which the deposit should be paid
valueFilter<PriceExpression>Value of the deposit
200A list of service deposit moments with the selected columns
206Partial Content
GET /service_deposit_momentscurl -X GET "https://api.bookingmood.com/v1/service_deposit_moments?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ServiceDepositMoment> | Array<Partial<ServiceDepositMoment>>201The newly created service deposit moments with the selected columns
POST /service_deposit_momentscurl -X POST "https://api.bookingmood.com/v1/service_deposit_moments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
momentFilter<MomentExpression>Moment at which the deposit should be paid
valueFilter<PriceExpression>Value of the deposit
204The deleted service deposit moments with the selected columns
DELETE /service_deposit_momentscurl -X DELETE "https://api.bookingmood.com/v1/service_deposit_moments" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
momentFilter<MomentExpression>Moment at which the deposit should be paid
valueFilter<PriceExpression>Value of the deposit
Partial<ServiceDepositMoment>204The updated service deposit moments with the selected columns
PATCH /service_deposit_momentscurl -X PATCH "https://api.bookingmood.com/v1/service_deposit_moments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"tax_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.322Z"
}idFilter<uuid>service_idFilter<uuid>tax_idFilter<uuid>created_atFilter<timestamp with time zone>200A list of service deposit taxes with the selected columns
206Partial Content
GET /service_deposit_taxescurl -X GET "https://api.bookingmood.com/v1/service_deposit_taxes?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ServiceDepositTax> | Array<Partial<ServiceDepositTax>>201The newly created service deposit taxes with the selected columns
POST /service_deposit_taxescurl -X POST "https://api.bookingmood.com/v1/service_deposit_taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>service_idFilter<uuid>tax_idFilter<uuid>created_atFilter<timestamp with time zone>204The deleted service deposit taxes with the selected columns
DELETE /service_deposit_taxescurl -X DELETE "https://api.bookingmood.com/v1/service_deposit_taxes" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>service_idFilter<uuid>tax_idFilter<uuid>created_atFilter<timestamp with time zone>Partial<ServiceDepositTax>204The updated service deposit taxes with the selected columns
PATCH /service_deposit_taxescurl -X PATCH "https://api.bookingmood.com/v1/service_deposit_taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Discounts per service
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
definitionPriceExpressionDefinition of the discount
nameMultiLanguageStringLocalized name
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.323Z",
"updated_at": "2025-10-24T22:43:35.323Z",
"definition": {
"type": "absolute",
"restrictions": [],
"value": [
{
"value": 10,
"occupancy_group_id": null,
"period": null,
"variable": null
}
]
},
"name": {
"default": "Hello",
"nl-NL": "Hallo"
}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
definitionFilter<PriceExpression>Definition of the discount
nameFilter<MultiLanguageString>Localized name
200A list of service discounts with the selected columns
206Partial Content
GET /service_discountscurl -X GET "https://api.bookingmood.com/v1/service_discounts?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ServiceDiscount> | Array<Partial<ServiceDiscount>>201The newly created service discounts with the selected columns
POST /service_discountscurl -X POST "https://api.bookingmood.com/v1/service_discounts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
definitionFilter<PriceExpression>Definition of the discount
nameFilter<MultiLanguageString>Localized name
204The deleted service discounts with the selected columns
DELETE /service_discountscurl -X DELETE "https://api.bookingmood.com/v1/service_discounts" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
definitionFilter<PriceExpression>Definition of the discount
nameFilter<MultiLanguageString>Localized name
Partial<ServiceDiscount>204The updated service discounts with the selected columns
PATCH /service_discountscurl -X PATCH "https://api.bookingmood.com/v1/service_discounts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Payment schedule per service
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
momentMomentExpressionMoment at which the payment should be made
valuePriceExpressionValue of the payment
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.334Z",
"updated_at": "2025-10-24T22:43:35.334Z",
"moment": {
"type": "check-in",
"offset": 1
},
"value": {
"type": "absolute",
"restrictions": [],
"value": [
{
"value": 10,
"occupancy_group_id": null,
"period": null,
"variable": null
}
]
}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
momentFilter<MomentExpression>Moment at which the payment should be made
valueFilter<PriceExpression>Value of the payment
200A list of service payment moments with the selected columns
206Partial Content
GET /service_payment_momentscurl -X GET "https://api.bookingmood.com/v1/service_payment_moments?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ServicePaymentMoment> | Array<Partial<ServicePaymentMoment>>201The newly created service payment moments with the selected columns
POST /service_payment_momentscurl -X POST "https://api.bookingmood.com/v1/service_payment_moments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
momentFilter<MomentExpression>Moment at which the payment should be made
valueFilter<PriceExpression>Value of the payment
204The deleted service payment moments with the selected columns
DELETE /service_payment_momentscurl -X DELETE "https://api.bookingmood.com/v1/service_payment_moments" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
momentFilter<MomentExpression>Moment at which the payment should be made
valueFilter<PriceExpression>Value of the payment
Partial<ServicePaymentMoment>204The updated service payment moments with the selected columns
PATCH /service_payment_momentscurl -X PATCH "https://api.bookingmood.com/v1/service_payment_moments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Taxes applying per service
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"service_id": "00000000-0000-0000-0000-000000000000",
"tax_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.337Z"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
200A list of service taxes with the selected columns
206Partial Content
GET /service_taxescurl -X GET "https://api.bookingmood.com/v1/service_taxes?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<ServiceTax> | Array<Partial<ServiceTax>>201The newly created service taxes with the selected columns
POST /service_taxescurl -X POST "https://api.bookingmood.com/v1/service_taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
204The deleted service taxes with the selected columns
DELETE /service_taxescurl -X DELETE "https://api.bookingmood.com/v1/service_taxes" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
Partial<ServiceTax>204The updated service taxes with the selected columns
PATCH /service_taxescurl -X PATCH "https://api.bookingmood.com/v1/service_taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Re-usable elements that can be included in the booking forms of units
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
attachmenttext | nulldepositPriceExpression | nullDeposit of the service
deposit_refund_momentMomentExpression | nulldeposit_refund_policyMultiLanguageStringdescriptionMultiLanguageStringLocalized description
ftstsvectorFull text search index
labelMultiLanguageStringLocalized label
metaPartial<ServiceMeta>Meta data of the service
ordersmallintIdentifier of the parent service. Only applicable for services with type 'multiple-choice-option'.
pricePriceExpression | nullPrice of the service
type
| "address"
| "checkbox"
| "contact-meta"
| "email"
| "long-text"
| "multiple-choice"
| "multiple-choice-option"
| "name"
| "number"
| "phone"
| "rent"
| "short-text"
| "statement"
| "time"Type of the service
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"parent_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.339Z",
"updated_at": "2025-10-24T22:43:35.339Z",
"attachment": "",
"deposit": {
"type": "absolute",
"restrictions": [],
"value": [
{
"value": 10,
"occupancy_group_id": null,
"period": null,
"variable": null
}
]
},
"deposit_refund_moment": {
"type": "check-in",
"offset": 1
},
"deposit_refund_policy": {
"default": "Hello",
"nl-NL": "Hallo"
},
"description": {
"default": "Hello",
"nl-NL": "Hallo"
},
"label": {
"default": "Hello",
"nl-NL": "Hallo"
},
"meta": {
"address_display": "single",
"address_segments": {
"city": "required",
"country": "required",
"phone_number_display": "international",
"province": "required",
"state": "required",
"street": "required",
"street2": "optional",
"zip": "required"
},
"max": 10,
"min": 1,
"multiple_choice_display": "dropdown",
"name_display": "single",
"required": true
},
"order": 0,
"price": {
"type": "absolute",
"restrictions": [],
"value": [
{
"value": 10,
"occupancy_group_id": null,
"period": null,
"variable": null
}
]
},
"type": ""
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this service is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentFilter<text | null>depositFilter<PriceExpression | null>Deposit of the service
deposit_refund_momentFilter<MomentExpression | null>deposit_refund_policyFilter<MultiLanguageString>descriptionFilter<MultiLanguageString>Localized description
ftsFilter<tsvector>Full text search index
labelFilter<MultiLanguageString>Localized label
metaFilter<Partial<ServiceMeta>>Meta data of the service
orderFilter<smallint>Identifier of the parent service. Only applicable for services with type 'multiple-choice-option'.
priceFilter<PriceExpression | null>Price of the service
typeFilter<
| "address"
| "checkbox"
| "contact-meta"
| "email"
| "long-text"
| "multiple-choice"
| "multiple-choice-option"
| "name"
| "number"
| "phone"
| "rent"
| "short-text"
| "statement"
| "time">Type of the service
200A list of services with the selected columns
206Partial Content
GET /servicescurl -X GET "https://api.bookingmood.com/v1/services?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Service> | Array<Partial<Service>>201The newly created services with the selected columns
POST /servicescurl -X POST "https://api.bookingmood.com/v1/services" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this service is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentFilter<text | null>depositFilter<PriceExpression | null>Deposit of the service
deposit_refund_momentFilter<MomentExpression | null>deposit_refund_policyFilter<MultiLanguageString>descriptionFilter<MultiLanguageString>Localized description
ftsFilter<tsvector>Full text search index
labelFilter<MultiLanguageString>Localized label
metaFilter<Partial<ServiceMeta>>Meta data of the service
orderFilter<smallint>Identifier of the parent service. Only applicable for services with type 'multiple-choice-option'.
priceFilter<PriceExpression | null>Price of the service
typeFilter<
| "address"
| "checkbox"
| "contact-meta"
| "email"
| "long-text"
| "multiple-choice"
| "multiple-choice-option"
| "name"
| "number"
| "phone"
| "rent"
| "short-text"
| "statement"
| "time">Type of the service
204The deleted services with the selected columns
DELETE /servicescurl -X DELETE "https://api.bookingmood.com/v1/services" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this service is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
attachmentFilter<text | null>depositFilter<PriceExpression | null>Deposit of the service
deposit_refund_momentFilter<MomentExpression | null>deposit_refund_policyFilter<MultiLanguageString>descriptionFilter<MultiLanguageString>Localized description
ftsFilter<tsvector>Full text search index
labelFilter<MultiLanguageString>Localized label
metaFilter<Partial<ServiceMeta>>Meta data of the service
orderFilter<smallint>Identifier of the parent service. Only applicable for services with type 'multiple-choice-option'.
priceFilter<PriceExpression | null>Price of the service
typeFilter<
| "address"
| "checkbox"
| "contact-meta"
| "email"
| "long-text"
| "multiple-choice"
| "multiple-choice-option"
| "name"
| "number"
| "phone"
| "rent"
| "short-text"
| "statement"
| "time">Type of the service
Partial<Service>204The updated services with the selected columns
PATCH /servicescurl -X PATCH "https://api.bookingmood.com/v1/services" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Listed units on a site
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
orderintegerOrder of the listing as displayed on the site
slugMultiLanguageStringSlug of the listing
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"site_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.353Z",
"updated_at": "2025-10-24T22:43:35.353Z",
"order": 0,
"slug": {
"default": "Hello",
"nl-NL": "Hallo"
}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<integer>Order of the listing as displayed on the site
slugFilter<MultiLanguageString>Slug of the listing
200A list of site listings with the selected columns
206Partial Content
GET /site_listingscurl -X GET "https://api.bookingmood.com/v1/site_listings?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<SiteListing> | Array<Partial<SiteListing>>201The newly created site listings with the selected columns
POST /site_listingscurl -X POST "https://api.bookingmood.com/v1/site_listings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<integer>Order of the listing as displayed on the site
slugFilter<MultiLanguageString>Slug of the listing
204The deleted site listings with the selected columns
DELETE /site_listingscurl -X DELETE "https://api.bookingmood.com/v1/site_listings" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<integer>Order of the listing as displayed on the site
slugFilter<MultiLanguageString>Slug of the listing
Partial<SiteListing>204The updated site listings with the selected columns
PATCH /site_listingscurl -X PATCH "https://api.bookingmood.com/v1/site_listings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Items in the navigation bar of a site
iduuidUnique identifier
site_page_iduuid | nullIdentifier of the related page. Only applies when type is internal
created_attimestamp with time zoneCreation timestamp
labelMultiLanguageStringLocalized label of the navigation item
orderintegerOrder of the navigation item as displayed on the site
target"_blank" | "_self"Where the link is opened (_self, or _blank)
urlMultiLanguageStringURL of the navigation item. Only applies when type is external
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"parent_id": "00000000-0000-0000-0000-000000000000",
"site_id": "00000000-0000-0000-0000-000000000000",
"site_page_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.356Z",
"label": {
"default": "Hello",
"nl-NL": "Hallo"
},
"order": 0,
"target": "_self",
"url": {
"default": "Hello",
"nl-NL": "Hallo"
}
}idFilter<uuid>Unique identifier
site_page_idFilter<uuid | null>Identifier of the related page. Only applies when type is internal
created_atFilter<timestamp with time zone>Creation timestamp
labelFilter<MultiLanguageString>Localized label of the navigation item
orderFilter<integer>Order of the navigation item as displayed on the site
targetFilter<"_blank" | "_self">Where the link is opened (_self, or _blank)
urlFilter<MultiLanguageString>URL of the navigation item. Only applies when type is external
200A list of site nav items with the selected columns
206Partial Content
GET /site_nav_itemscurl -X GET "https://api.bookingmood.com/v1/site_nav_items?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<SiteNavItem> | Array<Partial<SiteNavItem>>201The newly created site nav items with the selected columns
POST /site_nav_itemscurl -X POST "https://api.bookingmood.com/v1/site_nav_items" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
site_page_idFilter<uuid | null>Identifier of the related page. Only applies when type is internal
created_atFilter<timestamp with time zone>Creation timestamp
labelFilter<MultiLanguageString>Localized label of the navigation item
orderFilter<integer>Order of the navigation item as displayed on the site
targetFilter<"_blank" | "_self">Where the link is opened (_self, or _blank)
urlFilter<MultiLanguageString>URL of the navigation item. Only applies when type is external
204The deleted site nav items with the selected columns
DELETE /site_nav_itemscurl -X DELETE "https://api.bookingmood.com/v1/site_nav_items" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
site_page_idFilter<uuid | null>Identifier of the related page. Only applies when type is internal
created_atFilter<timestamp with time zone>Creation timestamp
labelFilter<MultiLanguageString>Localized label of the navigation item
orderFilter<integer>Order of the navigation item as displayed on the site
targetFilter<"_blank" | "_self">Where the link is opened (_self, or _blank)
urlFilter<MultiLanguageString>URL of the navigation item. Only applies when type is external
Partial<SiteNavItem>204The updated site nav items with the selected columns
PATCH /site_nav_itemscurl -X PATCH "https://api.bookingmood.com/v1/site_nav_items" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Additional pages on a site
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
custom_htmltextdescriptionMultiLanguageStringLocalized description of the page
nodeSiteNodeslugMultiLanguageStringSlug of the page
status"draft" | "published"Publication status of the page
titleMultiLanguageStringLocalized title of the page
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"site_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.359Z",
"updated_at": "2025-10-24T22:43:35.359Z",
"custom_html": "",
"description": {
"default": "Hello",
"nl-NL": "Hallo"
},
"node": {},
"slug": {
"default": "Hello",
"nl-NL": "Hallo"
},
"status": "draft",
"title": {
"default": "Hello",
"nl-NL": "Hallo"
}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
custom_htmlFilter<text>descriptionFilter<MultiLanguageString>Localized description of the page
nodeFilter<SiteNode>slugFilter<MultiLanguageString>Slug of the page
statusFilter<"draft" | "published">Publication status of the page
titleFilter<MultiLanguageString>Localized title of the page
200A list of site pages with the selected columns
206Partial Content
GET /site_pagescurl -X GET "https://api.bookingmood.com/v1/site_pages?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<SitePage> | Array<Partial<SitePage>>201The newly created site pages with the selected columns
POST /site_pagescurl -X POST "https://api.bookingmood.com/v1/site_pages" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
custom_htmlFilter<text>descriptionFilter<MultiLanguageString>Localized description of the page
nodeFilter<SiteNode>slugFilter<MultiLanguageString>Slug of the page
statusFilter<"draft" | "published">Publication status of the page
titleFilter<MultiLanguageString>Localized title of the page
204The deleted site pages with the selected columns
DELETE /site_pagescurl -X DELETE "https://api.bookingmood.com/v1/site_pages" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
custom_htmlFilter<text>descriptionFilter<MultiLanguageString>Localized description of the page
nodeFilter<SiteNode>slugFilter<MultiLanguageString>Slug of the page
statusFilter<"draft" | "published">Publication status of the page
titleFilter<MultiLanguageString>Localized title of the page
Partial<SitePage>204The updated site pages with the selected columns
PATCH /site_pagescurl -X PATCH "https://api.bookingmood.com/v1/site_pages" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Logs of each pageview for a site
idintegerUnique identifier
created_attimestamp with time zoneCreation timestamp
countrytext | nullCountry of the view
pathnametextPathname of the page
referertext | nullReferer of the view
sessionuuidSession identifier
JSON
{
"id": 0,
"site_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.363Z",
"country": "",
"pathname": "",
"referer": "",
"session": "00000000-0000-0000-0000-000000000000"
}idFilter<integer>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
countryFilter<text | null>Country of the view
pathnameFilter<text>Pathname of the page
refererFilter<text | null>Referer of the view
sessionFilter<uuid>Session identifier
200A list of site views with the selected columns
206Partial Content
GET /site_viewscurl -X GET "https://api.bookingmood.com/v1/site_views?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Websites, either single-unit or catalog sites.
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
autocomplete_date_selectionbooleanWhether to autocomplete the date selection when only one date is available
color_backgroundtextBackground color of the site
color_bookedtextcolor_closedtextcolor_errortextError color of the site
color_headertextcolor_infotextcolor_primarytextPrimary color of the site
color_texttextText color of the site
color_unavailabletextcolor_warningtextcovertext | nullURL of the cover image
currencyCurrencyCurrency of the site
custom_domaintext | nullCustom domain of the site
custom_htmltextdate_visibility"all" | "hide-unavailable" | "hide-closed" | "custom"Visible dates in the calendar. Either all or available
filterstext[]Filters to show in the search bar
first_week_contains_date1 | 4 | nullFirst week of the year. Either 1 (first week with a Thursday) or 4 (first week with a Monday)
fonttext | nullFont of the site
icontext | nullURL of the icon image
initial_date"today" | "next-open" | "next-available"Initial date shown in the calendar
interval_wrap_style"square" | "jagged"Style of the interval when wrapping weeks
logotext | nullURL of the logo image
logo_alttext | nullAlt text of the logo image
nameMultiLanguageStringLocalized name
password_hashtext | nullHash of the password required to access the site
pricing_versiontextrate_location"inline" | "tooltip"Location where rates are shown in the calendar. Either inline or tooltip
rate_visibility"all" | "available" | "none"Visibility of rates in the calendar. Either all, available or none
redirect_urltext | nullrelated_productsjsonb | nullshow_booked_as"booked" | "unavailable"show_brandingbooleanWhether to show the Bookingmood branding
show_closed_as"closed" | "unavailable"show_legendbooleanWhether to show a legend in the calendar
show_organization_description_sectionbooleanWhether to show the organization description section
show_pending_as"CANCELLED" | "TENTATIVE" | "CONFIRMED"show_pricingbooleanshow_totalsbooleanWhether to show totals in the calendar
show_unavailable_resultsbooleansubdomaintextSubdomain of the site
type"listing-site" | "single-unit-site"Type of the site, either single-unit-site or listing-site
week_starts_on0 | 1 | nullFirst day of the week. Either 1 or 0
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.373Z",
"updated_at": "2025-10-24T22:43:35.373Z",
"autocomplete_date_selection": false,
"color_background": "#fff",
"color_booked": "#faa5a5",
"color_closed": "#f5f5f5",
"color_error": "#faa5a5",
"color_header": "#000",
"color_info": "#2463eb",
"color_primary": "#22c55e",
"color_text": "#000",
"color_unavailable": "#faa5a5",
"color_warning": "#a75c03",
"cover": "",
"currency": "USD",
"custom_domain": "",
"custom_html": "",
"date_visibility": "all",
"filters": [
""
],
"first_week_contains_date": 0,
"font": "",
"icon": "",
"initial_date": "today",
"interval_wrap_style": "square",
"logo": "",
"logo_alt": "",
"name": {
"default": "Hello",
"nl-NL": "Hallo"
},
"password_hash": "",
"pricing_version": "V0",
"rate_location": "inline",
"rate_visibility": "available",
"redirect_url": "",
"related_products": {},
"show_booked_as": "unavailable",
"show_branding": true,
"show_closed_as": "closed",
"show_legend": true,
"show_organization_description_section": true,
"show_pending_as": "TENTATIVE",
"show_pricing": true,
"show_totals": true,
"show_unavailable_results": true,
"subdomain": "",
"type": "listing-site",
"week_starts_on": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
autocomplete_date_selectionFilter<boolean>Whether to autocomplete the date selection when only one date is available
color_backgroundFilter<text>Background color of the site
color_bookedFilter<text>color_closedFilter<text>color_errorFilter<text>Error color of the site
color_headerFilter<text>color_infoFilter<text>color_primaryFilter<text>Primary color of the site
color_textFilter<text>Text color of the site
color_unavailableFilter<text>color_warningFilter<text>coverFilter<text | null>URL of the cover image
currencyFilter<Currency>Currency of the site
custom_domainFilter<text | null>Custom domain of the site
custom_htmlFilter<text>date_visibilityFilter<"all" | "hide-unavailable" | "hide-closed" | "custom">Visible dates in the calendar. Either all or available
filtersFilter<text[]>Filters to show in the search bar
first_week_contains_dateFilter<1 | 4 | null>First week of the year. Either 1 (first week with a Thursday) or 4 (first week with a Monday)
fontFilter<text | null>Font of the site
iconFilter<text | null>URL of the icon image
initial_dateFilter<"today" | "next-open" | "next-available">Initial date shown in the calendar
interval_wrap_styleFilter<"square" | "jagged">Style of the interval when wrapping weeks
logoFilter<text | null>URL of the logo image
logo_altFilter<text | null>Alt text of the logo image
nameFilter<MultiLanguageString>Localized name
password_hashFilter<text | null>Hash of the password required to access the site
pricing_versionFilter<text>rate_locationFilter<"inline" | "tooltip">Location where rates are shown in the calendar. Either inline or tooltip
rate_visibilityFilter<"all" | "available" | "none">Visibility of rates in the calendar. Either all, available or none
redirect_urlFilter<text | null>related_productsFilter<jsonb | null>show_booked_asFilter<"booked" | "unavailable">show_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<"closed" | "unavailable">show_legendFilter<boolean>Whether to show a legend in the calendar
show_organization_description_sectionFilter<boolean>Whether to show the organization description section
show_pending_asFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">show_pricingFilter<boolean>show_totalsFilter<boolean>Whether to show totals in the calendar
show_unavailable_resultsFilter<boolean>subdomainFilter<text>Subdomain of the site
typeFilter<"listing-site" | "single-unit-site">Type of the site, either single-unit-site or listing-site
week_starts_onFilter<0 | 1 | null>First day of the week. Either 1 or 0
200A list of sites with the selected columns
206Partial Content
GET /sitescurl -X GET "https://api.bookingmood.com/v1/sites?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
autocomplete_date_selectionFilter<boolean>Whether to autocomplete the date selection when only one date is available
color_backgroundFilter<text>Background color of the site
color_bookedFilter<text>color_closedFilter<text>color_errorFilter<text>Error color of the site
color_headerFilter<text>color_infoFilter<text>color_primaryFilter<text>Primary color of the site
color_textFilter<text>Text color of the site
color_unavailableFilter<text>color_warningFilter<text>coverFilter<text | null>URL of the cover image
currencyFilter<Currency>Currency of the site
custom_domainFilter<text | null>Custom domain of the site
custom_htmlFilter<text>date_visibilityFilter<"all" | "hide-unavailable" | "hide-closed" | "custom">Visible dates in the calendar. Either all or available
filtersFilter<text[]>Filters to show in the search bar
first_week_contains_dateFilter<1 | 4 | null>First week of the year. Either 1 (first week with a Thursday) or 4 (first week with a Monday)
fontFilter<text | null>Font of the site
iconFilter<text | null>URL of the icon image
initial_dateFilter<"today" | "next-open" | "next-available">Initial date shown in the calendar
interval_wrap_styleFilter<"square" | "jagged">Style of the interval when wrapping weeks
logoFilter<text | null>URL of the logo image
logo_altFilter<text | null>Alt text of the logo image
nameFilter<MultiLanguageString>Localized name
password_hashFilter<text | null>Hash of the password required to access the site
pricing_versionFilter<text>rate_locationFilter<"inline" | "tooltip">Location where rates are shown in the calendar. Either inline or tooltip
rate_visibilityFilter<"all" | "available" | "none">Visibility of rates in the calendar. Either all, available or none
redirect_urlFilter<text | null>related_productsFilter<jsonb | null>show_booked_asFilter<"booked" | "unavailable">show_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<"closed" | "unavailable">show_legendFilter<boolean>Whether to show a legend in the calendar
show_organization_description_sectionFilter<boolean>Whether to show the organization description section
show_pending_asFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">show_pricingFilter<boolean>show_totalsFilter<boolean>Whether to show totals in the calendar
show_unavailable_resultsFilter<boolean>subdomainFilter<text>Subdomain of the site
typeFilter<"listing-site" | "single-unit-site">Type of the site, either single-unit-site or listing-site
week_starts_onFilter<0 | 1 | null>First day of the week. Either 1 or 0
Partial<Site>204The updated sites with the selected columns
PATCH /sitescurl -X PATCH "https://api.bookingmood.com/v1/sites" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Re-usable tax definitions
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
ftstsvector | nullFull text search index
labelMultiLanguageStringLocalized label
percentagerealPercentage of the tax
type"on-top" | "included"Type of the tax. Either on-top or included
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.413Z",
"updated_at": "2025-10-24T22:43:35.413Z",
"label": {
"default": "Hello",
"nl-NL": "Hallo"
},
"percentage": 0,
"type": "on-top"
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
ftsFilter<tsvector | null>Full text search index
labelFilter<MultiLanguageString>Localized label
percentageFilter<real>Percentage of the tax
typeFilter<"on-top" | "included">Type of the tax. Either on-top or included
200A list of taxes with the selected columns
206Partial Content
GET /taxescurl -X GET "https://api.bookingmood.com/v1/taxes?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Tax> | Array<Partial<Tax>>201The newly created taxes with the selected columns
POST /taxescurl -X POST "https://api.bookingmood.com/v1/taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
ftsFilter<tsvector | null>Full text search index
labelFilter<MultiLanguageString>Localized label
percentageFilter<real>Percentage of the tax
typeFilter<"on-top" | "included">Type of the tax. Either on-top or included
204The deleted taxes with the selected columns
DELETE /taxescurl -X DELETE "https://api.bookingmood.com/v1/taxes" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
ftsFilter<tsvector | null>Full text search index
labelFilter<MultiLanguageString>Localized label
percentageFilter<real>Percentage of the tax
typeFilter<"on-top" | "included">Type of the tax. Either on-top or included
Partial<Tax>204The updated taxes with the selected columns
PATCH /taxescurl -X PATCH "https://api.bookingmood.com/v1/taxes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'User profiles
referrer_iduuid | nulluser_iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
avatartext | nullURL of the avatar image
emailtextUser email address
first_week_contains_date1 | 4 | nullFirst week of the year. Either 1 (first week with a Thursday) or 4 (first week with a Monday)
ftstsvectorFull text search index
last_login_attimestamp with time zone | nullTimestamp at which the user last logged in
localeLanguageUser language
nametext | nullUser name
sourcetext | nullSource of the user
week_starts_on0 | 1 | nullFirst day of the week. Either 1 or 0
JSON
{
"referrer_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.416Z",
"updated_at": "2025-10-24T22:43:35.416Z",
"avatar": "",
"email": "",
"first_week_contains_date": 0,
"last_login_at": "2025-10-24T22:43:35.416Z",
"locale": "en-US",
"name": "",
"source": "",
"week_starts_on": 0
}referrer_idFilter<uuid | null>user_idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
avatarFilter<text | null>URL of the avatar image
emailFilter<text>User email address
first_week_contains_dateFilter<1 | 4 | null>First week of the year. Either 1 (first week with a Thursday) or 4 (first week with a Monday)
ftsFilter<tsvector>Full text search index
last_login_atFilter<timestamp with time zone | null>Timestamp at which the user last logged in
localeFilter<Language>User language
nameFilter<text | null>User name
sourceFilter<text | null>Source of the user
week_starts_onFilter<0 | 1 | null>First day of the week. Either 1 or 0
200A list of user profiles with the selected columns
206Partial Content
GET /user_profilescurl -X GET "https://api.bookingmood.com/v1/user_profiles?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"referrer_idFilter<uuid | null>user_idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
avatarFilter<text | null>URL of the avatar image
emailFilter<text>User email address
first_week_contains_dateFilter<1 | 4 | null>First week of the year. Either 1 (first week with a Thursday) or 4 (first week with a Monday)
ftsFilter<tsvector>Full text search index
last_login_atFilter<timestamp with time zone | null>Timestamp at which the user last logged in
localeFilter<Language>User language
nameFilter<text | null>User name
sourceFilter<text | null>Source of the user
week_starts_onFilter<0 | 1 | null>First day of the week. Either 1 or 0
Partial<UserProfile>204The updated user profiles with the selected columns
PATCH /user_profilescurl -X PATCH "https://api.bookingmood.com/v1/user_profiles" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Notifications sent and scheduled per webhook
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
event_typetextEvent this notification is for
payloadjsonbJSON payload that is sent along with this notification
responsetext | nullStored response
status"pending" | "sent" | "error"Notification status. Either pending, sent or error
triesintegerAmount of times this webhook notification has been tried to be delivered
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"webhook_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.419Z",
"updated_at": "2025-10-24T22:43:35.419Z",
"event_type": "",
"payload": {},
"response": "",
"status": "pending",
"tries": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
event_typeFilter<text>Event this notification is for
payloadFilter<jsonb>JSON payload that is sent along with this notification
responseFilter<text | null>Stored response
statusFilter<"pending" | "sent" | "error">Notification status. Either pending, sent or error
triesFilter<integer>Amount of times this webhook notification has been tried to be delivered
200A list of webhook notifications with the selected columns
206Partial Content
GET /webhook_notificationscurl -X GET "https://api.bookingmood.com/v1/webhook_notifications?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Webhooks are a messaging mechanism that allow you to get notified on an endpoint of your choice as soon as certain events happen in Bookingmood.
For more information on the webhook mechanics, see our documentation
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
descriptiontextAn optional description of the webhook
endpointtextURL to which notifications should be sent
eventstext[]Events to which the webhook is subscribed. For possible values, see a complete list
signing_secrettextString used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications.
sourcetextFrom where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier.
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.421Z",
"updated_at": "2025-10-24T22:43:35.421Z",
"description": "",
"endpoint": "",
"events": [
""
],
"signing_secret": "md5((random())::text)",
"source": ""
}idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this webhook is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<text>An optional description of the webhook
endpointFilter<text>URL to which notifications should be sent
eventsFilter<text[]>Events to which the webhook is subscribed. For possible values, see a complete list
signing_secretFilter<text>String used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications.
sourceFilter<text>From where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier.
200A list of webhooks with the selected columns
206Partial Content
GET /webhookscurl -X GET "https://api.bookingmood.com/v1/webhooks?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Webhook> | Array<Partial<Webhook>>201The newly created webhooks with the selected columns
POST /webhookscurl -X POST "https://api.bookingmood.com/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this webhook is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<text>An optional description of the webhook
endpointFilter<text>URL to which notifications should be sent
eventsFilter<text[]>Events to which the webhook is subscribed. For possible values, see a complete list
signing_secretFilter<text>String used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications.
sourceFilter<text>From where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier.
204The deleted webhooks with the selected columns
DELETE /webhookscurl -X DELETE "https://api.bookingmood.com/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this webhook is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<text>An optional description of the webhook
endpointFilter<text>URL to which notifications should be sent
eventsFilter<text[]>Events to which the webhook is subscribed. For possible values, see a complete list
signing_secretFilter<text>String used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications.
sourceFilter<text>From where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier.
Partial<Webhook>204The updated webhooks with the selected columns
PATCH /webhookscurl -X PATCH "https://api.bookingmood.com/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Units listed in a widget
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
ordersmallintOrder of the listing as displayed in the widget
urlMultiLanguageStringURL of the listing. Only applies when widget.interaction is forward
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"widget_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.424Z",
"updated_at": "2025-10-24T22:43:35.424Z",
"order": 0,
"url": {
"default": "Hello",
"nl-NL": "Hallo"
}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<smallint>Order of the listing as displayed in the widget
urlFilter<MultiLanguageString>URL of the listing. Only applies when widget.interaction is forward
200A list of widget listings with the selected columns
206Partial Content
GET /widget_listingscurl -X GET "https://api.bookingmood.com/v1/widget_listings?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<WidgetListing> | Array<Partial<WidgetListing>>201The newly created widget listings with the selected columns
POST /widget_listingscurl -X POST "https://api.bookingmood.com/v1/widget_listings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<smallint>Order of the listing as displayed in the widget
urlFilter<MultiLanguageString>URL of the listing. Only applies when widget.interaction is forward
204The deleted widget listings with the selected columns
DELETE /widget_listingscurl -X DELETE "https://api.bookingmood.com/v1/widget_listings" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
orderFilter<smallint>Order of the listing as displayed in the widget
urlFilter<MultiLanguageString>URL of the listing. Only applies when widget.interaction is forward
Partial<WidgetListing>204The updated widget listings with the selected columns
PATCH /widget_listingscurl -X PATCH "https://api.bookingmood.com/v1/widget_listings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Logs for each widget view
idbigintUnique identifier
created_attimestamp with time zoneCreation timestamp
countrytext | nullCountry of the view
created_ondate | nullreferertext | nullReferer of the view
status"success" | "tier-insufficient" | "inactive"Status of the widget view
JSON
{
"id": 0,
"widget_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.435Z",
"country": "",
"created_on": null,
"referer": "",
"status": "success"
}idFilter<bigint>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
countryFilter<text | null>Country of the view
created_onFilter<date | null>refererFilter<text | null>Referer of the view
statusFilter<"success" | "tier-insufficient" | "inactive">Status of the widget view
200A list of widget views with the selected columns
206Partial Content
GET /widget_viewscurl -X GET "https://api.bookingmood.com/v1/widget_views?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Embeddable widgets
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
autocomplete_date_selectionbooleanWhether to autocomplete the date selection when only one date is available
currencyCurrency | nullCurrency of the widget
date_visibility"all" | "hide-unavailable" | "hide-closed" | "custom"Visible dates in the calendar. Either all or available
fonttext | nullFont of the widget
ftstsvector | nullFull text search index
initial_date"today" | "next-open" | "next-available"Initial date shown in the calendar
interaction"forward" | "book" | nullInteraction type, either "book", "forward" or null
localeLanguageLanguage of the widget
redirect_urltext | nullURL to redirect to after submitting a booking
settingsWidgetSettingsSettings of the widget
show_booked_as"booked" | "unavailable"show_bookingmood_brandingbooleanWhether to show the Bookingmood branding
show_closed_as"closed" | "unavailable"show_pastbooleanWhether to show past dates in the calendar
show_pending_as"CANCELLED" | "TENTATIVE" | "CONFIRMED"show_reviewsbooleanstay_expandedbooleanWhether the date-selection section should stay expanded after selecting dates
titletextTitle of the widget
type
| "calendar"
| "timeline"
| "inventory"
| "search"Type of the widget, either calendar, timeline, inventory or search.
visible_monthsboolean[] | nullList of months that are visible in the calendar (deprecated).
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-24T22:43:35.437Z",
"updated_at": "2025-10-24T22:43:35.437Z",
"autocomplete_date_selection": false,
"currency": "USD",
"date_visibility": "all",
"font": "",
"initial_date": "today",
"interaction": "",
"locale": "en-US",
"redirect_url": "",
"settings": {},
"show_booked_as": "unavailable",
"show_bookingmood_branding": true,
"show_closed_as": "unavailable",
"show_past": false,
"show_pending_as": "TENTATIVE",
"show_reviews": false,
"stay_expanded": false,
"title": "",
"type": "calendar",
"visible_months": [
false
]
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
autocomplete_date_selectionFilter<boolean>Whether to autocomplete the date selection when only one date is available
currencyFilter<Currency | null>Currency of the widget
date_visibilityFilter<"all" | "hide-unavailable" | "hide-closed" | "custom">Visible dates in the calendar. Either all or available
fontFilter<text | null>Font of the widget
ftsFilter<tsvector | null>Full text search index
initial_dateFilter<"today" | "next-open" | "next-available">Initial date shown in the calendar
interactionFilter<"forward" | "book" | null>Interaction type, either "book", "forward" or null
localeFilter<Language>Language of the widget
redirect_urlFilter<text | null>URL to redirect to after submitting a booking
settingsFilter<WidgetSettings>Settings of the widget
show_booked_asFilter<"booked" | "unavailable">show_bookingmood_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<"closed" | "unavailable">show_pastFilter<boolean>Whether to show past dates in the calendar
show_pending_asFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">show_reviewsFilter<boolean>stay_expandedFilter<boolean>Whether the date-selection section should stay expanded after selecting dates
titleFilter<text>Title of the widget
typeFilter<
| "calendar"
| "timeline"
| "inventory"
| "search">Type of the widget, either calendar, timeline, inventory or search.
visible_monthsFilter<boolean[] | null>List of months that are visible in the calendar (deprecated).
200A list of widgets with the selected columns
206Partial Content
GET /widgetscurl -X GET "https://api.bookingmood.com/v1/widgets?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Partial<Widget> | Array<Partial<Widget>>201The newly created widgets with the selected columns
POST /widgetscurl -X POST "https://api.bookingmood.com/v1/widgets" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
autocomplete_date_selectionFilter<boolean>Whether to autocomplete the date selection when only one date is available
currencyFilter<Currency | null>Currency of the widget
date_visibilityFilter<"all" | "hide-unavailable" | "hide-closed" | "custom">Visible dates in the calendar. Either all or available
fontFilter<text | null>Font of the widget
ftsFilter<tsvector | null>Full text search index
initial_dateFilter<"today" | "next-open" | "next-available">Initial date shown in the calendar
interactionFilter<"forward" | "book" | null>Interaction type, either "book", "forward" or null
localeFilter<Language>Language of the widget
redirect_urlFilter<text | null>URL to redirect to after submitting a booking
settingsFilter<WidgetSettings>Settings of the widget
show_booked_asFilter<"booked" | "unavailable">show_bookingmood_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<"closed" | "unavailable">show_pastFilter<boolean>Whether to show past dates in the calendar
show_pending_asFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">show_reviewsFilter<boolean>stay_expandedFilter<boolean>Whether the date-selection section should stay expanded after selecting dates
titleFilter<text>Title of the widget
typeFilter<
| "calendar"
| "timeline"
| "inventory"
| "search">Type of the widget, either calendar, timeline, inventory or search.
visible_monthsFilter<boolean[] | null>List of months that are visible in the calendar (deprecated).
204The deleted widgets with the selected columns
DELETE /widgetscurl -X DELETE "https://api.bookingmood.com/v1/widgets" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
autocomplete_date_selectionFilter<boolean>Whether to autocomplete the date selection when only one date is available
currencyFilter<Currency | null>Currency of the widget
date_visibilityFilter<"all" | "hide-unavailable" | "hide-closed" | "custom">Visible dates in the calendar. Either all or available
fontFilter<text | null>Font of the widget
ftsFilter<tsvector | null>Full text search index
initial_dateFilter<"today" | "next-open" | "next-available">Initial date shown in the calendar
interactionFilter<"forward" | "book" | null>Interaction type, either "book", "forward" or null
localeFilter<Language>Language of the widget
redirect_urlFilter<text | null>URL to redirect to after submitting a booking
settingsFilter<WidgetSettings>Settings of the widget
show_booked_asFilter<"booked" | "unavailable">show_bookingmood_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<"closed" | "unavailable">show_pastFilter<boolean>Whether to show past dates in the calendar
show_pending_asFilter<"CANCELLED" | "TENTATIVE" | "CONFIRMED">show_reviewsFilter<boolean>stay_expandedFilter<boolean>Whether the date-selection section should stay expanded after selecting dates
titleFilter<text>Title of the widget
typeFilter<
| "calendar"
| "timeline"
| "inventory"
| "search">Type of the widget, either calendar, timeline, inventory or search.
visible_monthsFilter<boolean[] | null>List of months that are visible in the calendar (deprecated).
Partial<Widget>204The updated widgets with the selected columns
PATCH /widgetscurl -X PATCH "https://api.bookingmood.com/v1/widgets" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Fetch the availability of multiple products over a long period of time.
perform_syncbooleanWhether to sync external calendars before fetching availability. Defaults to false
product_idsArray<uuid>The product IDs to fetch availability for.
show_booked_as"booked" | "unavailable"How to interpret confirmed bookings. Defaults to unavailable
show_closed_as"closed" | "unavailable"How to interpret blocked / closed periods. Defaults to unavailable
show_pending_as"CANCELLED" | "TENTATIVE" | "CONFIRMED"How to interpret pending events. Defaults to TENTATIVE
200TypeScript
Array<{
product_id: uuid;
intervals: Array<{
start: string;
end: string;
status: "available" | "tentative" | "unavailable" | "booked" | "reserved";
}>
}>GET /availabilitycurl -X GET "https://api.bookingmood.com/v1/availability?product_id=00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY"JSON
[
{
"product_id": "00000000-0000-0000-0000-000000000000",
"intervals": [
{
"start": "2025-10-24T22:43:35.460Z",
"end": "2025-10-28T22:43:35.460Z",
"status": "unavailable"
},
{
"start": "2025-10-28T22:43:35.460Z",
"end": "2026-02-01T22:43:35.460Z",
"status": "available"
}
]
}
]Find the availability of multiple products for a given date range. Filter by occupancy and attribute options.
interval{ start: string, end: string }The interval to search for availability in. If not provided, search will check each product for a match with the other parameters.
occupancyRecord<uuid, integer>Filter search results by occupancy.
option_idsArray<uuid>Filter search results by attribute_options.
show_booked_as"booked" | "unavailable"How to interpret booked events. Defaults to unavailable
show_closed_as"closed" | "unavailable"How to interpret closed events. Defaults to unavailable
show_pending_as"CONFIRMED" | "TENTATIVE" | "CANCELLED"How to interpret pending events. Defaults to TENTATIVE
200TypeScript
Array<{
productId: uuid;
match: boolean;
occupancyMatches: boolean;
optionsMatch: boolean;
availability: "available" | "tentative" | "unavailable" | "booked" | "reserved";
price: { min: number, max: number } | null;
}>POST /searchcurl -X POST "https://api.bookingmood.com/v1/search" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'JSON
[
{
"productId": "00000000-0000-0000-0000-000000000000",
"match": false,
"occupancyMatches": true,
"optionsMatch": true,
"availability": "unavailable",
"price": {
"min": 100,
"max": 200
}
}
]Perform a booking.
coupon_codesArray<string>The coupon codes entered for the booking.
currencyCurrencyThe currency to use for the booking. Defaults to the product's currency. See the widget docs for the allowed values.
form_valuesRecord<uuid, uuid | text | number | boolean>Values for each of the form fields. The keys refer to services.id, the values should be valid values for each of these services.
intervalrequired{ start: string, end: string }The interval to book.
languageLanguageThe user's preferred language.
occupancyrequiredRecord<uuid, integer>The occupancy for each capacity group. The keys refer to capacity_groups.id, the values are the number of guests for that group.
product_idrequireduuidThe identifier of the product to book.
redirect_urluuidThe URL to redirect the user to after the booking is completed.
show_pending_as"CANCELLED" | "TENTATIVE" | "CONFIRMED"How to interpret pending events when checking if the booking is possible. Defaults to TENTATIVE
201Information identifying the booking. If a payment URL is set, the user should be redirected to that URL to complete the booking.
TypeScript
{
reference: uuid;
booking_id: uuid;
payment_url: string | null;
}POST /bookcurl -X POST "https://api.bookingmood.com/v1/book" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"product_id": "00000000-0000-0000-0000-000000000000",
"interval": {
"start": "2025-10-24",
"end": "2025-10-28"
},
"occupancy": {
"00000000-0000-0000-0000-000000000000": 1
}
}'JSON
{
"reference": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"payment_url": null
}