Skip to content

GetRoomType

POST
/wink.partner.v1.Content/GetRoomType
curl --request POST \
--url https://example.com/wink.partner.v1.Content/GetRoomType \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "roomTypeId": "example", "languageCode": "example", "maxMedia": 1, "imageFormat": "example", "videoFormat": "example" }'

Get one room type by id

For filling a cache or following a deep link when you already hold a room_type_id from RoomTypeOffers. To render a whole property, prefer GetProperties with CONTENT_SCOPE_ROOM_TYPE — it returns every room type you can sell in one call, for the same one unit.

Costs one unit, the same as a fifty-property GetProperties. Three deep links cost three times what one batched call would; that is the intended pressure.

Returns NOT_FOUND for an unknown id, and INVALID_ARGUMENT when room_type_id is blank.

Media typeapplication/json

Request for GetRoomType.

object
roomTypeId

Room type to fetch, from RoomTypeOffers.room_type_id on a pricing result.

string
languageCode

ISO 639-1 language for descriptions, e.g. “th”. English is ALWAYS returned alongside it.

string
maxMedia

Cap on images and videos returned. Zero means no cap, which is the default.

integer format: int32
imageFormat

IANA media type for image delivery URLs: image/jpeg (the default), image/png, image/webp, or image/* to let the CDN negotiate per client from its Accept header. Empty means image/jpeg.

An unrecognised value is rejected with INVALID_ARGUMENT rather than quietly falling back, so a typo like “image/jpg” (not a media type) fails loudly instead of serving you JPEG while you believe you asked for something else. Whatever is served is echoed back on MediaUrlVariant.format.

string
videoFormat

IANA media type for the PLAYABLE video delivery URLs, stream and preview: video/mp4 (the default) or video/webm. Empty means video/mp4.

This does NOT affect poster and thumbnail. Those are still frames extracted from the video, so they are images and follow image_format. An unrecognised value is rejected with INVALID_ARGUMENT.

string
Examplegenerated
{
"roomTypeId": "example",
"languageCode": "example",
"maxMedia": 1,
"imageFormat": "example",
"videoFormat": "example"
}

The RPC completed with gRPC status OK.

Media typeapplication/json

Response for GetRoomType.

object
roomType

The room type.

object
id

Stable room type identifier. Matches RoomPrice.room_type_id on the pricing endpoints, which you can use to group several rates for the same room.

string
name

Room name in the requested language.

string
descriptions

Localized descriptions, in English plus your requested language.

Array<object>

A short piece of localized text.

The API returns descriptions already filtered to the language on your request, so you will normally see exactly one entry per collection. language_code is still present so you can tell which language you got when the requested one was unavailable and the property’s default was substituted.

object
name

Short label for this description.

string
description

The description body.

string
languageCode

ISO 639-1 language code of name and description.

string
multimedias

Room images and videos.

Array<object>

One published image or video.

Key anything you cache on media_id. It is stable for the life of the asset; URLs are not — they carry transformation and delivery parameters that change without notice.

object
mediaId

Stable identifier for this asset. Use this as your cache key.

string
entityId

Identifier of the inventory item this asset belongs to (the property, a guest room, and so on). Named entity_id rather than identifier to match the *_id convention the rest of this surface uses, and because “identifier” said nothing about WHOSE identifier it is.

string
kind

MEDIA_TYPE_IMAGE or MEDIA_TYPE_VIDEO.

string
Allowed values: MULTIMEDIA_KIND_UNSPECIFIED MULTIMEDIA_KIND_IMAGE MULTIMEDIA_KIND_VIDEO
source

Where the asset came from, e.g. the property’s own upload or a syndicated source.

string
sort

Display order within its gallery, ascending.

integer format: int32
angle

Camera angle or shot description, when the property supplied one.

string
width

Intrinsic width in pixels.

integer format: int32
height

Intrinsic height in pixels.

integer format: int32
descriptions

Localized captions.

Array<object>

A short piece of localized text.

The API returns descriptions already filtered to the language on your request, so you will normally see exactly one entry per collection. language_code is still present so you can tell which language you got when the requested one was unavailable and the property’s default was substituted.

object
name

Short label for this description.

string
description

The description body.

string
languageCode

ISO 639-1 language code of name and description.

string
lifestyleType

The lifestyle this asset is meant to illustrate, when tagged.

string
Allowed values: LIFESTYLE_TYPE_UNSPECIFIED LIFESTYLE_TYPE_HEALTH_FITNESS LIFESTYLE_TYPE_RELAX LIFESTYLE_TYPE_ADULT_ONLY LIFESTYLE_TYPE_ADVENTURE LIFESTYLE_TYPE_BUSINESS LIFESTYLE_TYPE_LGBT LIFESTYLE_TYPE_SINGLE_PARENT LIFESTYLE_TYPE_SOLO_FEMALE LIFESTYLE_TYPE_BEAUTY LIFESTYLE_TYPE_FOODIE LIFESTYLE_TYPE_FAMILY LIFESTYLE_TYPE_ROMANCE LIFESTYLE_TYPE_COUPLE LIFESTYLE_TYPE_SOLO LIFESTYLE_TYPE_BACKPACKER LIFESTYLE_TYPE_SHOPPING LIFESTYLE_TYPE_SPORTS LIFESTYLE_TYPE_MOUNTAIN LIFESTYLE_TYPE_BEACH LIFESTYLE_TYPE_CITY LIFESTYLE_TYPE_COUNTRY LIFESTYLE_TYPE_CULTURE LIFESTYLE_TYPE_ECO
urls

Ready-to-use delivery URLs, one per variant. Which variants are populated depends on whether the asset is an image, a Cloudinary video or an externally-hosted one — see MediaUrlSet.

object
original

MULTIMEDIA_KIND_IMAGE only: unscaled, best-quality delivery URL.

object
url

Ready-to-use delivery URL for this variant.

string
maxWidth

Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.

integer format: int32
format

The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.

This ECHOES what was served, so it reflects the image_format and video_format you sent on the request. Send neither and images are image/jpeg and video is video/mp4.

image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.

string
large

MULTIMEDIA_KIND_IMAGE only: large variant, max width 1920px.

object
url

Ready-to-use delivery URL for this variant.

string
maxWidth

Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.

integer format: int32
format

The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.

This ECHOES what was served, so it reflects the image_format and video_format you sent on the request. Send neither and images are image/jpeg and video is video/mp4.

image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.

string
medium

MULTIMEDIA_KIND_IMAGE only: medium variant, max width 1024px.

object
url

Ready-to-use delivery URL for this variant.

string
maxWidth

Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.

integer format: int32
format

The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.

This ECHOES what was served, so it reflects the image_format and video_format you sent on the request. Send neither and images are image/jpeg and video is video/mp4.

image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.

string
thumbnail

MULTIMEDIA_KIND_IMAGE or MULTIMEDIA_KIND_VIDEO (Cloudinary): thumbnail variant, max width 320px. For video this is a still frame extracted from the video, so its format is an image type and follows image_format, not video_format.

object
url

Ready-to-use delivery URL for this variant.

string
maxWidth

Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.

integer format: int32
format

The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.

This ECHOES what was served, so it reflects the image_format and video_format you sent on the request. Send neither and images are image/jpeg and video is video/mp4.

image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.

string
stream

MULTIMEDIA_KIND_VIDEO (Cloudinary) only: streaming delivery URL, unscaled. Delivered as video_format, which defaults to video/mp4.

object
url

Ready-to-use delivery URL for this variant.

string
maxWidth

Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.

integer format: int32
format

The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.

This ECHOES what was served, so it reflects the image_format and video_format you sent on the request. Send neither and images are image/jpeg and video is video/mp4.

image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.

string
preview

MULTIMEDIA_KIND_VIDEO (Cloudinary) only: preview variant, max width 1280px. Delivered as video_format.

object
url

Ready-to-use delivery URL for this variant.

string
maxWidth

Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.

integer format: int32
format

The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.

This ECHOES what was served, so it reflects the image_format and video_format you sent on the request. Send neither and images are image/jpeg and video is video/mp4.

image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.

string
poster

MULTIMEDIA_KIND_VIDEO (Cloudinary) only: poster frame at medium width. A still EXTRACTED from the video, so like thumbnail it is an image and follows image_format.

object
url

Ready-to-use delivery URL for this variant.

string
maxWidth

Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.

integer format: int32
format

The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.

This ECHOES what was served, so it reflects the image_format and video_format you sent on the request. Send neither and images are image/jpeg and video is video/mp4.

image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.

string
externalUrl

MULTIMEDIA_KIND_VIDEO (YouTube) only: pass-through to the YouTube watch URL. Wink generates no variants for externally-hosted media, so no format applies and every MediaUrlVariant field above is unset.

string
otaPicCategory

OpenTravel PIC (Picture Category) code, e.g. “2” = Lobby view, “6” = Guest room. What the asset depicts, which is what you want when laying out a gallery rather than dumping it in sort order. Empty when the property never categorised the asset. Look codes up at https://wink.travel/developers/taxonomy.

string
sort

Display order within the property, ascending.

integer format: int32
maxOccupancy

Total guests, adults plus children.

integer format: int32
minOccupancy

Minimum guests required.

integer format: int32
maxAdultOccupancy

Maximum adults.

integer format: int32
maxChildOccupancy

Maximum children.

integer format: int32
quantity

Rooms of this type at the property.

integer format: int32
size

Floor area in square metres.

number format: double
nonSmoking

Whether the room is non-smoking.

boolean
otaSegRoomCategory

OpenTravel SEG (Segment Category) code, e.g. “4” = Deluxe, “16” = Standard. Look codes up at https://wink.travel/developers/taxonomy.

string
otaRvtRoomViewCode

OpenTravel RVT (Room View Type) code, e.g. “11” = Ocean view, “16” = Garden view.

string
otaRmaAmenities

OpenTravel RMA (Room Amenity) codes, e.g. “2” = Air conditioning, “7” = Balcony.

Array<string>
otaPhyAccessibilityFeatures

OpenTravel PHY (Accessibility Feature) codes, e.g. “110” = Roll-in shower available.

Array<string>
otaRltRoomLocationCode

OpenTravel RLT (Room Location Type) code, e.g. “1” = Away from elevator, “8” = High floor.

string
otaGriRoomClassificationCode

OpenTravel GRI (Guest Room Info) code, e.g. “44” = Bungalow, “45” = Villa, “82” = Standard.

string
otaArcRoomArchitectureCode

OpenTravel ARC (Architectural Style) code, e.g. “7” = Modern, “11” = Victorian.

string
bedConfigurations

The bed layouts this room can be booked in, each with a stable id.

Pass the id of the one the guest chose as BookingRoomRequest.bedroom_configuration_id. A room with one layout still returns it; send the id anyway rather than relying on the default, which is “whichever the property happens to list first”.

Array<object>

One bookable bed layout for a room type.

Suppliers routinely put an entire room description in name (“Suite - 1 Bedroom, 1 Double Bed, Non-Smoking, Balcony…”), so render from bedrooms when you want to show what a guest actually gets. Wink’s own booking confirmations stopped trusting name for exactly that reason.

object
id

Stable identifier for this layout. THIS is what BookingRoomRequest.bedroom_configuration_id wants.

string
name

The property’s own label for the layout, e.g. “Master Bedroom”. Untranslated, and frequently verbose.

string
bedrooms

The bedrooms in this layout, and the beds in each.

Array<object>

One bedroom within a layout.

object
type

Which bedroom this is within the layout.

string
Allowed values: BEDROOM_TYPE_UNSPECIFIED BEDROOM_TYPE_MASTER BEDROOM_TYPE_QUEEN BEDROOM_TYPE_JUNIOR BEDROOM_TYPE_DORMITORY BEDROOM_TYPE_BEDROOM_1 BEDROOM_TYPE_BEDROOM_2 BEDROOM_TYPE_BEDROOM_3 BEDROOM_TYPE_BEDROOM_4 BEDROOM_TYPE_BEDROOM_5 BEDROOM_TYPE_BEDROOM_6 BEDROOM_TYPE_BEDROOM_7 BEDROOM_TYPE_BEDROOM_8 BEDROOM_TYPE_BEDROOM_9 BEDROOM_TYPE_BEDROOM_10
beds

The beds in this bedroom.

Array<object>

A quantity of one bed type.

object
otaBedTypeCode

OpenTravel BED (Bed Type) code, e.g. “3” = King, “5” = Queen, “8” = Twin. Look codes up at https://wink.travel/developers/taxonomy.

string
quantity

How many beds of this type, at least one.

integer format: int32
Example
{
"roomType": {
"multimedias": [
{
"kind": "MULTIMEDIA_KIND_UNSPECIFIED",
"lifestyleType": "LIFESTYLE_TYPE_UNSPECIFIED"
}
],
"bedConfigurations": [
{
"bedrooms": [
{
"type": "BEDROOM_TYPE_UNSPECIFIED"
}
]
}
]
}
}