The same routes exist for the dashboard under
/organizations/:orgId/hotels/… (roles with bookings:read / bookings:create).
Flow. search returns room products with an indicative price (total for the stay, nightly per room per night).
quote re-checks the live rate with the supplier and returns a firm
price and quoteId, valid for 15 minutes. bookings charges exactly the
quoted amount — you never send a price — then places the order.
201BOOK_SUCCESS: confirmed (hotelConfirmCodewhen the hotel issues one).202BOOKING/RETRY_PENDING: still being confirmed; poll the booking.202BOOK_FAIL: not booked;refundedis the full price, already back in your wallet.failureReasonisrejected_by_hotel, orsupplier_unavailablewhen the problem is on GTW’s side (tell your user to try again later).402 insufficient_funds/credit_limit_exceeded/invoice_overdue: nothing was booked. Top up and retry with the same Idempotency-Key.409 price_changed: the rate moved after the quote. Nothing was charged; quote again.409 quote_used,410 quote_expired.
Idempotency-Key never books or
charges twice. Use customerReference for your own traveller or staff id.
Cancellation. Allowed for BOOK_SUCCESS, BOOKING, RETRY_PENDING. If
the supplier’s answer is lost the booking shows CANCELING and settles on its
own; poll it. 409 booking_busy means another update is in progress: retry.
On CANCEL_SUCCESS you are refunded your price minus the supplier’s
cancellation penalty, in proportion (see the booking’s refundRules).