v16

latestOpenAPI 3.1.0MITraw.githubusercontent.com2026-08-04121623.5 KB
Hotels

Start a hotel booking (asynchronous)

Returns a booking_job_id, not a booking. A real booking takes minutes: the rate is re-blocked at the supplier, the card charged, and the room committed. Poll GET /api/v1/hotels/booking/{booking_job_id} until status is succeeded or failed.

This is not ceremony — it is what makes it impossible to charge a card and then lose the confirmation to a timeout.

The 10% reservation fee is charged BEFORE the room is committed, so a declined card costs nothing: no reservation exists and nothing is charged.

Send expected_price and expected_balance back exactly as search returned them. The booking is refused if the supplier's price has moved, so a guest is never charged a price they did not agree to.

NOT idempotent. Calling twice for the same rate books the room twice and charges two fees.

post/api/v1/hotels/book

Request body

session_idstring required
hotel_codeinteger required
combination_id_v2string required

Identifies the exact rate. Room name alone is ambiguous.

combination_idinteger
expected_pricenumber required

The offer's price, verbatim.

expected_balancenumber required

The offer's balance_to_supplier, verbatim.

hotel_namestring
city_idinteger required
city_namestring required
check_instring date required
check_outstring date required
adultsinteger
emailstring required

The voucher and pay link go here. A typo loses the booking.

phonestring required
phone_country_codestring
special_requestsstring[]

Example request

{
  "guests": [
    {
      "title": "Mr"
    }
  ]
}

Response

Booking started — poll the returned booking_job_id