Property offers
const url = 'https://api.wink.travel/api/public/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/inventory/property';const options = { method: 'POST', headers: { 'Wink-Version': '2.0', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"applyCallerLocation":false,"userSession":{"languageCode":"en"}}'};
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://api.wink.travel/api/public/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/inventory/property \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Wink-Version: 2.0' \ --data '{ "applyCallerLocation": false, "userSession": { "languageCode": "en" } }'Return one property’s priced room offers for a stay, with the same fields as the Partner API’s Inventory.GetPropertyInventory, using REST-style (camelCase) names and enum values. Identify the property with propertyId or urlName (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. Amounts are int64 minor units of the property’s own currency, declared on the property as currency.currencyCode (currencyExponent decimal places) with currency.fxQuotes giving the exchange rates out of it: USD always, plus each of userSession.quoteCurrencies. Multiply a total by a rate and round once at the target currency’s exponent; rates are for display and never bind a charge. When nothing is available, roomTypes is empty and the currency is still declared. include adds ADD_ON, RESTAURANT, MEETING_ROOM, SPA, ATTRACTION, ACTIVITY, PLACE and ANNOUNCEMENT sections; unknown values are ignored. The stay is limited to 90 nights, 10 rooms, 20 guests per room and a check-in within 730 days. Rates list perkIds only: resolve them via inventory/content?include=PERK. Never cached: Cache-Control is no-store.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Managing entity identifier
Example
d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69Header Parameters
Section titled “Header Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”The stay, occupancy, language, wanted exchange rates and property to price
Prices one property for a stay. Carries the same fields as the Partner API GetPropertyInventoryRequest, with REST-style (camelCase) names and enum values.
object
When true, the caller’s IP address is resolved to a location, which decides whether special rates targeted by city, country, continent, timezone or geo-location apply to this stay (IP-range rates are not applied: the address itself is never used). Two callers can then be quoted different prices for the same request. When false or omitted, the price depends only on the request body. If the address cannot be placed, the stay is priced as if this were false. Intended for booking engines that price per visitor.
Image media type: image/jpeg (default), image/png, image/webp or image/*
Sections to price alongside the room offers. Accepted values: ADD_ON, RESTAURANT, MEETING_ROOM, SPA, ATTRACTION, ACTIVITY, PLACE, ANNOUNCEMENT. Case-insensitive; any other value is ignored.
Property identifier; give this or urlName, not both. A blank value counts as not given.
Property url-friendly name; give this or propertyId, not both. A blank value counts as not given.
Dates, occupancy, language and the exchange rates wanted. Required.
object
object
object
object
ISO 639-1 language for names and prose. When omitted, en.
ISO 4217 currencies you want an exchange rate into, for example [“EUR”, “JPY”]. At most 10 distinct codes. USD, the platform currency, is always quoted in addition. Amounts are never converted for you: they come back in the property’s own currency, and you multiply by the rate. A code that is not a real currency is a 400.
Example
{ "languageCode": "en"}Example
{ "applyCallerLocation": false, "userSession": { "languageCode": "en" }}Responses
Section titled “Responses”The priced offers. Cache-Control: no-store; no ETag.
One property’s priced offers for a stay, with the same fields as the Partner API’s GetPropertyInventoryResponse, using REST-style (camelCase) names and enum values. Amounts are int64 minor units of the property’s own currency (property.currency).
object
object
object
object
The add-on this offer prices: the id of its static content (inventory/content with include=ADD_ON) and of the matching entry in OfferedRate.addOnIds. Name, descriptions and media are there; this offer carries only the price. Present on add-on offers and on venue (restaurant, spa and so on) offers alike, since a venue is priced from its add-ons.
Localized promotion copy attached by the price calculator when a discount or surcharge applies to this offer; empty otherwise. Not the promo code, which is ‘promotion’.
object
Pricing granularity that determines how a rate or fee is calculated and applied
object
object
The add-on this offer prices: the id of its static content (inventory/content with include=ADD_ON) and of the matching entry in OfferedRate.addOnIds. Name, descriptions and media are there; this offer carries only the price. Present on add-on offers and on venue (restaurant, spa and so on) offers alike, since a venue is priced from its add-ons.
Localized promotion copy attached by the price calculator when a discount or surcharge applies to this offer; empty otherwise. Not the promo code, which is ‘promotion’.
object
Pricing granularity that determines how a rate or fee is calculated and applied
object
object
Last day the announcement is shown. Absent when showAlways.
When true the announcement has no window and applies to every stay; startDate and endDate are then absent.
First day the announcement is shown. Absent when showAlways.
object
object
object
object
object
object
object
Ids of the perks bundled with this rate. Perks are static content: resolve each id via inventory/content?include=PERK, which lists the property’s perks with their descriptions.
object
The add-on this offer prices: the id of its static content (inventory/content with include=ADD_ON) and of the matching entry in OfferedRate.addOnIds. Name, descriptions and media are there; this offer carries only the price. Present on add-on offers and on venue (restaurant, spa and so on) offers alike, since a venue is priced from its add-ons.
Localized promotion copy attached by the price calculator when a discount or surcharge applies to this offer; empty otherwise. Not the promo code, which is ‘promotion’.
object
Pricing granularity that determines how a rate or fee is calculated and applied
Example
{ "property": { "addOns": [ { "offers": [ { "pricingType": "PER_STAY" } ], "type": "ADD_ON" } ], "ancillaries": [ { "offers": [ { "pricingType": "PER_STAY" } ], "type": "ADD_ON" } ], "roomTypes": [ { "rates": [ { "adjustments": [ { "type": "EXTRA_ADULT" } ], "roomTypeAncillaries": [ { "pricingType": "PER_STAY" } ] } ] } ] }}Headers
Section titled “Headers”Always no-store
Bad Request — missing or invalid request parameter or body
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
Example generated
{ "detail": "example", "instance": "https://example.com", "properties": { "additionalProperty": "example" }, "status": 1, "title": "example", "type": "https://example.com"}