Skip to content

Get one hotel's media gallery

POST
/wink.partner.v1.Media/GetHotelMedia
curl --request POST \
--url https://partner.wink.travel/wink.partner.v1.Media/GetHotelMedia \
--header 'Content-Type: application/json' \
--data '{ "managingEntityIdentifier": "example", "hotelIdentifier": "example", "mediaTypes": [ "MEDIA_TYPE_UNSPECIFIED" ], "inventoryTypes": [ "MEDIA_INVENTORY_SCOPE_UNSPECIFIED" ], "inventoryIdentifier": "example", "categories": [ "example" ], "language": "example", "page": "example", "size": "example" }'

Get one hotel’s media gallery

Return a single hotel’s published media — the property itself plus every bookable inventory item entitled to your sales channel (guest rooms, restaurants, spas, meeting rooms, add-ons) — paginated and filterable.

Returns PERMISSION_DENIED when the hotel exists but is not in your sales channel, and NOT_FOUND when the hotel identifier is unknown, so you can tell the two apart the same way the REST twin’s 403/404 split lets you. Billed 1 unit per hotel whose media is returned.

Media typeapplication/json
object
managingEntityIdentifier

Your Wink account identifier. Every call is scoped to one account, and your token must hold INVENTORY:READ on it.

hotelIdentifier

The hotel to retrieve media for. Required.

mediaTypes

Restrict results to these media types. Leave empty for both images and videos.

Array<string>
Allowed values: MEDIA_TYPE_UNSPECIFIED IMAGE VIDEO AUDIO RAW
inventoryTypes

Restrict results to these galleries. Leave empty for every gallery (property plus all entitled inventory types).

Array<string>
Allowed values: MEDIA_INVENTORY_SCOPE_UNSPECIFIED MEDIA_PROPERTY MEDIA_GUEST_ROOM MEDIA_RESTAURANT MEDIA_SPA MEDIA_MEETING_ROOM MEDIA_ADD_ON
inventoryIdentifier

Restrict results to a single inventory item’s gallery, e.g. one room type. Combine with inventory_types to disambiguate the type. Ignored when inventory_types selects PROPERTY only.

categories

Restrict results to these OTA PIC photo-category codes. Leave empty for every category.

Array
language

Language to prune captions to. Falls back to English when omitted.

page

Zero-based page number. Defaults to 0.

size

Page size, max 200. Defaults to 50 when unset (0).

The RPC completed with gRPC status OK.

Media typeapplication/json
object
hotelIdentifier

Hotel identifier, echoed from the request.

hotelName

Hotel name.

media

Paginated, filtered gallery for this hotel.

object
content

The assets on this page.

Array<object>

One published media asset (image or video) belonging to a hotel or one of its bookable inventory items.

object
mediaIdentifier

Stable media identifier — key your integration on this, not on any URL. It survives the platform’s media reorganization, which rewrites the underlying storage path (and therefore every delivery URL) without changing this identifier.

hotelIdentifier

Hotel this asset belongs to.

inventoryType

Which gallery this asset belongs to.

string
Allowed values: MEDIA_INVENTORY_SCOPE_UNSPECIFIED MEDIA_PROPERTY MEDIA_GUEST_ROOM MEDIA_RESTAURANT MEDIA_SPA MEDIA_MEETING_ROOM MEDIA_ADD_ON
inventoryIdentifier

Identifier of the owning inventory item (room type, restaurant, spa, meeting room, add-on). Unset when inventory_type is PROPERTY.

inventoryName

Display name of the owning inventory item, or the hotel name when inventory_type is PROPERTY.

mediaType

Whether this asset is an image or video.

string
Allowed values: MEDIA_TYPE_UNSPECIFIED IMAGE VIDEO AUDIO RAW
source

Hosting platform this asset is served from.

string
Allowed values: MEDIA_SOURCE_UNSPECIFIED YOUTUBE CLOUDINARY
category

OTA PIC photo-category code.

sort

Display order within the owning gallery. Lower sorts first.

width

Media width in pixels. 0 when unavailable (e.g. YouTube).

height

Media height in pixels. 0 when unavailable (e.g. YouTube).

caption

Caption/alt text pruned to the requested language, falling back to English. Unset when no description is set.

attribution

Photographer/source attribution credits, if any.

Array<object>

Photographer/source attribution for one media asset.

object
url

URL to the contributor’s profile, if any.

name

Name of the contributor. Required whenever an attribution entry is present.

lifestyleType

Lifestyle association for this asset, if any. LIFESTYLE_TYPE_UNSPECIFIED means none is set — this field is genuinely optional, unlike a request-side type selector.

string
Allowed values: LIFESTYLE_TYPE_UNSPECIFIED LIFESTYLE_HEALTH_FITNESS LIFESTYLE_RELAX LIFESTYLE_ADULT_ONLY LIFESTYLE_ADVENTURE LIFESTYLE_BUSINESS LIFESTYLE_LGBT LIFESTYLE_SINGLE_PARENT LIFESTYLE_SOLO_FEMALE LIFESTYLE_BEAUTY LIFESTYLE_FOODIE LIFESTYLE_FAMILY LIFESTYLE_ROMANCE LIFESTYLE_COUPLE LIFESTYLE_SOLO LIFESTYLE_BACKPACKER LIFESTYLE_SHOPPING LIFESTYLE_SPORTS LIFESTYLE_MOUNTAIN LIFESTYLE_BEACH LIFESTYLE_CITY LIFESTYLE_COUNTRY LIFESTYLE_CULTURE LIFESTYLE_ECO
urls

Fixed set of ready-to-use delivery-URL variants for this asset.

object
original

IMAGE only: unscaled, best-quality delivery URL.

object
url

Ready-to-use delivery URL for this variant.

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.

format

Delivery format label for this variant.

large

IMAGE only: large variant, max width 1920px.

object
url

Ready-to-use delivery URL for this variant.

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.

format

Delivery format label for this variant.

medium

IMAGE only: medium variant, max width 1024px.

object
url

Ready-to-use delivery URL for this variant.

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.

format

Delivery format label for this variant.

thumbnail

IMAGE or VIDEO (Cloudinary): thumbnail variant, max width 320px. For video this is a jpg frame extracted from the video.

object
url

Ready-to-use delivery URL for this variant.

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.

format

Delivery format label for this variant.

stream

VIDEO (Cloudinary) only: mp4 streaming delivery URL, unscaled.

object
url

Ready-to-use delivery URL for this variant.

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.

format

Delivery format label for this variant.

preview

VIDEO (Cloudinary) only: mp4 preview variant, max width 1280px.

object
url

Ready-to-use delivery URL for this variant.

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.

format

Delivery format label for this variant.

poster

VIDEO (Cloudinary) only: poster frame, a jpg still extracted from the video at medium width.

object
url

Ready-to-use delivery URL for this variant.

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.

format

Delivery format label for this variant.

externalUrl

VIDEO (YouTube) only: pass-through to the YouTube watch URL. Wink generates no variants for externally-hosted media.

number

Zero-based index of this page.

size

The requested page size.

totalElements

Total number of assets across all pages.

totalPages

Total number of pages for the current page size.

numberOfElements

Number of assets actually on this page.

first

Whether this is the first page.

last

Whether this is the last page.

Example
{
"media": {
"content": [
{
"inventoryType": "MEDIA_INVENTORY_SCOPE_UNSPECIFIED",
"mediaType": "MEDIA_TYPE_UNSPECIFIED",
"source": "MEDIA_SOURCE_UNSPECIFIED",
"lifestyleType": "LIFESTYLE_TYPE_UNSPECIFIED"
}
]
}
}