Getting Started with the Xeni Activities APIHow to Book an ActivityHow to Browse Activity Tags and CategoriesHow to Cancel an Activity BookingHow to Check Activity AvailabilityHow to Get Activity DetailsHow to Retrieve Activity Booking DetailsHow to Search for Activities with FiltersHow to Search for Activity DestinationsCar Rental API - Getting StartedCar Rental API - Understanding Response FieldsHow to Book a Car RentalHow to Get Rental Car Details and Equipment Add-OnsHow to Retrieve or Cancel a Car Rental BookingHow to Search for Available Rental CarsHow to Search for Pickup LocationsHow to Use Car Rental Search FiltersDeals API Best Practices for IntegrationDeals API Frequently Asked QuestionsGetting Started with the Xeni Deals APIDeals API Request Parameters and Headers ReferenceDeals API Supported Currencies and LocalizationHow to Display Deals in Your ApplicationHow to Fetch Hotel Deals by LocationFlights API Error Codes and TroubleshootingGetting Started with the Xeni Flights APIHow to Book a FlightHow to Check Flight Availability and PricingHow to Confirm or Cancel a Flight BookingHow to Retrieve Fare Rules for a FlightHow to Retrieve Flight Booking DetailsHow to Search for Airports Using AutocompleteHow to Search for FlightsHow to Use Flight Search Filters, Sorting, and PaginationHow to Check Room Availability and PricingHow to Filter Vacation Rental ResultsHow to Get Resort Property Details, Amenities, and AccessibilityHow to Hold and Confirm a Resort BookingHow to Release a Resort HoldHow to Retrieve Resort Booking DetailsHow to Search for Available ResortsHow to Search for Resort DestinationsHow to Search for Vacation Rental LocationsHow to Search for Vacation RentalsHow to Use Resort Search Filters and SortingGetting Started with the Xeni Resorts APIResorts API: Understanding Booking Statuses and PoliciesGetting Started with the Vacation Rentals APIVacation Rentals Frequently Asked QuestionsVacation Rentals Supported Property TypesUnderstanding Async Search for Vacation RentalsAuthentication & API SignaturesBooking Hotels — Direct API & SSO CheckoutError Handling, Rate Limits & Best PracticesGetting Started with the Xeni Hotels APIManaging Bookings: Status, Retrieval & CancellationPricing Confirmation & Token LifecycleRetrieving Hotel Details & Room AvailabilitySearching for Hotels: Locations, Filters & PaginationSearching for HotelsSession Management & Correlation IDsAPI authentication and getting your API keys

How to Check Room Availability and Pricing

Last updated: 2026-03-03

How to Check Room Availability and Pricing

Before creating a booking, you must first check room availability for a specific property and then confirm the final pricing. These two steps ensure that the room is available and that the rate is locked in before you proceed to the booking stage.

Step 1: Check Room Availability

Endpoint

GET {{api_host}}/resorts/api/v2/properties/availability

Required Headers

HeaderValueRequired
x-api-keyYour API keyYes
x-correlation-idUnique correlation identifierYes

Query Parameters

ParameterTypeRequiredDescription
propertyidstringYesThe property ID from the search results
checkinstringYesCheck-in date in YYYY-MM-DD format
checkoutstringYesCheck-out date in YYYY-MM-DD format
currencystringYesThree-letter ISO 4217 currency code
recommendationidstringYesThe recommendation ID from the search results

Example Request

GET {{apihost}}/resorts/api/v2/properties/availability?propertyid=RST-98765&checkin=2026-04-01&checkout=2026-04-07&currency=USD&recommendation_id=rec-abc123

Example Response

JSON
{
  "status": 200,
  "data": [
    {
      "checkin_date": "2026-04-01",
      "checkout_date": "2026-04-07",
      "token": "tkn-xyz789",
      "base_rate": 245,
      "taxesandfees": 38.5,
      "total_rate": 1710,
      "kitchen_type": "full",
      "max_occupancy": 6,
      "room_name": "Oceanview Two-Bedroom Suite",
      "recommendation_id": "rec-abc123",
      "published_price": 1850
    },
    {
      "checkin_date": "2026-04-01",
      "checkout_date": "2026-04-07",
      "token": "tkn-def456",
      "base_rate": 195,
      "taxesandfees": 30.75,
      "total_rate": 1365,
      "kitchen_type": "partial",
      "max_occupancy": 4,
      "room_name": "Garden View One-Bedroom",
      "recommendation_id": "rec-abc123",
      "published_price": 1500
    }
  ]
}

Response Fields

FieldTypeDescription
checkindatestringCheck-in date
checkoutdatestringCheck-out date
tokenstringRoom-specific token. Required for the pricing and booking steps.
baseratenumberNightly base rate
taxesandfeesnumberTotal taxes and fees for the stay
totalratenumberTotal cost for the entire stay
kitchentypestringType of kitchen: "full", "partial", or "mini"
maxoccupancynumberMaximum number of guests the room accommodates
roomnamestringDisplay name of the room type
recommendationidstringRecommendation identifier carried forward from search
published_pricenumberOriginal published rack rate

Important Notes

  • Each room in the response has its own token. Save the token for the specific room the user selects — it is required for the pricing confirmation step.
  • Availability results are real-time but not held. Another guest could book the room between your availability check and your booking attempt. Always proceed to pricing confirmation promptly.

Step 2: Confirm Pricing

After the user selects a room, confirm the final pricing before creating a booking.

Endpoint

GET {{api_host}}/resorts/api/v2/properties/price

Required Headers

HeaderValueRequired
x-api-keyYour API keyYes
x-correlation-idUnique correlation identifierYes

Query Parameters

ParameterTypeRequiredDescription
checkinstringYesCheck-in date in YYYY-MM-DD format
checkoutstringYesCheck-out date in YYYY-MM-DD format
propertyidstringYesThe property ID
currencystringYesThree-letter ISO 4217 currency code
recommendationidstringYesThe recommendation ID from search
tokenstringYesThe room-specific token from the availability response

Example Request

GET {{apihost}}/resorts/api/v2/properties/price?checkin=2026-04-01&checkout=2026-04-07&propertyid=RST-98765&currency=USD&recommendation_id=rec-abc123&token=tkn-xyz789

Example Response

JSON
{
  "status": 200,
  "data": {
    "sessionId": "sess-001234",
    "propertyId": "RST-98765",
    "availability": [
      {
        "checkInDate": "2026-04-01",
        "checkOutDate": "2026-04-07",
        "baseRate": 245,
        "taxesAndFees": 38.5,
        "totalRate": 1710,
        "currency": "USD",
        "roomName": "Oceanview Two-Bedroom Suite",
        "token": "tkn-xyz789",
        "recommendationId": "rec-abc123",
        "publishedPrice": 1850
      }
    ]
  }
}

Response Fields

FieldTypeDescription
sessionIdstringSession identifier for this pricing confirmation
propertyIdstringThe property ID
availability[].checkInDatestringCheck-in date
availability[].checkOutDatestringCheck-out date
availability[].baseRatenumberConfirmed nightly base rate
availability[].taxesAndFeesnumberConfirmed taxes and fees
availability[].totalRatenumberConfirmed total rate for the stay
availability[].currencystringCurrency code
availability[].roomNamestringRoom type name
availability[].tokenstringRoom token
availability[].recommendationIdstringRecommendation identifier
availability[].publishedPricenumberPublished rack rate

Important Notes

  • Field naming convention — The pricing endpoint returns fields in camelCase (e.g., checkInDate, baseRate), unlike the availability endpoint which uses snakecase (e.g., checkindate, base_rate). Account for this difference in your integration.
  • Use the confirmed totalRate — The pricing response reflects the final, confirmed rate. Always use this value (not the earlier availability or search rate) when creating the booking. If the total_rate in your booking request does not match, the API returns a 400 error.

Typical Flow

  1. Search — Find resort properties by destination and dates.
  2. Availability — Check which rooms are available at a specific property.
  3. Price — Confirm the final rate for the selected room.
  4. Book — Create a hold using the confirmed rate and token.

Was this article helpful?