Hotel Availability
POST/v2/hotels/availability
Introduction
Returns rate availability for specific hotels, a registered region, or a geographic radius search, for a given period and occupancy.
Search destination
Exactly one of the three destination criteria must be provided in destinations:
hotelIds: list of internal Niara hotel IDs.regionId: ID of a registered region.circleInfo: radius search around a geographic point (latitude/longitude/radius).
Providing more than one is not an error: the search follows the same internal
precedence order used by the availability engine (circleInfo > regionId > hotelIds),
using only the first one present.
Pagination
Results are paginated at 50 hotels per page — see page on the request and
totalPages on the response.
Request
- application/json
Body
destinations objectrequired
List of Niara hotel IDs to search. Mutually exclusive with regionId and circleInfo.
ID of a region registered in Niara. Mutually exclusive with hotelIds and circleInfo.
circleInfo objectnullable
Radius search around a geographic point. Mutually exclusive with hotelIds and regionId.
Latitude of the search circle's center.
Longitude of the search circle's center.
Search radius from the center.
Possible values: [km, mi]
Default value: km
Unit of measure for the radius: kilometers ("km") or miles ("mi").
Check-in date (ISO 8601, e.g. 2026-10-01).
Check-out date (ISO 8601, e.g. 2026-10-02).
occupancy objectrequired
Number of adults per room.
Default value: 0
Number of children per room.
Ages of the children, one entry per child (must match the children count).
When true, restricts the result to the client's favorite hotels.
Possible values: [1, 2, 3, 4, 5]
Filters hotels by star rating. A hotel is included only if its rating exactly matches one of the values listed here (e.g. [4, 5] returns only 4- and 5-star hotels — it is not a "4 stars and up" threshold). Hotels with no rating on file are always excluded once this filter is set.
When true, returns only the cheapest rate per hotel/credential.
Default value: 1
Page number (1-indexed). Each page returns up to 50 hotels — see totalPages on the response.
When true, hotels also include unavailableRoomRates: rates that were found but aren't currently bookable, with the reason why.
Desired language/locale for the response's text.
Responses
- 200
- application/json
- Schema
- Example (from schema)
Schema
- Array [
- Array [
- Array [
- Array [
- ]
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
- Array [
- ]
- ]
- Array [
- Array [
- ]
- ]
- ]
hotels object[]
List of hotels found with their rates.
hotel objectrequired
Internal Niara ID of the hotel.
Hotel name.
Name of the hotel's city.
Name of the hotel's country.
Hotel address.
position objectnullable
Geographic coordinates of the hotel.
Latitude of the hotel.
Longitude of the hotel.
roomRates object[]
Available rates for the hotel, for the searched period/occupancy.
Opaque token identifying this rate. Pass it to v2/hotels/checkrate to re-confirm it before booking.
roomType objectrequired
Room type ID.
Room type name.
time objectrequired
Rate start date.
Rate end date.
priceComposition objectrequired
net objectnullable
Net value (before taxes), when available.
Monetary amount.
Currency code (ISO 4217).
taxes objectnullable
Tax amount, when available.
Monetary amount.
Currency code (ISO 4217).
total objectnullable
Total value (net + taxes), when available.
Monetary amount.
Currency code (ISO 4217).
cancelPolicy objectrequired
Indicates whether the rate is non-refundable, when known.
Indicates whether cancellation is currently within the penalty period.
Date from which cancellation starts incurring a penalty.
paymentOptions object[]nullable
Payment/guarantee options available for this rate.
Payment option type (e.g. credit card, PIX, pay-at-hotel).
Payment option ID.
Whether this payment option is currently usable for this rate, when known.
Internal payment-option classification.
Display name for the payment option.
Human-readable description.
Why this option is disabled, when enabled is false.
Supplier credential type behind this payment option, when relevant.
includeExtraOptions object[]nullable
Extras that can be bundled with this payment option.
Extra item ID.
Extra item label.
meal objectnullable
Whether breakfast is included.
Whether lunch is included.
Whether dinner is included.
Whether the rate is all-inclusive.
Meal plan name.
Meal plan description.
ratePlan objectnullable
Rate plan ID.
Rate plan name.
Rate plan type.
Whether the rate plan is publicly published.
Whether the rate plan is a package (bundled with extras).
inclusions object[]nullable
Items included in the rate plan.
Inclusion ID.
Inclusion name.
Inclusion description.
descriptions objectnullable
roomType object[]nullable
Room type descriptions.
Description name/title.
Description text.
meal object[]nullable
Meal plan descriptions.
Description name/title.
Description text.
ratePlan object[]nullable
Rate plan descriptions.
Description name/title.
Description text.
cancelPolicy object[]nullable
Cancellation policy descriptions.
Description name/title.
Description text.
generalPolicies object[]nullable
General policy descriptions.
Description name/title.
Description text.
payment object[]nullable
Payment-related descriptions.
Description name/title.
Description text.
offers object[]nullable
Promotional offers applied to the rate.
Offer name.
Discount value/percentage.
Number of free nights granted by the offer, when applicable.
Possible values: [STAY_DISCOUNT, DISCOUNT, FREE_NIGHT, LAST_MINUTE, null]
Discount type.
Nights required to qualify for the offer, when applicable.
unavailableRoomRates object[]nullable
Rates that were found but aren't currently bookable. Only present when includeUnavailableRoomRates was set on the request.
Rate/room ID. Informational only — cannot be rechecked via checkrate or booked.
roomType objectnullable
Room type ID.
Room type name.
Why this rate is unavailable.
Minimum number of adults required, when the unavailability is an occupancy restriction.
Maximum number of adults allowed, when the unavailability is an occupancy restriction.
Minimum number of children required, when the unavailability is an occupancy restriction.
Maximum number of children allowed, when the unavailability is an occupancy restriction.
cancelPolicy objectnullable
Indicates whether the rate is non-refundable, when known.
Indicates whether cancellation is currently within the penalty period.
Date from which cancellation starts incurring a penalty.
ratePlan objectnullable
Rate plan ID.
Rate plan name.
Rate plan type.
Whether the rate plan is publicly published.
Whether the rate plan is a package (bundled with extras).
inclusions object[]nullable
Items included in the rate plan.
Inclusion ID.
Inclusion name.
Inclusion description.
meal objectnullable
Whether breakfast is included.
Whether lunch is included.
Whether dinner is included.
Whether the rate is all-inclusive.
Meal plan name.
Meal plan description.
priceComposition objectnullable
net objectnullable
Net value (before taxes), when available.
Monetary amount.
Currency code (ISO 4217).
taxes objectnullable
Tax amount, when available.
Monetary amount.
Currency code (ISO 4217).
total objectnullable
Total value (net + taxes), when available.
Monetary amount.
Currency code (ISO 4217).
Search identifier to be included in the payload of the subsequent calls of the booking flow, useful for correlating them.
Number of hotels returned on this page.
Total number of hotels available for the given criteria (before pagination).
The page number returned, echoing the request's page.
Total number of pages available for the given criteria.
{
"hotels": [
{
"hotel": {
"id": "string",
"name": "string",
"cityName": "string",
"countryName": "string",
"address": "string",
"position": {
"latitude": 0,
"longitude": 0
}
},
"roomRates": [
{
"rateToken": "string",
"roomType": {
"id": "string",
"name": "string"
},
"time": {
"startDate": "string",
"endDate": "string"
},
"priceComposition": {
"net": {
"value": 0,
"currency": "string"
},
"taxes": {
"value": 0,
"currency": "string"
},
"total": {
"value": 0,
"currency": "string"
}
},
"cancelPolicy": {
"nonRefundable": true,
"inPenalty": true,
"penaltyDate": "string"
},
"paymentOptions": [
{
"type": "string",
"id": "string",
"enabled": true,
"internalType": "string",
"alias": "string",
"description": "string",
"disabledReason": "string",
"credentialType": "string",
"includeExtraOptions": [
{
"id": "string",
"label": "string"
}
]
}
],
"meal": {
"breakfast": true,
"lunch": true,
"dinner": true,
"allInclusive": true,
"name": "string",
"description": "string"
},
"ratePlan": {
"id": "string",
"name": "string",
"type": "string",
"public": true,
"package": true,
"inclusions": [
{
"id": "string",
"name": "string",
"description": "string"
}
]
},
"descriptions": {
"roomType": [
{
"name": "string",
"description": "string"
}
],
"meal": [
{
"name": "string",
"description": "string"
}
],
"ratePlan": [
{
"name": "string",
"description": "string"
}
],
"cancelPolicy": [
{
"name": "string",
"description": "string"
}
],
"generalPolicies": [
{
"name": "string",
"description": "string"
}
],
"payment": [
{
"name": "string",
"description": "string"
}
]
},
"offers": [
{
"name": "string",
"discount": 0,
"freeNights": 0,
"nightsRequired": 0
}
]
}
],
"unavailableRoomRates": [
{
"id": "string",
"roomType": {
"id": "string",
"name": "string"
},
"reason": "string",
"minAdultCount": 0,
"maxAdultCount": 0,
"minChildCount": 0,
"maxChildCount": 0,
"cancelPolicy": {
"nonRefundable": true,
"inPenalty": true,
"penaltyDate": "string"
},
"ratePlan": {
"id": "string",
"name": "string",
"type": "string",
"public": true,
"package": true,
"inclusions": [
{
"id": "string",
"name": "string",
"description": "string"
}
]
},
"meal": {
"breakfast": true,
"lunch": true,
"dinner": true,
"allInclusive": true,
"name": "string",
"description": "string"
},
"priceComposition": {
"net": {
"value": 0,
"currency": "string"
},
"taxes": {
"value": 0,
"currency": "string"
},
"total": {
"value": 0,
"currency": "string"
}
}
}
]
}
],
"searchId": "string",
"count": 0,
"totalCount": 0,
"page": 0,
"totalPages": 0
}