Skip to content

Property reviews

GET
/api/public/{managingEntityIdentifier}/inventory/reviews
curl --request GET \
--url 'https://api.wink.travel/api/public/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/inventory/reviews?hotelIdentifier=e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18&customizationIdentifier=2c5b9e3a-7f1d-4a8c-b6e2-0d4f1a9b3c72&page=0&size=25' \
--header 'Authorization: Bearer <token>' \
--header 'Wink-Version: 2.0'

Return one page of a property’s approved guest reviews, newest first, in the same shape as the Partner API’s Content.ListReviews (camelCase). Identify the property with urlName or hotelIdentifier (exactly one of the two; giving neither or both is a 400). A property is served only when it is available and the managing entity in the path has an active sales channel for it; otherwise the answer is a 404, identical to an unknown property. Only reviews the property approved are returned, and a review carries entityId and urls only when its image was approved too. page is zero-based (default 0, at most 10000); size is 1 to 100 (default 25); anything else is a 400. A page past the last one is a 200 with no reviews and the true totals. The response carries cacheToken, and an ETag equal to the quoted cacheToken with Cache-Control: no-cache; send the ETag back in If-None-Match to receive 304 Not Modified while the page is unchanged.

managingEntityIdentifier
required
string

Managing entity identifier

Example

d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69
hotelIdentifier
string
0 <= 64 characters /(?s).*\S.*/

Property identifier; give this or urlName, not both

Example

e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18
urlName
string
0 <= 200 characters /(?s).*\S.*/

Property url-friendly name; give this or hotelIdentifier, not both

customizationIdentifier
string

Booking engine customization identifier; accepted for parity with the other inventory endpoints and currently unused

Example

2c5b9e3a-7f1d-4a8c-b6e2-0d4f1a9b3c72
page
integer
0 <= 10000

Zero-based page index, 0 to 10000. Defaults to 0

Example

0
size
integer
default: 25 >= 1 <= 100

Page size, 1 to 100. Defaults to 25

Example

25
If-None-Match
string

ETag from a previous response; when it still matches, 304 Not Modified is returned without a body

Wink-Version
string
default: 2.0.0
Allowed values: 2.0

The reviews page. Carries an ETag (quoted cacheToken) and Cache-Control: no-cache, so clients may store it but must revalidate.

Media typeapplication/json

One page of a property’s approved guest reviews, newest first.

object
cacheToken

Opaque token identifying this representation; equals the ETag value, unquoted.

string
hotelIdentifier

The property identifier; same value as propertyId.

string
page

Zero-based page index.

integer format: int32
propertyId

The property identifier.

string
reviews

The reviews on this page, newest first. Empty past the last page.

Array<object>

One approved guest review.

object
answers

Per-question answers.

Array<object>

Public-facing view of a single question-answer pair within a guest review, displayed on a property profile.

object
category
required

Category of the review question (e.g., COMFORT, SERVICE, VALUE).

string
Allowed values: COMFORT CONDITION SERVICE ENVIRONMENT FACILITIES LOCATION LIFESTYLE VALUE FOOD ROOM
sort
required

Display order of this answer within the review.

integer format: int32
value
required

Guest’s numeric rating for this question on a 0-10 scale.

integer format: int32
averageScore

Average score across the answered questions (0-10).

number format: double
entityId

Cloudinary public id of the review image; present only when the image was approved.

string
likes

How many members liked the review.

integer format: int32
responseFromHotel

The property’s reply to the review.

string
review

The review text.

string
reviewBy

Reviewer’s display name.

string
reviewedOn

When the review was submitted.

string format: date-time
urls

Delivery URLs of the review image; present only when the image was approved.

object
external

Watch URL for media hosted outside our CDN (for example YouTube).

string
large

Image scaled to at most 1920px wide.

object
format

Delivery format label of this variant.

string
maxWidth

Maximum width in pixels of this variant. Absent when the variant is not resized.

integer format: int32
url

Absolute HTTPS URL that can be used directly in an img/video tag.

string
medium

Image scaled to at most 1024px wide.

object
format

Delivery format label of this variant.

string
maxWidth

Maximum width in pixels of this variant. Absent when the variant is not resized.

integer format: int32
url

Absolute HTTPS URL that can be used directly in an img/video tag.

string
original

Full-size image, not resized.

object
format

Delivery format label of this variant.

string
maxWidth

Maximum width in pixels of this variant. Absent when the variant is not resized.

integer format: int32
url

Absolute HTTPS URL that can be used directly in an img/video tag.

string
poster

Still frame to show before the video plays.

object
format

Delivery format label of this variant.

string
maxWidth

Maximum width in pixels of this variant. Absent when the variant is not resized.

integer format: int32
url

Absolute HTTPS URL that can be used directly in an img/video tag.

string
preview

Short low-bandwidth video preview.

object
format

Delivery format label of this variant.

string
maxWidth

Maximum width in pixels of this variant. Absent when the variant is not resized.

integer format: int32
url

Absolute HTTPS URL that can be used directly in an img/video tag.

string
stream

Video stream at full size.

object
format

Delivery format label of this variant.

string
maxWidth

Maximum width in pixels of this variant. Absent when the variant is not resized.

integer format: int32
url

Absolute HTTPS URL that can be used directly in an img/video tag.

string
thumbnail

Small still, at most 320px wide. For videos this is a frame of the video.

object
format

Delivery format label of this variant.

string
maxWidth

Maximum width in pixels of this variant. Absent when the variant is not resized.

integer format: int32
url

Absolute HTTPS URL that can be used directly in an img/video tag.

string
size

Page size.

integer format: int32
totalPages

Pages needed for totalReviews at this size.

integer format: int32
totalReviews

All approved reviews of the property, independent of paging.

integer format: int64
urlName

The url name the request used; absent when the property was identified by hotelIdentifier.

string

Example

{
"reviews": [
{
"answers": [
{
"category": "SERVICE",
"sort": 1,
"value": 7
}
],
"urls": {
"external": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"large": {
"format": "jpg",
"maxWidth": 1920,
"url": "https://res.cloudinary.com/traveliko/image/upload/w_1920/the-siam-residences/lobby-entrance.jpg"
},
"medium": {
"format": "jpg",
"maxWidth": 1920,
"url": "https://res.cloudinary.com/traveliko/image/upload/w_1920/the-siam-residences/lobby-entrance.jpg"
},
"original": {
"format": "jpg",
"maxWidth": 1920,
"url": "https://res.cloudinary.com/traveliko/image/upload/w_1920/the-siam-residences/lobby-entrance.jpg"
},
"poster": {
"format": "jpg",
"maxWidth": 1920,
"url": "https://res.cloudinary.com/traveliko/image/upload/w_1920/the-siam-residences/lobby-entrance.jpg"
},
"preview": {
"format": "jpg",
"maxWidth": 1920,
"url": "https://res.cloudinary.com/traveliko/image/upload/w_1920/the-siam-residences/lobby-entrance.jpg"
},
"stream": {
"format": "jpg",
"maxWidth": 1920,
"url": "https://res.cloudinary.com/traveliko/image/upload/w_1920/the-siam-residences/lobby-entrance.jpg"
},
"thumbnail": {
"format": "jpg",
"maxWidth": 1920,
"url": "https://res.cloudinary.com/traveliko/image/upload/w_1920/the-siam-residences/lobby-entrance.jpg"
}
}
}
]
}
Cache-Control
string

Always no-cache: store, but revalidate before reuse

ETag
string

Quoted cacheToken of this representation; send it back in If-None-Match

Not Modified: the If-None-Match value matches the current ETag (a comma-separated list, weak W/ validators and * are honoured). No body; the ETag and Cache-Control headers are repeated.

Cache-Control
string

Always no-cache

ETag
string

Quoted cacheToken of the current representation

Bad Request — missing or invalid request parameter or body

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Unauthorized — authentication is required or the session has expired

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Forbidden — authenticated but lacking the required permission or scope

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Not Found — the requested resource does not exist

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Method Not Allowed — the HTTP verb is not supported on this endpoint

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Unsupported Media Type — use application/json

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Internal Server Error — an unexpected failure occurred on the server

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Service Unavailable — a downstream dependency is unreachable

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}