Skip to content

GetRoomTypeRatePeriod

POST
/wink.partner.v1.Inventory/GetRoomTypeRatePeriod
curl --request POST \
--url https://example.com/wink.partner.v1.Inventory/GetRoomTypeRatePeriod \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "propertyId": "example", "startDate": "example", "periodInDays": 1, "adults": 1, "languageCode": "example", "quoteCurrencies": [ "example" ], "ratePlanTypes": [ "RATE_PLAN_AUDIENCE_UNSPECIFIED" ], "refundableOnly": true, "breakfastIncludedOnly": true }'

Room type rate calendar

For every date range of a calendar, the best available offer for each room type, cheapest first, so you can show “from” prices per room type. You choose which kinds of rate plan are considered with rate_plan_types, and can restrict the result to refundable offers or offers that include breakfast. A room type with no qualifying available offer in a range is left out of that range.

Results are cached for up to 120 seconds; a change to a rate or rate plan normally shows sooner, but it can take longer to appear in some environments.

The response can be large for big properties: it carries one offer per room type per date range, and a 30-day calendar has up to 900 ranges. gRPC clients commonly default to a 4 MiB receive limit; callers with many room types should request a shorter period_in_days or raise their client receive limit.

Billed as period_in_days hotel-day units.

Media typeapplication/json

Request for GetRoomTypeRatePeriod.

object
propertyId

Stable property identifier. Required.

string
startDate

First check-in date to price, ISO-8601 “YYYY-MM-DD”. Required.

string
periodInDays

How many days forward to price from start_date. Between 2 and 30. Required.

This is also the billed unit count: a 30-day calendar costs 30 hotel-day units.

integer format: int32
adults

Adults per room, between 1 and 10. Omit it to take the default of 2.

integer format: int32
languageCode

ISO 639-1 language for the room type and rate plan names, e.g. “en”. Required.

string
quoteCurrencies

ISO 4217 currencies you want an exchange rate into – same meaning and limits as UserSession.quote_currencies. The platform currency (USD) is always quoted as well.

Array<string>
ratePlanTypes

Which kinds of rate plan to consider. A rate plan is considered when it carries at least one of these. Omit it, or send only RATE_PLAN_AUDIENCE_UNSPECIFIED, to consider public rate plans only. RATE_PLAN_AUDIENCE_UNSPECIFIED mixed into a longer list is ignored.

A rate plan is returned only when the property sells it through your account’s sales channel AND it carries at least one of the kinds you asked for. Asking for a kind (for example RATE_PLAN_AUDIENCE_MEMBER) that the property has no rate plans of, or has not made available to your channel, returns nothing for it – an empty result, not an error.

Array<string>
Allowed values: RATE_PLAN_AUDIENCE_UNSPECIFIED RATE_PLAN_AUDIENCE_PUBLIC RATE_PLAN_AUDIENCE_MEMBER RATE_PLAN_AUDIENCE_CLOSED_USER_GROUP RATE_PLAN_AUDIENCE_PROMO_CODE RATE_PLAN_AUDIENCE_NEGOTIATED RATE_PLAN_AUDIENCE_WHOLESALE RATE_PLAN_AUDIENCE_OPAQUE
refundableOnly

When true, only refundable offers are considered.

boolean
breakfastIncludedOnly

When true, only offers that include breakfast are considered.

boolean

The RPC completed with gRPC status OK.

Media typeapplication/json

Response for GetRoomTypeRatePeriod.

object
period

The room type rate calendar.

object
propertyId

Stable property identifier.

string
name

The property’s name (not localized).

string
adults

Adults every offer in this calendar is priced for – the occupancy you asked for, stated once here.

integer format: int32
currency

The currency every RoomTypeRateOffer.total is in, and the exchange rates out of it.

object
currencyCode

ISO 4217 code the property’s amounts are denominated in, e.g. “THB”.

string
currencyExponent

How many decimal places currency_code has: 2 for THB and USD, 0 for JPY, KRW and VND. Amounts are integers in MINOR UNITS, so the real value is amount / 10^currency_exponent. Published rather than assumed because a fixed divide-by-100 is wrong for a real slice of Wink’s inventory – a JPY stay priced at 15000 is ¥15,000, not ¥150.

integer format: int32
fxQuotes

Exchange rates out of currency_code: the platform currency first, then each of user_session.quote_currencies in the order you sent them, each once. A requested currency with no usable rate is omitted.

Find a rate by its currency_code, never by position: when the platform rate is missing, the first entry is a requested currency, not USD.

In a page of search results, a property whose currency has no usable platform rate is returned with the quotes that do exist, possibly none, rather than failing the whole page: its amounts are in currency_code and are correct either way, so treat an empty or short list as “no rate to convert with”, never as a zero rate. The calls that price ONE property or a batch of them (Inventory.GetPropertyInventory, Inventory.GetRatePeriod and Inventory.ListPropertyInventory, which is atomic) return NOT_FOUND instead.

Array<object>

An exchange rate from a property’s currency into one other currency.

object
currencyCode

ISO 4217 code this rate converts INTO.

string
rate

Units of currency_code per ONE unit of the property’s currency, as a decimal string such as “0.0275”. A string rather than a double so the digits you receive are exactly the digits we hold. Always positive.

string
asOf

When this rate was recorded, ISO-8601 in UTC, e.g. “2026-10-19T11:00:00Z”.

string
ranges

The check-in/check-out date ranges that have at least one qualifying offer, ordered by check-in date and then by number of nights. A range with no qualifying offer is omitted, so key each range on start_date/end_date and never index by position.

Array<object>

One check-in/check-out date range and the best offer for each room type that can be booked in it.

object
startDate

Check-in date, ISO-8601 “YYYY-MM-DD”.

string
endDate

Check-out date, ISO-8601 “YYYY-MM-DD”.

string
roomNights

Nights covered.

integer format: int32
offers

The best offer for each room type that has one, cheapest first. The first entry is the best offer across all room types. Never empty for a returned range: a range with no qualifying offer is omitted.

Array<object>

The best qualifying offer for one room type in one date range.

object
roomTypeId

Identifier of the room type this offer is for. Join to Content for its description, images and amenities.

string
name

The room type’s name, in the requested language, falling back to English and then to the room type’s default name.

string
ratePlanId

Identifier of the rate plan that produced this offer.

string
ratePlanName

The rate plan’s name as configured by the property (not localized).

string
ratePlanAudiences

The kinds of rate plan this offer is sold as.

Array<string>
Allowed values: RATE_PLAN_AUDIENCE_UNSPECIFIED RATE_PLAN_AUDIENCE_PUBLIC RATE_PLAN_AUDIENCE_MEMBER RATE_PLAN_AUDIENCE_CLOSED_USER_GROUP RATE_PLAN_AUDIENCE_PROMO_CODE RATE_PLAN_AUDIENCE_NEGOTIATED RATE_PLAN_AUDIENCE_WHOLESALE RATE_PLAN_AUDIENCE_OPAQUE
refundable

True if it can be cancelled without charge before the policy’s deadline.

boolean
refundableUntilDays

Days from TODAY until free cancellation closes; -1 when not refundable, 0 when it closes today. Same calculation as RoomRate.refundable_until_days.

integer format: int32
breakfastIncluded

True if breakfast is included.

boolean
total

What the guest pays for this offer, in minor units of RoomTypeRatePeriod.currency, the property’s own currency.

string format: int64
languageCode

ISO 639-1 language the names in this response are in.

string

Example

{
"period": {
"ranges": [
{
"offers": [
{
"ratePlanAudiences": [
"RATE_PLAN_AUDIENCE_UNSPECIFIED"
]
}
]
}
]
}
}