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.
Request body
Example request
{
"guests": [
{
"title": "Mr"
}
]
}Response
Booking started — poll the returned booking_job_id