Rooms And Rates

🛏️ Rooms and Rates API

The Rooms and Rates API provides detailed information about hotel rooms and their pricing to help users find the best available options.

The API organizes room and rate data into multiple options, where each option represents a bookable set of rooms. Each rate option includes comprehensive details such as:

KeyDescription
currencyCurrency in which all prices in the response are returned (for example INR). Applies to finalRate
refundabilityWhether the rate can be cancelled for free, for example Refundable or NonRefundable
allGuestInfoRequiredWhether the details of every guest are mandatory at booking, or only those of the lead guest. If true, send all guests details in /hold and /book API
IsPassportMandatoryWhether passport details (number, expiry, issue) must be sent for the guests. If true, a booking without them might fail
IsPanMandatoryWhether panCardNumber must be sent for the guests. If true, a booking without them might fail
roomsDetails of a room, such as name, description, facilities, bed configuration and size
OccupancyNumber of adults and children (with ages) the room or rate is priced for. It matches the occupancies sent in the Search request
Meal option (boardBasis)Meal plan of the rate. boardBasis.type holds the standardized value (for example RoomOnly, BedAndBreakfast) and boardBasis.description holds the supplier text. See the Board Basis documentation below
Pricing (finalRate)Final price for the searched stay, in the response currency
cancellationPoliciesCancellation terms of the rate. Each entry has rules, and each rule has value, start and end, which say what charge applies if the booking is cancelled in that window
optionOne bookable rate for a search. Each option has an optionId, which is required for /pricecheck and /book.
rateThe price and terms for all rooms within an option: finalRate, boardBasis, refundability and cancellationPolicy
roomsRooms of the hotel that have rates for the searched stay. Each room has a roomId, which you send when holding or booking.
standardizedRoomsRooms with their names and details normalized across suppliers, so that the same room from different suppliers is grouped together. Use it to show one clean room list with multiple rates under each room.

➡️ It’s important to proceed with a specific option for booking, as only the rate and rooms from that chosen option will be booked.

🔑 Key Identifier

Each rate option includes a unique ID called recommendationId, which is required for booking.

📦 Key Components of API Response

  • Rooms – Contains room name, description, facilities, bed configuration, and size.
  • Options – Each represents a specific rate. Includes recommendationId.
    • Board Basis - Standardized meal-plan info for each rate (e.g. Room Only, Bed & Breakfast, Half Board).
  • Standardized Rooms – Ensures data consistency by normalizing room details across suppliers.

This API enables seamless integration and provides structured, accurate hotel room pricing information.

Usage: Call Rooms and Rates with the hotelId and traceId from Search. Show the standardized rooms, list the options under each, and let the customer choose one. Send the chosen optionId and the roomIds to /pricecheck and then to /book. Check the passport, PAN and guest info flags before collecting guest details, so the booking form asks for everything the supplier needs.

📘 API Reference: Rooms and Rates API Documentation


🥘 Board Basis (Field Deep Dive)

Each rate returned in the Rooms and Rates response carries its own boardBasis, since different rates for the same room can have different meal plans (e.g. Room Only vs Bed & Breakfast vs Half Board for the same standardized room).

Field in API Response

boardBasis is an object present on every rate - results.options[].rate.boardBasis.

FieldTypeDescription
boardBasisobjectContainer for meal-plan info on a rate
boardBasis.descriptionstringRaw/near-raw text describing what's included (may include extra context like discounts, pax applicability, etc.). Free text, not standardized.
boardBasis.typestringThe standardized board basis bucket, one of the fixed values. This is the field integrations should key off for filtering/display logic.

Example:

"boardBasis": {
  "description": "Room only",
  "type": "RoomOnly"
}

boardBasis.type – Unique Types List

type valueMeaning
RoomOnlyNo meals included
BedAndBreakfastRoom + breakfast included
HalfBoardBreakfast + one more meal (usually dinner) included
FullBoardBreakfast + lunch + dinner included
AllInclusiveAll meals + (typically) drinks/snacks included

This is a closed/fixed list — every rate's boardBasis.type must be one of these 5 values.

Usage – Filters & Standardization of Board Basis

Filters: System filter/sort results by meal plan using boardBasis.type (e.g. "Only Bed & Breakfast options" or "Only Room Only"). Filtering must never be done on boardBasis.description — only on boardBasis.type.
Standardization logic: Volt maps each raw meal-plan string to one of the 5 fixed type values. Examples of raw strings mapped to the same standardized type:
→ RoomOnly: "Room Only", "ROOM ONLY", "room only", "Accomodation only", "Accommodation Only"
→ BedAndBreakfast: "Free breakfast", "Breakfast buffet", "BED AND BREAKFAST", "Bed & Breakfast", "Continental breakfast", "Breakfast Included", "room with breakfast"
→ HalfBoard: "Half board", "HALF BOARD", "breakfast and dinner"
→ FullBoard: "Full board", "FULL BOARD"
→ AllInclusive: "All Inclusive", "All-inclusive", "All Included"

boardBasis.description -

The description field is closer to the raw text and is not guaranteed to be a clean meal-plan phrase — it can carry extra context that has no bearing on type. Below are real patterns grouped by the categories flagged for review:

CategorySample Raw DescriptionStandardizes To
Rules (discounts/policies bundled into the description, unrelated to the meal itself)"10% discount on food & beverages,10% discount on laundry,room only"RoomOnly
"15% discount on food & beverages,10% discount on spa,15% discount on laundry,room only"RoomOnly
"complimentary room upgrade (subject to availability),room only"RoomOnly
"welcome drink on arrival,free stay for the kid,room only"RoomOnly
Views (room-view text mixed into the board-basis description)"premium mountain view room with private balcony room only"RoomOnly
"standard hill view room with breakfast"BedAndBreakfast
"royal deluxe with valley view with breakfast and dinner"HalfBoard
"garden luxury room with breakfast (garden access with mountain view)"BedAndBreakfast
Meal types (explicit meal-plan wording)Breakfast-only phrasing: "Free breakfast", "Breakfast buffet", "Continental breakfast", "BedAndBreakfast"BedAndBreakfast
Half board phrasing: "Free dinner, Breakfast buffet", "breakfast and dinner"HalfBoard
Full board / all-inclusive phrasing: "Full board", "All Inclusive", "All Included"FullBoard / AllInclusive
No-meal phrasing: "nomeal", "Only Bed", "No breakfast service"RoomOnly
Applicability / pax (meal entitlement tied to number of guests)"Breakfast for 2"BedAndBreakfast
"complimentary breakfast will be provided for 2 pax per room."BedAndBreakfast
"Breakfast Included for Adults Only!"BedAndBreakfast
"Breakfast Included for Adults and Child."BedAndBreakfast
"compulsory buffet breakfast, breakfast supplement applicable from 23rd December to 2nd January INR 350/- per person and child within age group of 6 to 12 years INR 175/- per child per day."BedAndBreakfast

Usage – What to show end users
boardBasis.type is what should drive filters, badges/icons, and any comparison logic (e.g. sort by meal plan, "Free Breakfast" badge).
boardBasis.description can be shown as supplementary text under the rate (e.g. small print), since it may contain useful context (pax limits, discounts, exact hotel wording) that type doesn't capture



Did this page help you?