
# Booking Flow

The TTDbooking Stays API exposes one interface for searching, booking and managing accommodation reservations across the suppliers connected to your account.

Creating a booking takes four calls, made in order:

| #   | Step                                                                                                                         | Endpoint     |
| --- | ---------------------------------------------------------------------------------------------------------------------------- | ------------ |
| 1   | [Search for stays](#1-search-for-stays-hotellist)                                                                            | `HotelList`  |
| 2   | [Retrieve every room and rate for a chosen property](#2-retrieve-all-available-room-rates-for-your-chosen-result-hotelrates) | `HotelRates` |
| 3   | [Re-check final availability and price](#3-perform-final-availability-and-price-recheck-checkavail)                          | `CheckAvail` |
| 4   | [Create the booking](#4-create-a-booking-book)                                                                               | `Book`       |

---

## 1. Search for stays `HotelList`

Discovery starts here. `HotelList` takes your stay dates and guest counts and returns the properties that can be sold for those criteria — unavailable properties are filtered out before the response is built.

A `HotelList` result is a summary, not a full inventory listing: it will not necessarily carry every room and rate a property has on sale. What it always carries is the lowest available starting price for each result.

## 2. Retrieve all available room rates for your chosen result `HotelRates`

Take a result from step 1 and call `HotelRates` to expand it into the complete set of bookable rooms and rates for that property.

One property normally has several room types, and each room type can be offered as more than one package. What separates those packages is what they include and the policies attached to them — the identical room can carry different prices depending on whether it is non-refundable, comes with breakfast, or is fully flexible.

Record the `RatePkgId` of the exact package the traveller picks. That identifier is what steps 3 and 4 operate on; without it you cannot re-check or book the selected offer.

## 3. Perform final availability and price recheck `CheckAvail`

Hotel inventory moves constantly, and both price and availability can shift between search and checkout. `CheckAvail` exists to catch that drift before it turns into a failed booking attempt.

Call it immediately before `Book` to confirm in real time that the offer behind your `RatePkgId` is still on sale at the price you are showing.

## 4. Create a booking `Book`

`Book` submits the confirmation request for the package identified by `RatePkgId`. On success the response returns the full set of booking details.

For the complete request and response contract — every field you may send and everything you get back — see the [API Reference](https://developer.ttdbooking.com/hotel-api/docs).

---

## Need help?

Questions about the booking flow or your integration: **integrations@ttdbooking.com**
Full documentation: **[developer.ttdbooking.com/hotel-api/docs](https://developer.ttdbooking.com/hotel-api/docs)**
