unifystays
Booking architecture

Hotel API Booking Flow: Search, Review, Book and Cancel

A production hotel API booking flow moves from search to room selection, price and availability review, booking creation, status confirmation and cancellation. Each stage issues identifiers used by the next stage, and the application must handle expiry, price changes, duplicate submissions and uncertain supplier outcomes.

2. Retrieve rates and review the selection

Room and rate retrieval exposes policies and option details. Review or prebook then checks that the exact option remains available at the expected price before checkout commits.

3. Create the booking safely

Booking is a side-effecting operation. Use a client-generated idempotency key where supported, persist the attempt before retrying and distinguish a confirmed failure from an unknown outcome that requires status reconciliation.

4. Confirm status and cancel

A booking response should not be treated as the only source of truth. Persist provider references and booking events, support status retrieval, and apply the supplier-returned cancellation policy rather than a generic rule.

Primary sources

External technical details referenced on this page are linked to their original publisher.

Frequently asked questions

Why is review or prebook required?+

Hotel rates and availability can change between search and checkout. Review confirms the selected option immediately before booking.

What if the booking request times out?+

Do not blindly create another reservation. Reconcile using the idempotency key, internal attempt record and supplier booking-status operation.

Where does payment happen?+

Payment and settlement vary by product and supplier contract. The booking API should clearly state whether it expects payment confirmation, a guarantee or only traveller details.

Free public beta

Build one hotel integration that can grow with your supply.

Create an organization, issue an API key and configure an available supplier connection without a sales call.

Create beta account →Contact the team