Title
Create new category
Edit page index title
Edit category
Edit link
Transaction List & Flow
The Reseller needs to develop the different transactions in order to get all the information required for creating a reservation that can be successfully sent to the Supplier via the Travel Curious Reseller API.
The order in which the calls are made is very important. IDs received in the responses are used for the next request, which would fail without these IDs.
Transaction Endpoint Summary
| Step | Call | Required | Link(s) |
|---|---|---|---|
| 1 | Get Supplier(s) | Yes | List of Suppliers Single Supplier |
| 2 | Get Product(s) | Yes | List of ProductsSingle Product |
| 3 | Get Rate(s) | Yes | List of Rates Single Rate |
| 4 | Get Price Schedule | Yes | Fetch Price Schedule |
| 5 | Get Availability | Yes | List of AvailabilitiesSingle Availability |
| 6 | Create Hold | Yes (when holdable = true) | Create Hold |
| 7 | Create Booking | Yes | Create Booking |
| 8 | Cancel Booking | Optional but Highly Recommended | Cancel Booking |
| 9 | Get Hold | Optional | Get Hold |
| 10 | Release Hold | Optional | Release Hold |
| 11 | Get Booking | Optional | Get Booking |
Transaction Diagram

Transaction Flow Example
This example demonstrates the steps required for a booking using the Travel Curious Reseller API. The following example walks through a complete booking using {supplier_id}, {product_id}, etc.) with real IDs from your environment.
Note: The examples below use the /v1.3/ base path. If you are integrating with the legacy version, simply replace /v1.3/ with /v1.2/ in the URL string.
Add content=true to fetch rich media and descriptions in
1. Get Supplier
Use this call to discover available Suppliers and retrieve their IDs.
Request
xxxxxxxxxx Response
xxxxxxxxxx 2. Get Product
Retrieve the Products offered by your target Supplier.
Request
xxxxxxxxxx Response
xxxxxxxxxx 3. Get Rate
Retrieve the available Rates for your target Product. Each Rate defines hours, cancellation policy, and hold rules.
Note the holdable and holdablePeriod values - they determine Hold behaviour in Step 6.
bookingQuestions[] array, review each question's phase and scope before proceeding.
Questions with phase: hold must be answered in Step 6 (Create Hold); questions with phase: booking must be answered in Step 7 (Create Booking). See
Holds, Bookings & Cancellations for submission format.
Request
xxxxxxxxxx Response
xxxxxxxxxx 4. Get Price Schedule
Retrieve the active price schedule for the target date range. Price Schedule prices always override the static prices[] in the Rate response - always use them when available.
The response is structured as: { rate_id → { date → [PriceScheduleItem] } }. Use the id from the matching PriceScheduleItem as your priceId in Step 6 (Create Hold) and Step 7 (Create Booking). If startTimes is non-empty, your at time in the Hold must match one of the listed values exactly.
Request
xxxxxxxxxx Response
xxxxxxxxxx 5. Get Availability
Confirm availability for the specific time slot and quantity you intend to hold. Run this check immediately before placing a Hold to avoid failures caused by stale data.
Store the availability id - it is required as availabilityId in the Hold and Booking.
Request
xxxxxxxxxx Response
xxxxxxxxxx 6. Create Hold
Place a Hold to reserve inventory while the guest completes checkout. The Hold locks the selected slot for the duration of the holdablePeriod.
Store the Hold id and note the expires time. The Booking must be created before the Hold expires.
BookingQuestions during the availability or rate phase with a phase: "hold", you must provide the BookingAnswers array in this payload.
Request
xxxxxxxxxx Response
xxxxxxxxxx 7. Create Booking
Convert the Hold into a confirmed Booking. All supplierId, rateId, priceId, and traveler details must match the Hold exactly.
Store the Booking id. Tickets and barcodes are returned here and available via GET/bookings/{booking_id}
BookingQuestions with a phase: "booking", you must provide the BookingAnswers array in the BookingAnswers object of the payload.
Request
xxxxxxxxxx Response
xxxxxxxxxx 8. Cancel Booking (optional, but highly recommended)
Cancel a confirmed Booking using its booking_id. Only available when the Rate's cancelable flag is true.
When available, add more context to Booking cancellations with reason and reasonDetails fields.
Request
xxxxxxxxxx Response
A successful cancellation returns 204 No Content
9. Get Hold (optional)
Retrieve an active Hold by its ID. Returns the same structure as the POST /holds response.
Request
xxxxxxxxxx Response
xxxxxxxxxx 10. Release Hold (optional)
Release a Hold when a guest abandons their cart or closes the browser. This immediately frees the reserved capacity for other customers, rather than waiting for it to expire automatically.
Request
xxxxxxxxxx Response
A successful release returns 204 No Content.
11. Get Booking (optional)
Retrieve a Booking by its ID at any point after confirmation. Useful for polling PENDING bookings and for retrieving ticket data asynchronously.
If the Supplier's system returns a 202 Accepted on booking creation (indicating asynchronous processing), poll this endpoint at a reasonable interval until the status moves from PENDING to OPEN or FAILED.
Request
xxxxxxxxxx Response
xxxxxxxxxx Questions? We'd love to hear them. Contact Travel Curious Support.