Skip to main content
A room type describes accommodation within a hotel. It includes its name, unit type, tier, occupancy, bed configuration, floor area, building, rules, amenities, and images. Localized fields return only the locale keys you select with Accept-Language. expand=hotel adds a hotel summary with id, name, and stars. Fetch the hotel detail endpoint for the full hotel object.

Availability

Every room type includes disabled. A value of true means you must exclude it from new room choices. Its detail remains available by ID. The room type list returns enabled room types by default (disabled=false). Request GET /api/v2/room-types?disabled=true to list disabled room types, or disabled=all to include both states. These filters apply before pagination and result totals. Draft room types are never returned. Both hotel endpoints include only enabled, non-draft rooms with expand=roomTypes. You can still fetch a disabled room directly by its id; the detail response includes disabled: true. When requesting archived rooms or a detail by ID, check this flag before offering the room to guests. A room type’s code can change. Store its id for references. A room being enabled does not guarantee availability for a particular stay.

Occupancy and beds

In room type responses, occupancy is an object. Its standard field is the number of guests included in the room type’s base price. It does not define the minimum number of guests. A room with four physical beds can have a standard occupancy of two. max is the configured maximum guest count, including extra beds. When present, it is at least standard. singleUse records whether the room is configured for sale to one guest. infantsExcluded records whether children aged 0–2 are configured not to count towards the guest count. Each of these fields is null when the room type has no configured value. An explicit false is a configured value. Indicative prices use standard where occupancy affects the amount. max, singleUse, and infantsExcluded describe the room configuration; they do not change priceFrom or establish availability for a guest party. bedConfiguration describes the physical beds separately. It lists positive counts in dictionary order with a singular localized label for each bed. An empty array means the bed configuration has not been described. size gives the minimum and maximum floor area in square metres. Both values are equal for a fixed area. Unknown or invalid sizes are null.

Names and labels

name is a single text value, for example "STANDARD 1/1 - IMP". It is the same in every language and does not depend on Accept-Language. It is not translated or composed from the room’s parameters. If no name is available, it is an empty string. The search filter matches this name without regard to case or diacritics. Use code to filter by a room type’s code. unitType, tier, and each bedConfiguration entry include localized labels. Unspecified unit types and tiers are null. amenityCategories lists the amenities assigned to the room type, grouped by category. See Assigned amenities for the structure and labels. Some amenities include coverage: all means every physical room in the category has the amenity; some means only some do. This field is returned only for amenities that declare it in the dictionary. See Coverage for supported amenities and examples. description is Markdown.

Included with this room

The inclusions amenity category contains the room’s assigned benefits: parking, welcome_drink, and fruit_bowl. Room parking includes the existing pricing field; included means parking is included in the room price. Labels use the same dictionary and expand=amenityLabels as other amenities. Empty categories are omitted. Room responses contain only the room’s own assignments. See Included with this room for response examples.

Buildings and rules

building contains the assigned building’s id, short name, and descriptive label. It is returned even when the hotel has only one building. Unassigned or removed buildings are null. Match building.id to an item in the hotel’s buildings array, which lists all configured buildings. The same building has the same id, name, and label in both responses when you request the same locales. rules.petsAllowed already includes the hotel’s pet policy. It is false when the hotel does not permit pets or has not provided a policy. When the hotel permits pets, the room’s rule applies; an unspecified room rule is null. rules.smokingAllowed is null when the room’s smoking rule is unspecified.

Filtering

The optional occupancy query parameter is an integer from 1 to 10. It filters by the exact value of occupancy.standard in the response. For example:
This request returns room types whose occupancy.standard is 2. The filter does not match maximum capacity or check whether a room can accommodate a specific guest party. unitType and tier accept comma-separated codes; each matches any listed code. amenities requires all listed amenity codes, while amenityCategory requires any amenity in that category. Unknown codes return 400.

Images

Images use the same responsive image fields as hotels, including when a hotel response embeds room types. Build srcset from the available variants, set sizes for your layout, and use an available variant as src, with url as the fallback. Do not construct missing URLs. See the images guide for a complete rendering example. Set intrinsic HTML width and height when both values are non-null. If dimensions are unavailable, both are null and variants is {}. Small originals can retain dimensions with no variants. alt uses the requested locale keys. Missing or null translations fall back to the room type’s name in each requested language, or null if the name is empty. Preserve "" for decorative images.

Fields

A type of accommodation within a hotel, with occupancy, amenities, rules, and images.

id
string
required
Pattern: ^[0-9a-fA-F]{24}$
Example:

"66f16191f739705faa020003"

hotelId
string
required
Pattern: ^[0-9a-fA-F]{24}$
Example:

"66f16191f739705faa020001"

code
string | null
required
Example:

"SUPERIOR-DBL"

disabled
boolean
required

True when this room type is disabled for new bookings. Existing bookings keep their references to the room type. The code does not indicate availability.

Example:

false

name
string
required

Single room type name, shared by all languages. Unaffected by Accept-Language. Empty string when no name is available.

Example:

"STANDARD 1/1 - IMP"

description
object
required

Localized description (Markdown).

Example:
unitType
object | null
required
tier
object | null
required
occupancy
object
required

Configured room occupancy details. Booking and pricing use standard occupancy; maximum capacity, single use and infant exclusion are informational settings.

bedConfiguration
object[]
required

Positive bed counts in dictionary order. Empty when unspecified.

size
object | null
required

Floor area in square metres. A fixed area has equal min and max.

renovationYear
integer | null
required

Renovation year, or null when missing or invalid (including more than five years in the future).

Required range: x >= 1800
rules
object
required
building
object | null
required

Assigned building, even for a hotel with one building. Null if unassigned or removed.

amenityCategories
object[]
required

Amenities assigned to the room type, grouped by category. See Assigned amenities. Room benefits use the inclusions category; see Included with this room.

images
object[]
required
hotel
object

Embedded only when expand=hotel.