Hotel API
Search 1.5M+ properties by city code (IATA-style, e.g. DXB) or by the hotel codes you store from our catalogue, read room-level rates with board basis and cancellation policy, validate and book, cancel under the policy.
Search
POST /v1/hotels/search with a destination and check-in/out dates and one to eight rooms (adults and child ages per room). The destination is a cityCode (IATA-style, e.g. "DXB" — GET /v1/content/cities lists them), a list of hotelCodes from the catalogue you store on your side (GET /v1/content/hotels per city), or a geo circle. Name matching is yours to do against your stored list; availability is always asked by code.
With wait=true you get the full result set; with wait=false a searchId to poll with GET /v1/hotels/search/{searchId} — pass the same dates and room count so rate keys stay bookable. Each hotel carries its content (name, stars, address, geo, hero image, facilities) and the cheapest rate per room with an opaque rateKey, the total and nightly prices, board basis, refundability and the cancellation deadline.
Rooms and rates
GET /v1/hotels/{hotelCode}/rooms?rateKey=… lists every room type and rate of one property for the searched stay: bed types, occupancy, board, policies, taxes and fees broken out, and whether the rate is refundable.
Rate check
POST /v1/hotels/rates/{rateKey}/check confirms the rate is still bookable and returns the final price and policy. Do this immediately before booking: a 409 price_changed or rate_expired here is far cheaper than a failed booking.
Book
POST /v1/hotels/bookings with the rateKey, the holder, guests per room and a contact, plus an Idempotency-Key. The response is the booking with its reference, the supplier confirmation and the voucher data. GET /v1/hotels/bookings/{bookingId} returns it again at any time.
Cancel
GET /v1/hotels/bookings/{bookingId}/cancellation-quote returns the penalty under the policy at this moment; POST /v1/hotels/bookings/{bookingId}/cancel (Idempotency-Key required) commits it.