Get one hotel's media gallery
const url = 'https://partner.wink.travel/wink.partner.v1.Media/GetHotelMedia';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"managingEntityIdentifier":"example","hotelIdentifier":"example","mediaTypes":["MEDIA_TYPE_UNSPECIFIED"],"inventoryTypes":["MEDIA_INVENTORY_SCOPE_UNSPECIFIED"],"inventoryIdentifier":"example","categories":["example"],"language":"example","page":"example","size":"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://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.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Your Wink account identifier. Every call is scoped to one account, and your token must hold INVENTORY:READ on it.
The hotel to retrieve media for. Required.
Restrict results to these media types. Leave empty for both images and videos.
Restrict results to these galleries. Leave empty for every gallery (property plus all entitled inventory types).
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.
Restrict results to these OTA PIC photo-category codes. Leave empty for every category.
Language to prune captions to. Falls back to English when omitted.
Zero-based page number. Defaults to 0.
Page size, max 200. Defaults to 50 when unset (0).
Responses
Section titled “Responses”The RPC completed with gRPC status OK.
object
Hotel identifier, echoed from the request.
Hotel name.
Paginated, filtered gallery for this hotel.
object
The assets on this page.
One published media asset (image or video) belonging to a hotel or one of its bookable inventory items.
object
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.
Hotel this asset belongs to.
Which gallery this asset belongs to.
Identifier of the owning inventory item (room type, restaurant, spa, meeting room, add-on). Unset when inventory_type is PROPERTY.
Display name of the owning inventory item, or the hotel name when inventory_type is PROPERTY.
Whether this asset is an image or video.
Hosting platform this asset is served from.
OTA PIC photo-category code.
Display order within the owning gallery. Lower sorts first.
Media width in pixels. 0 when unavailable (e.g. YouTube).
Media height in pixels. 0 when unavailable (e.g. YouTube).
Caption/alt text pruned to the requested language, falling back to English. Unset when no description is set.
Photographer/source attribution credits, if any.
Photographer/source attribution for one media asset.
object
URL to the contributor’s profile, if any.
Name of the contributor. Required whenever an attribution entry is present.
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.
Fixed set of ready-to-use delivery-URL variants for this asset.
object
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.
Delivery format label for this variant.
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.
Delivery format label for this variant.
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.
Delivery format label for this variant.
IMAGE or VIDEO (Cloudinary): thumbnail variant, max width 320px. For video this is a jpg frame extracted from the video.
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.
Delivery format label for this variant.
VIDEO (Cloudinary) only: mp4 streaming delivery URL, unscaled.
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.
Delivery format label for this variant.
VIDEO (Cloudinary) only: mp4 preview variant, max width 1280px.
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.
Delivery format label for this variant.
VIDEO (Cloudinary) only: poster frame, a jpg still extracted from the video at medium width.
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.
Delivery format label for this variant.
VIDEO (YouTube) only: pass-through to the YouTube watch URL. Wink generates no variants for externally-hosted media.
Zero-based index of this page.
The requested page size.
Total number of assets across all pages.
Total number of pages for the current page size.
Number of assets actually on this page.
Whether this is the first page.
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" } ] }}