Widgets
Embeddable widgets
The widget object
Attributes
iduuidUnique identifier
created_atread-onlytimestamp with time zoneCreation timestamp
updated_atread-onlytimestamp 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_visibilityWidgetDateVisibilityWhich dates the calendar shows: all, hide-closed to hide closed dates, hide-unavailable to hide unavailable dates, or the deprecated custom to show selected months
enable_shopping_cartbooleanWhether guests can book multiple units at once
failure_urltextURL to redirect to when a payment fails. __BOOKING_PAGE__ shows the guest page
fonttext | nullFont of the widget
ftsread-onlytsvector | nullFull text search index
initial_dateWidgetInitialDateInitial date shown in the calendar
interactionChannelInteraction | nullWhat happens when a guest picks dates: book to book in the widget, or forward and forward-same-tab to open the listing URL in a new or the same tab
languageLanguageLanguage of the widget
redirect_urltext | nullURL to redirect to after submitting a booking
settingsCalendarWidgetSettings | TimelineWidgetSettings | InventoryWidgetSettings | SearchWidgetSettingsSettings of the widget
show_booked_asShowBookedAsHow to show booked dates
show_bookingmood_brandingbooleanWhether to show the Bookingmood branding
show_closed_asShowClosedAsHow to show closed dates
show_complex_pricesbooleanWhether guests can inspect seasonal prices in the calendar
show_pastbooleanWhether to show past dates in the calendar
show_pending_asCalendarEventStatusHow to interpret pending events
show_reviewsbooleanWhether to show reviews
stay_expandedbooleanWhether the date-selection section should stay expanded after selecting dates
titletextTitle of the widget
type"calendar" | "timeline" | "inventory" | "search"Type of the widget: calendar, timeline, inventory or search
visible_months[boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean] | nullMonths that are visible in the calendar. Deprecated
Related resources
Embed related resources in the response with the select parameter, for example select=*,organizations!organization_id(*). Resources related through more than one column need the column as a hint, like table!column(*).
organizations!organization_id(*)object | nullThe organization referenced by organization_id.
widget_listings(*)arrayThe widget listings referencing this widget through widget_listings.widget_id.
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.861Z",
"updated_at": "2026-10-30T22:27:57.861Z",
"autocomplete_date_selection": false,
"currency": "USD",
"date_visibility": "all",
"enable_shopping_cart": false,
"failure_url": "__BOOKING_PAGE__",
"font": "",
"initial_date": "today",
"interaction": "book",
"language": "en-US",
"redirect_url": "https://example.com",
"settings": {},
"show_booked_as": "unavailable",
"show_bookingmood_branding": true,
"show_closed_as": "unavailable",
"show_complex_prices": true,
"show_past": false,
"show_pending_as": "TENTATIVE",
"show_reviews": false,
"stay_expanded": false,
"title": "Summer cottage",
"type": "calendar",
"visible_months": [
false
]
}curl -X GET "https://api.bookingmood.com/v1/widgets?limit=10&select=*,organizations!organization_id(*),bookings(*)" \
-H "Authorization: Bearer YOUR_API_KEY"List widgets
Filters
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<WidgetDateVisibility>Which dates the calendar shows: all, hide-closed to hide closed dates, hide-unavailable to hide unavailable dates, or the deprecated custom to show selected months
enable_shopping_cartFilter<boolean>Whether guests can book multiple units at once
failure_urlFilter<text>URL to redirect to when a payment fails. __BOOKING_PAGE__ shows the guest page
fontFilter<text | null>Font of the widget
ftsFilter<tsvector | null>Full text search index
initial_dateFilter<WidgetInitialDate>Initial date shown in the calendar
interactionFilter<ChannelInteraction | null>What happens when a guest picks dates: book to book in the widget, or forward and forward-same-tab to open the listing URL in a new or the same tab
languageFilter<Language>Language of the widget
redirect_urlFilter<text | null>URL to redirect to after submitting a booking
settingsFilter<CalendarWidgetSettings | TimelineWidgetSettings | InventoryWidgetSettings | SearchWidgetSettings>Settings of the widget
show_booked_asFilter<ShowBookedAs>How to show booked dates
show_bookingmood_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<ShowClosedAs>How to show closed dates
show_complex_pricesFilter<boolean>Whether guests can inspect seasonal prices in the calendar
show_pastFilter<boolean>Whether to show past dates in the calendar
show_pending_asFilter<CalendarEventStatus>How to interpret pending events
show_reviewsFilter<boolean>Whether to show reviews
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: calendar, timeline, inventory or search
visible_monthsFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean] | null>Months that are visible in the calendar. Deprecated
Responses
200A list of widgets with the selected columns
206Partial Content
400The request is malformed, for example an unknown column or an invalid filter.
401The API key is missing or invalid.
code, message, details and hint. See the introduction for more on errors.GET /widgetscurl -X GET "https://api.bookingmood.com/v1/widgets?select=*&limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.861Z",
"updated_at": "2026-10-30T22:27:57.861Z",
"autocomplete_date_selection": false,
"currency": "USD",
"date_visibility": "all",
"enable_shopping_cart": false,
"failure_url": "__BOOKING_PAGE__",
"font": "",
"initial_date": "today",
"interaction": "book",
"language": "en-US",
"redirect_url": "https://example.com",
"settings": {},
"show_booked_as": "unavailable",
"show_bookingmood_branding": true,
"show_closed_as": "unavailable",
"show_complex_prices": true,
"show_past": false,
"show_pending_as": "TENTATIVE",
"show_reviews": false,
"stay_expanded": false,
"title": "Summer cottage",
"type": "calendar",
"visible_months": [
false
]
}
]Create widgets
Body
Partial<Widget> | Array<Partial<Widget>>Read-only attributes are set by the database and can't be written.
Responses
201The newly created widgets with the selected columns
400The request is malformed, for example an unknown column, an invalid filter or an invalid body.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
409The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.
code, message, details and hint. See the introduction for more on errors.POST /widgetscurl -X POST "https://api.bookingmood.com/v1/widgets" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"autocomplete_date_selection": false,
"date_visibility": "all",
"enable_shopping_cart": false,
"failure_url": "__BOOKING_PAGE__",
"initial_date": "today",
"language": "en-US",
"organization_id": "00000000-0000-0000-0000-000000000000",
"settings": {},
"show_booked_as": "unavailable",
"show_bookingmood_branding": true,
"show_closed_as": "unavailable",
"show_complex_prices": true,
"show_past": false,
"show_pending_as": "TENTATIVE",
"show_reviews": false,
"stay_expanded": false,
"title": "Summer cottage",
"type": "calendar"
}'[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.861Z",
"updated_at": "2026-10-30T22:27:57.861Z",
"autocomplete_date_selection": false,
"currency": "USD",
"date_visibility": "all",
"enable_shopping_cart": false,
"failure_url": "__BOOKING_PAGE__",
"font": "",
"initial_date": "today",
"interaction": "book",
"language": "en-US",
"redirect_url": "https://example.com",
"settings": {},
"show_booked_as": "unavailable",
"show_bookingmood_branding": true,
"show_closed_as": "unavailable",
"show_complex_prices": true,
"show_past": false,
"show_pending_as": "TENTATIVE",
"show_reviews": false,
"stay_expanded": false,
"title": "Summer cottage",
"type": "calendar",
"visible_months": [
false
]
}
]Delete widgets
Filters
Without filters, this request deletes all widgets you have access to. Always filter on at least one column, e.g. id=eq.{id}.
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<WidgetDateVisibility>Which dates the calendar shows: all, hide-closed to hide closed dates, hide-unavailable to hide unavailable dates, or the deprecated custom to show selected months
enable_shopping_cartFilter<boolean>Whether guests can book multiple units at once
failure_urlFilter<text>URL to redirect to when a payment fails. __BOOKING_PAGE__ shows the guest page
fontFilter<text | null>Font of the widget
ftsFilter<tsvector | null>Full text search index
initial_dateFilter<WidgetInitialDate>Initial date shown in the calendar
interactionFilter<ChannelInteraction | null>What happens when a guest picks dates: book to book in the widget, or forward and forward-same-tab to open the listing URL in a new or the same tab
languageFilter<Language>Language of the widget
redirect_urlFilter<text | null>URL to redirect to after submitting a booking
settingsFilter<CalendarWidgetSettings | TimelineWidgetSettings | InventoryWidgetSettings | SearchWidgetSettings>Settings of the widget
show_booked_asFilter<ShowBookedAs>How to show booked dates
show_bookingmood_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<ShowClosedAs>How to show closed dates
show_complex_pricesFilter<boolean>Whether guests can inspect seasonal prices in the calendar
show_pastFilter<boolean>Whether to show past dates in the calendar
show_pending_asFilter<CalendarEventStatus>How to interpret pending events
show_reviewsFilter<boolean>Whether to show reviews
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: calendar, timeline, inventory or search
visible_monthsFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean] | null>Months that are visible in the calendar. Deprecated
Responses
200The deleted widgets with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.
400The request is malformed, for example an unknown column or an invalid filter.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
code, message, details and hint. See the introduction for more on errors.DELETE /widgetscurl -X DELETE "https://api.bookingmood.com/v1/widgets?id=eq.00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.861Z",
"updated_at": "2026-10-30T22:27:57.861Z",
"autocomplete_date_selection": false,
"currency": "USD",
"date_visibility": "all",
"enable_shopping_cart": false,
"failure_url": "__BOOKING_PAGE__",
"font": "",
"initial_date": "today",
"interaction": "book",
"language": "en-US",
"redirect_url": "https://example.com",
"settings": {},
"show_booked_as": "unavailable",
"show_bookingmood_branding": true,
"show_closed_as": "unavailable",
"show_complex_prices": true,
"show_past": false,
"show_pending_as": "TENTATIVE",
"show_reviews": false,
"stay_expanded": false,
"title": "Summer cottage",
"type": "calendar",
"visible_months": [
false
]
}
]Update widgets
Filters
Without filters, this request updates all widgets you have access to. Always filter on at least one column, e.g. id=eq.{id}.
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<WidgetDateVisibility>Which dates the calendar shows: all, hide-closed to hide closed dates, hide-unavailable to hide unavailable dates, or the deprecated custom to show selected months
enable_shopping_cartFilter<boolean>Whether guests can book multiple units at once
failure_urlFilter<text>URL to redirect to when a payment fails. __BOOKING_PAGE__ shows the guest page
fontFilter<text | null>Font of the widget
ftsFilter<tsvector | null>Full text search index
initial_dateFilter<WidgetInitialDate>Initial date shown in the calendar
interactionFilter<ChannelInteraction | null>What happens when a guest picks dates: book to book in the widget, or forward and forward-same-tab to open the listing URL in a new or the same tab
languageFilter<Language>Language of the widget
redirect_urlFilter<text | null>URL to redirect to after submitting a booking
settingsFilter<CalendarWidgetSettings | TimelineWidgetSettings | InventoryWidgetSettings | SearchWidgetSettings>Settings of the widget
show_booked_asFilter<ShowBookedAs>How to show booked dates
show_bookingmood_brandingFilter<boolean>Whether to show the Bookingmood branding
show_closed_asFilter<ShowClosedAs>How to show closed dates
show_complex_pricesFilter<boolean>Whether guests can inspect seasonal prices in the calendar
show_pastFilter<boolean>Whether to show past dates in the calendar
show_pending_asFilter<CalendarEventStatus>How to interpret pending events
show_reviewsFilter<boolean>Whether to show reviews
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: calendar, timeline, inventory or search
visible_monthsFilter<[boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean] | null>Months that are visible in the calendar. Deprecated
Body
Partial<Widget>Read-only attributes are set by the database and can't be written.
Responses
200The updated widgets with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.
400The request is malformed, for example an unknown column, an invalid filter or an invalid body.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
409The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.
code, message, details and hint. See the introduction for more on errors.PATCH /widgetscurl -X PATCH "https://api.bookingmood.com/v1/widgets?id=eq.00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"autocomplete_date_selection": false
}'[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.861Z",
"updated_at": "2026-10-30T22:27:57.861Z",
"autocomplete_date_selection": false,
"currency": "USD",
"date_visibility": "all",
"enable_shopping_cart": false,
"failure_url": "__BOOKING_PAGE__",
"font": "",
"initial_date": "today",
"interaction": "book",
"language": "en-US",
"redirect_url": "https://example.com",
"settings": {},
"show_booked_as": "unavailable",
"show_bookingmood_branding": true,
"show_closed_as": "unavailable",
"show_complex_prices": true,
"show_past": false,
"show_pending_as": "TENTATIVE",
"show_reviews": false,
"stay_expanded": false,
"title": "Summer cottage",
"type": "calendar",
"visible_months": [
false
]
}
]