Changelog
Stay up to date with the latest enhancements to the Demand API.
January 2026
This release brings mainly updates to Demand API version 3.2 Beta being car rentals the main focus:
- Car rentals – v3.2 Beta:
- New
orders/details/cars/liveendpoint provides enriched live order details. - Updated price structure removes
prepaymentfield and standardisesdisplay/payformat incars/availability. - Bug fix for depot IDs in
cars/availability, now aligned withcars/searchresponse.
- New
- Accommodations – v3.1:
- Bundles enhancements available in
accommodations/availabilityusingextras.include_bundle_variants.
- Bundles enhancements available in
- Orders – v3.2:
labelfield now populated for third-party inventory (TPI) properties in order responses.- The
taxisservice is now returned in order details responses.
Accommodations
| 3.1 | New | Bundles and value added services |
- Bundles and value added services are automatically available across accommodation and orders endpoints.
- However for version 3.1 you must include
extras.include_bundle_variantsin the availability request.- This ensures the response includes all bookable products with bundles, instead of returning only non-bundled products.
See all details in the bundles guide.
Car rentals
| 3.2 Beta | Replace “Prepayment” field in cars/availability |
The
prepaymentfield underpricehas been replaced by the new price structure that includes theunit_amount,displayandpay.
This aligns the response with the cars/search data model.
Before:
{
"price": {
"amount": 33.98,
"prepayment": false
}
}
After:
{
"price": {
"unit_amount": {
"display": {
"value": 33.98,
"currency": "GBP"
},
"pay": {
"value": 33.98,
"currency": "GBP",
"timing": "pay_at_pickup"
}
}
}
}Bug fix in cars/availability
| 3.2 Beta | Bug fix – depot IDs in cars/availability |
The depot IDs returned in the /3.2/cars/search response and depotID returned in the /3.2/cars/availability endpoint were different values.
- /cars/availability was returning the Location ID of the depot incorrectly. To fix this inconsistency, both endpoints now return the
routeobject, that includes the same depot IDs as in /cars/search.
This fix ensures /cars/availability gives the same understanding of where the car will be picked up and dropped off from. Drop off was previously missing here.
Before:
{
"depot": 38566
}After:
"route": {
"dropoff": {
"depot": 14443,
"depot_location_type": "shuttle_bus"
},
"pickup": {
"depot": 14443,
"depot_location_type": "shuttle_bus"
}
}
Orders
Labels for TPI products
| 3.1 | v3.2 | "Label" supported for Third-Party Inventory (TPI) products |
- The existing
labelfield is now also populated for properties with third-party inventory (TPI) rates in Demand API order responses.- Endpoints impacted:
- /orders/details
- /orders/details/accommodation
- /orders/create
What this means
- Partners can apply a single label taxonomy across both Booking.com-sourced and third-party inventory.
- Labels can be used to attribute bookings to specific TPI providers, programmes, or commercial constructs.
This improves post-booking reporting and reconciliation for mixed inventory portfolios that combine Booking.com and TPI rates.
See the Labels and attributions guide for more details.
Example orders/details response:
{
"request_id": "01k9exampletpi0000000000000",
"data": [
{
"id": "509430129718799",
"accommodation": 123456,
"third_party_inventory": true,
"inventory": {
"third_party": true,
"type": "sell"
},
"label": "tpi-partner-x"
}
]
}
Taxi service in orders/details
| v3.2 | "Taxis" available in orders/details |
The /orders/details endpoint now supports taxi orders. You can retrieve detailed information about taxi bookings alongside other travel services such as accommodations, cars, flights, and attractions.
What’s included per taxi leg:
- Pickup and dropoff locations (address, city, country)
- Start and end date-time.
- Leg identifier.
- Reservation identifier (shared across legs in the same taxi order).
- Leg-level status.
- Currencies.
- Leg-level commission.
- Leg-level price (total and commissionable)
- Created and updated timestamps.
Example orders/details response (minimal):
{
"request_id": "01htaxi9ez700example",
"data": [
{
"id": "880045112233",
"affiliate": 111111,
"taxis": [
{
"leg": "607244787653565",
"reservation": "916957580",
"status": "booked",
"start": "2026-03-10T08:00:00Z",
"end": "2026-03-10T09:00:00Z",
"pickup_location": { "city": "Amsterdam", "country": "nl" },
"dropoff_location": { "city": "Utrecht", "country": "nl" },
"price": {
"total": { "booker_currency": 50.0, "product_currency": 50.0 }
}
}
],
"start": "2026-03-10T08:00:00Z",
"end": "2026-03-10T09:00:00Z",
"status": "booked",
"currencies": { "booker": "EUR", "product": "EUR" }
}
],
"metadata": { "next_page": null, "total_results": 1 }
}
New endpoint
| 3.2 Beta | New | New endpoint: orders/details/cars/live |
- The orders/details/cars/live endpoint provides enriched, live car order details, including driver information, supplier, pricing breakdown, payment timing, and operational pick-up/drop-off instructions.
- Currently, requests are limited to a single reservation ID.
This endpoint will merge into /orders/details/cars in v3.3.
Example response:
{
"request_id": "123456789",
"data": {
"reservation_id": "ABC123",
"driver": { "name": "John Doe", "age": 35 },
"supplier": { "id": 3486, "name": "Premium Cars" },
"price": {
"unit_amount": { "display": { "value": 150, "currency": "EUR" }, "pay": { "value": 150, "currency": "EUR", "timing": "pay_online_now" } },
"total_amount": { "display": { "value": 180, "currency": "EUR" }, "pay": { "value": 180, "currency": "EUR", "timing": "pay_online_now" } }
},
"route": {
"pickup": { "depot": 243816, "depot_location_type": "meet_greet" },
"dropoff": { "depot": 243816, "depot_location_type": "meet_greet" }
}
}
}"Prepayment" removal
| 3.2 Beta | Removal of “Prepayment” field in orders/preview |
The
prepaymentfield under the price object is no longer needed, as payment timing is already included inprice.
Before:
"products": [
{
"id": "10000000006012",
"type": "baby_seat",
"selected_quantity": 1,
"mode": "per_rental",
"price": {
"unit_amount": {
"display": {
"value": 25,
"currency": "EUR"
},
"pay": {
"value": 25,
"currency": "EUR",
"timing": "pay_online_now"
}
},
"total_amount": {
"display": {
"value": 25,
"currency": "EUR"
},
"pay": {
"value": 25,
"currency": "EUR",
"timing": "pay_online_now"
}
},
"prepayment": true
}
},
After:
"products": [
{
"id": "10000000006012",
"type": "baby_seat",
"selected_quantity": 1,
"mode": "per_rental",
"price": {
"unit_amount": {
"display": {
"value": 25,
"currency": "EUR"
},
"pay": {
"value": 25,
"currency": "EUR",
"timing": "pay_online_now"
}
},
"total_amount": {
"display": {
"value": 25,
"currency": "EUR"
},
"pay": {
"value": 25,
"currency": "EUR",
"timing": "pay_online_now"
}
},