GetRoomType
const url = 'https://example.com/wink.partner.v1.Content/GetRoomType';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"roomTypeId":"example","languageCode":"example","maxMedia":1,"imageFormat":"example","videoFormat":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Request for GetRoomType.
object
Room type to fetch, from RoomTypeOffers.room_type_id on a pricing result.
ISO 639-1 language for descriptions, e.g. “th”. English is ALWAYS returned alongside it.
Cap on images and videos returned. Zero means no cap, which is the default.
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.
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.
Examplegenerated
{ "roomTypeId": "example", "languageCode": "example", "maxMedia": 1, "imageFormat": "example", "videoFormat": "example"}Responses
Section titled “Responses”The RPC completed with gRPC status OK.
Response for GetRoomType.
object
The room type.
object
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.
Room name in the requested language.
Localized descriptions, in English plus your requested language.
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
Short label for this description.
The description body.
ISO 639-1 language code of name and description.
Room images and videos.
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
Stable identifier for this asset. Use this as your cache key.
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.
MEDIA_TYPE_IMAGE or MEDIA_TYPE_VIDEO.
Where the asset came from, e.g. the property’s own upload or a syndicated source.
Display order within its gallery, ascending.
Camera angle or shot description, when the property supplied one.
Intrinsic width in pixels.
Intrinsic height in pixels.
Localized captions.
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
Short label for this description.
The description body.
ISO 639-1 language code of name and description.
The lifestyle this asset is meant to illustrate, when tagged.
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
MULTIMEDIA_KIND_IMAGE only: unscaled, best-quality delivery URL.
object
Ready-to-use delivery URL for this variant.
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.
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.
MULTIMEDIA_KIND_IMAGE only: large variant, max width 1920px.
object
Ready-to-use delivery URL for this variant.
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.
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.
MULTIMEDIA_KIND_IMAGE only: medium variant, max width 1024px.
object
Ready-to-use delivery URL for this variant.
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.
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.
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
Ready-to-use delivery URL for this variant.
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.
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.
MULTIMEDIA_KIND_VIDEO (Cloudinary) only: streaming delivery URL, unscaled. Delivered as video_format,
which defaults to video/mp4.
object
Ready-to-use delivery URL for this variant.
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.
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.
MULTIMEDIA_KIND_VIDEO (Cloudinary) only: preview variant, max width 1280px. Delivered as video_format.
object
Ready-to-use delivery URL for this variant.
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.
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.
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
Ready-to-use delivery URL for this variant.
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.
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.
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.
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.
Display order within the property, ascending.
Total guests, adults plus children.
Minimum guests required.
Maximum adults.
Maximum children.
Rooms of this type at the property.
Floor area in square metres.
Whether the room is non-smoking.
OpenTravel SEG (Segment Category) code, e.g. “4” = Deluxe, “16” = Standard. Look codes up at https://wink.travel/developers/taxonomy.
OpenTravel RVT (Room View Type) code, e.g. “11” = Ocean view, “16” = Garden view.
OpenTravel RMA (Room Amenity) codes, e.g. “2” = Air conditioning, “7” = Balcony.
OpenTravel PHY (Accessibility Feature) codes, e.g. “110” = Roll-in shower available.
OpenTravel RLT (Room Location Type) code, e.g. “1” = Away from elevator, “8” = High floor.
OpenTravel GRI (Guest Room Info) code, e.g. “44” = Bungalow, “45” = Villa, “82” = Standard.
OpenTravel ARC (Architectural Style) code, e.g. “7” = Modern, “11” = Victorian.
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”.
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
Stable identifier for this layout. THIS is what BookingRoomRequest.bedroom_configuration_id wants.
The property’s own label for the layout, e.g. “Master Bedroom”. Untranslated, and frequently verbose.
The bedrooms in this layout, and the beds in each.
One bedroom within a layout.
object
Which bedroom this is within the layout.
The beds in this bedroom.
A quantity of one bed type.
object
OpenTravel BED (Bed Type) code, e.g. “3” = King, “5” = Queen, “8” = Twin. Look codes up at https://wink.travel/developers/taxonomy.
How many beds of this type, at least one.
Example
{ "roomType": { "multimedias": [ { "kind": "MULTIMEDIA_KIND_UNSPECIFIED", "lifestyleType": "LIFESTYLE_TYPE_UNSPECIFIED" } ], "bedConfigurations": [ { "bedrooms": [ { "type": "BEDROOM_TYPE_UNSPECIFIED" } ] } ] }}