Changelog archive
Find here a comprehensive history of all updates, improvements, and bug fixes across versions.
Each entry provides a detailed log of changes made to Demand API, including new features, enhancements, and any resolved issues, divided by endpoints and/ or travel services.
This archive serves as a valuable resource for understanding the evolution of the product over time and tracking its progress.
August 2025
✓ New long_stay_friendly_home
and work_friendly_home
tags in /accommodations/details to help partners filter "Home properties" for long stays or remote work needs.
✓ New credit_slip_number
field in /orders/details/accommodations (replacing the deprecated credit_slip
).
✓ New depot_location_type
filter in /search and /cars/depots for clearer, location-based pick-up options.
Accommodation
accommodation/details
| New | long_stay_friendly_home
| /accommodations/details| version 3.1 | homes |
A new boolean field,
long_stay_friendly_home
has been added to the accommodations/details endpoint response.
- Indicates if a "Home accommodation" is suitable for long stays (for example, it may include its own kitchen facility -ID 45-)
| Replacement | work_friendly_home
| /accommodations/details| version 3.1 | homes |
The
work_friendly_home
boolean field replaces the deprecatedis_work_friendly
tag in the accommodations/details endpoint response.
- Indicates whether the "Home accommodation" supports work-friendly conditions, such as a desk and chair, reliable Wi-Fi, or a co-working area.
The is_work_friendly
field is deprecated and will be removed in v3.2
What is a Home accommodation? A more personal—and often less standardised—alternative to traditional hotels, including: apartments, vacation rentals, B&Bs, farm stays, bungalows, etc.
Car rentals
cars/search and cars/depots
| New | depot_location_type
| cars/search and cars/depots | version 3.1
A new filter,
depot_location_type
, is now available in /search requests and cars/depots response.
- Use
filters.depot_location_type
to search for depots based on location type.- This allows you to provide travellers with clear information about pick-up points (e.g. in_terminal, downtown, train_station).
- This field is optional and may be null if the location type is not defined.
Example - Search request with depot_location_type filter:
{
"booker": {
"country": "nl"
},
"filters": {"depot_location_type": "downtown"},
"currency": "EUR",
"driver": {
"age": 35
},
"route": {
"dropoff": {
"datetime": "2025-09-19T11:05",
"location": {
"airport": "AMS"
}
},
"pickup": {
"datetime": "2025-09-17T11:05",
"location": {
"airport": "AMS"
}
}
}
}
These enhancements are backward-compatible. Partners not using the new parameters or fields can continue to integrate as before.
Orders
Orders/details/accommodations
| New | credit_slip_number
| /orders/details/accommodations | version 3.1
A new field,
credit_slip_number
has been added to the to the orders/details/accommodations endpoint responses.
- Previously, the response included
credit_slip
(an integer used only for internal purposes).- The new
credit_slip_number
field is a string containing the actual credit slip number relevant for partners.
The Credit_slip
field is deprecated and will be removed in v3.2
July 2025
Car rentals
Increased maximum page size
| Update | maximum_results=500
| cars/search endpoint | version 3.1
We have increased the maximum allowable page size for the /search endpoint from 100 to 500 results per page.
Partners can now request up to 500 results in a single page using the
maximum_results
parameter (e.g.,maximum_results=500
).
- Requests exceeding 500 will return an appropriate 4xx error.
- Pagination metadata (e.g.,
next_page
) works as expected with larger page sizes. - If fewer than 500 results are available, all results are returned in a single page.
Reduced client-side timeouts, fewer API requests, and more efficient data aggregation.
This change does not impact partners who continue to use smaller page sizes.
New response field – search token in /search
| New | search_token
| cars/search endpoint | version 3.1
We have introduced a new field,
search_token
, to the /search response.
- When supplied, the API will use the stored search context associated with the token, reducing the need to resend the entire search payload (such as route, filters, or booker country).
How to use it:
- The first search request includes a
search_token
value in the response. - Include the
search_token
in subsequent requests to cars/availability and orders/preview endpoints (from v3.2) instead of resending the full search criteria.
Note: This field is only useful for Demand API v3.2
New response field – insurance package in /search
| New | insurance_package
| cars/search endpoint | version 3.1
We have added a new field,
insurance_package
, to the /search responses.This field indicates the level of insurance included by the supplier with each car rental product (different from optional insurance extras).
basic
: Standard supplier insurance (may involve higher excess).inclusive
: Enhanced insurance coverage included.zero_excess
: Full coverage with no excess liability.
Enables partners to show clear, upfront insurance details to customers.
These enhancements are backward-compatible. Partners not using the new parameters or fields can continue to integrate as before.
June 2025
✓ Car rental deals - Car deals are now included in cars/search results.
✓ Third-party inventory (TPI) reporting - TPI products now appear in orders/details and orders/details/accommodationsresponses for post-booking reporting.
✓ Cancellation original_total_price - This new field indicates the total amount that would have been charged if the booking had not been cancelled.
Orders
Post-booking reporting for Third-party inventory properties (TPI) properties
| New | inventory_type
object | orders/details and orders/details/accommodations endpoints |
The
inventory_type
object has been added to the orders/details and orders/details/accommodations responses.What this means:
- Indicates whether the property is part of third-party inventory (TPI).
- Specifies the applied rate type (e.g.
sell
ornet
).- Enables unified reporting for both Booking.com-sourced and TPI rates.
Example of orders/details response:
"third_party_inventory": true,
"inventory": {
"third_party": true,
"type": "sell"
}
Find more details, see the Third-party inventory quick guide.
New original_total_price field under cancellation_details
| New | original_total_price
field | orders/details/accommodations endpoint |
A new field called
original_total_price
has been added under thecancellation_details
object in the orders/details/accommodations response.What this means:
- This represents the total amount that would have been charged if the booking had not been cancelled. Includes all charges, taxes, and mandatory fees.
- It reflects the final payable amount at the time of booking, before any refunds or cancellations.
- Helps partners better understand refund calculations in context of original booking value. Example:
"cancellation_details": {
"at": "2025-06-15T10:42:00Z",
"fee": {
"accommodation_currency": 50.00,
"booker_currency": 53.75
},
"original_total_price": {
"accommodation_currency": 250.00,
"booker_currency": 268.75
}
}
For full details, refer to the description provided in the Pricing breakdown guide.
Car rentals
Car rental deals in search results
| New | deal
object | cars/search endpoint |
The
deal
object is now included in the response for the cars/search endpoint:What this means:
- Provides details of deals applied to car rental products.
- Includes discount percentage, price before discount, and deal tags (e.g.
black_friday
,mobile_rate
).
Example of cars/search response:
{
"deal": {
"discount_percentage": 15,
"public_price": 1069.93,
"tags": [
"genius"
]
}
}
Learn more in the Car deals dedicated guide.
Bug fixes
Bug fixes | Title | Issue | Solution |
---|---|---|---|
✓ | Reservation modifications. | In some cases, reservations could not be modified due to missing data at the time of booking. | This has been resolved. New reservations can now be modified without issues. |
✓ | Payment instructions for Japanese hotels. | Payment instructions are not supported for many Japanese hotels due to a high rejection rate. However, some hotels incorrectly displayed a list of virtual cards in accommodations/details . | This has been corrected. The list now appears empty to clearly indicate that payment instructions are not possible. |
✓ | Missing details in important_information field (accommodations/details). | The important_information field in accommodations/details was missing certain content. | This has now been fixed. The field is aligned with the property's configuration in the extranet and accurately reflects all key guest-facing details. |
May 2025
This month, we focused on:
✅ Messaging API – New endpoints enabling two-way post-booking communication between accommodation hosts and guests (available to pilot partners only).
✅ TPI Net rates – Soft launch of net rates support for third-party inventory (TPI) accommodation.
Messaging API
🎉 New API collection launched on pilot programme!
| Addition | Messaging API collection | new endpoints | Available to pilot partners |
We’ve introduced a full Messaging API collection that supports two-way post-booking communication between guests and accommodation hosts.
Endpoint | Use it to ... |
---|---|
/messages/send | Send a message to start or continue a conversation. |
/messages/latest | Retrieve up to the 100 most recent messages. |
/messages/latest/confirm | Confirm receipt of messages from /messages/latest. |
/messages/conversations | Fetch the full message history (up to 1 year after checkout). |
/messages/attachments/upload | Upload an image file (up to 1 MB) to a conversation. |
/messages/attachments/metadata | Retrieve metadata for an uploaded attachment (e.g. name, size, type). |
/messages/attachments/download | Download an attachment using its ID and conversation context. |
- View the Messaging API reference.
- Read the Messaging guidelines.
Third-party inventory properties (TPI)
| Addition | Net rates | New TPI rates | Available to pilot partners
In addition to Sell rates, the Demand API now supports Net rates for third-party inventory properties. These rates can be identified in search and availability responses by checking the
inventory_type
field.
- It indicates the applied rate (e.g., "sell" or "net").
Example of accommodations/search response:
"third_party_inventory": true,
"inventory": {
"third_party": true,
"type": "net"
}
Learn more in the Third-party inventory section.
April 2025
This month, we focused on:
✅ Orders modifications - Continued progress has been made in expanding the available modification options for pay at the property accommodation orders.
✅ Car rentals - Introduced new search filters, extended policy information in car rental responses and a new constants endpoint!.
Orders
/orders/modify
| Addition | orders/modify | Room details modifications | Available to all partners |
You can now modify additional room-level details using orders/modify endpoint for accommodation orders made on Pay at the property properties. This includes:
- Guest allocation (e.g. number of adults).
- Guest names.
- Smoking preference.
Please note, this feature is only available for accommodations that offer "Pay at the property" options and does not apply to bookings with online payment.
Example request – Modify room details:
{
"order": 5000375899,
"modification": {
"accommodation": {
"reservation": 5000375899,
"type": "room",
"change": {
"room_reservation": 5448643068,
"allocation": {
"number_of_adults": 2
},
"guests": [
{
"name": "Test Test"
},
{
"name": "Test2 Test"
}
],
"smoking_preference": "smoking"
}
}
}
}
For additional examples and usage guidance, see the orders/modify dedicated guide.
Car rentals
cars/constants
🆕 New endpoint!
| Addition | cars/constants | new endpoint | Available to all partners |
We've introduced the cars/constants endpoint to help you fetch translatable constant values used across the Cars API.
Use this endpoint to retrieve internal codes and their corresponding names in one or more languages.
It supports filtering by constant type and enables multi-language output using IETF language tags.
cars/search
🆕 New filters added
| Addition | cars/search | Extended car search filters | Available to pilot partners
Pilot partners can now refine car rental searches using the following filters:
These are the filters added:
air_conditioning
car_categories
depot_location_type
mileage_type
number_of_seats
supplier_ids
transmission_type
Example request - Using depot_location_type
filter
{
"booker": {
"country": "nl"
},
"currency": "EUR",
"driver": {
"age": 36
},
"route": {
"dropoff": {
"datetime": "2025-11-10T11:05:00",
"location": {
"city": -2140479
}
},
"pickup": {
"datetime": "2025-11-05T11:05:00",
"location": {
"city": -2140479
}
}
},
"filters": {
"depot_location_type": "in_terminal"
}
}
For a complete list of filters and usage details, refer to the Car filters guide.
🆕 Additional policy fields
| Addition | cars/search | New policies | Available to car rentals pilot partners
Car rental search responses now include extra policy fields to provide more transparency on potential charges:
These are the new policies added:
damage_excess
: Maximum amount chargeable for car damage during rental.deposit
: The amount that will be temporarily pre-authorised or blocked on the traveller’s credit card at the rental location as a security deposit, to cover potential damage or extra charges.theft_excess
: The maximum amount a traveller may be charged in the event of car theft during the rental period.
Example response – Including new policies:
{
"request_id": "01h00fr9y7qkbxtc6kyv97j49z",
"data": [
{
"car": 122655,
"policies": {
"cancellation": {
"type": "free_cancellation",
"details": {
"context": "before_pickup",
"duration": "P7D"
}
},
"damage_excess": 3000,
"deposit": 1500,
"fuel": "return_same",
"mileage": {
"distance": 200,
"distance_unit": "kilometers",
"fee": 12.54,
"type": "limited"
},
"payment": {
"timing": "pay_now"
},
"theft_excess": 3000
},
"price": {...
},
"route": {
"dropoff": {
"depot": 112314
},
"pickup": {
"depot": 112314
}
},
"supplier": 7455,
"url": {
"app": "booking://page",
"web": "https://example.com"
}
}
],
"metadata": {
"next_page": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7Im1heGltdW1fcmVzdWx0cyI6MTAsIm9mZnNldCI6MTB9LCJhdWQiOiJDQVJTX1NVUFBMSUVSUyIsImV4cCI6MTY4MzY0NzMwNX0.y7NmH48mm7lImd2WxsHdotj6n-dVQAzJCGCnIJCKy3A",
"total_results": 122
}
}
March 2025
This month, we've focused on improving the orders and accommodation features in Demand API v3.1. These are some of the key highlights:
Orders
/orders/modify
| Addition | New endpoint | Available to all partners |
We have introduced a new orders/modify endpoint, enabling you to modify certain details of an existing accommodation order.
The initial functionality supports modifications in the following areas:
- Payment card details.
- Checkin and checkout dates.
Please note, this feature is only available for accommodations that offer "Pay at the property" options and does not apply to bookings with online payment.
Example for modifying payment card details:
{
"order": "4334069995",
"modification": {
"payment": {
"type": "card",
"change": {
"number": "4111111111111111",
"cvc": "737",
"cardholder": "Jon Snow",
"expiry_date": "2030-03"
}
}
}
}
For further examples and instructions, refer to the orders/modify dedicated guide.
/orders/details/accommodations
| Addition | key collection information | Available to all partners |
- The key
key_collection_information
field has been included into the orders/details/accommodation endpoint.
- This field refers to the details on how the property keys for check-in purposes can be collected by the guests.
Example for an alternate location key collection:
{
"key_collection_information": {
"alternate_location": {
"address": "jkfbnfk 8",
"city": "jfwbwfw",
"postal_code": "12345"
},
"checkin_method": "other",
"key_location": "key_location_at_the_property"
}
}
Accommodation
accommodations/search
| Addition | inventory_type | Third-party inventory properties (TPI) |
The
inventory_type
object is now included in the response for the accommodations/search.
- This object indicates whether the property is part of a third-party inventory and specifies the rate applied (e.g., "sell" rate).
Example of accommodations/search response:
"third_party_inventory": true,
"inventory": {
"third_party": true,
"type": "sell"
}
Find more details in the Third-party inventory quick guide.
Bug fixes
✅ | Pay_online_later | A bug that was preventing pay_online_later reservations from being made between 3 and 6 days before the end of the free cancellation period has been fixed. |
✅ | Business_information.billing.address | If business_information.billing.address was passed but had no email in it, the request was failing. This is now fixed. |
✅ | Last four digits of the credit card number | Now the last four digits of the credit card number used for the reservation are stored in our internal systems also in case of Payment by Booking. |
✅ | Payment.card.authentication | The API misinterpreted an invalid “authentication”:{}, and, instead of rejecting it, it would bypass the check of whether the partner was authorised to pay online. Now such input is rejected. |
February 2025
This month we've focused on improvements to orders and accommodation features in Demand API v3.1. These are some of the key highlights:
Orders
/orders/create
| Replacement | 3d secure authentication_value |
We have included the
authentication_value
field in thepayment.card.authentication.3d_secure
object within orders/create response.
- It accommodates 3D Secure's authenticationValue.
- It replaces
cavv
, which was used for the deprecated 3D Secure v1, a version no longer supported by Demand API V3.Example:
"authentication": {
"3d_secure": {
"authentication_value": "AAAAAAAAAAAAAAA4l4AAAAAAAAA=",
"eci": "05",
"transaction": "00000000-0000-0000-0000-000000000000"
}
}
For more details refer to the Credit card + SCA use case
| Addition | booker_address_required |
Previously when creating an order all fields of the
booker.address
object were mandatory. However, from now on only thecountry
field is required:
"booker": {
"address": {
"country": "nl"
}
}
The other fields within the
booker.address
object are subject to the value returned in thebooker_address_required
field within the accommodations/details response.
- If the /accommodations/details endpoint indicates that the booker's address is needed ( via the
booker_address_required=true
flag), the full address is mandatory in the orders/create request.- If the
booker_address_required
flag is false, the booker's address can be omitted.
Example of accommodations/details response with booker_address_required=true
{
"request_id": "01jmmjn081ta8d5a0kt83sgg1d",
"data": [
{
"id": 10507360,
"name": {
"en-gb": "Demand API Sandbox Hotel Orion"
},
"accommodation_type": 204,
"booker_address_required": true,
"brands": [],
"checkin_checkout_times": {...},
Example of orders/create response with booker.address
filled:
"booker": {
"address": {
"address_line": "Road-1, house-2",
"city": "Amsterdam",
"country": "nl",
"post_code": "11111"
},
Refer to the orders/create guide for more details and examples.
| Addition | confirmation id and checkin_number | third party inventory properties |
Two new fields have been included in the orders/create response for third-party inventory properties:
checkin_number | The number required at the time of check-in. It allows guests to confirm their order at the accommodation. |
confirmation_number | Used in conjunction with the pincode to verify the customer's order and assist with customer support or troubleshooting. |
Example of the order response:
{
"accommodation": {
"order": "509430129718799",
"pincode": "0000",
"reservation": 12345678,
"third_party_inventory": {
"checkin_number": "123456789",
"confirmation_number": "12345678912345678912"
}
}
}
Refer to the third_party_inventory guidelines for further details.
/orders/preview
| Addition | inventory_type | third party inventory properties |
You can find now the
inventory_type
object in both accommodations/availability and orders/preview endpoints.
- This object indicates whether the property comes from a third-party inventory and the sort of rate that is applied, in this case "sell" rate:
Example of orders/preview response:
"third_party_inventory": true,
"inventory": {
"third_party": true,
"type": "sell"
}
Find more details in the Third-party repository quick guide.
Accommodation
accommodations/search
| Addition | product stock |
The
number_available_at_this_price
field indicates the available stock for each product ID (in units).
- It was already available in the /availability and /bulk-availability endpoints.
- Now you can also find it within the [/accommodations/search](accommodations/search response.
Example:
"products": [{
"id": "1050736002_377311511_0_2_0",
...
"maximum_occupancy": {
"adults": 2,
"children": null,
"total": 2
},
"number_available_at_this_price": 10,
...
"price": {
"book": 184.00,
"total": 184.00
},
"room": 1050736002
...
accommodations/details
| New functionality | DSA compliance | host_type and trader_verified |
We have added two new fields in the accommodations/details response, to comply with the Digital Services Act (“DSA”) legislation.
host_type
: Specifies the type of host for the accommodation (professional, private or unknown).trader_verified
: Indicates whether the property has been successfully verified in line to Booking.com internal verification processes. This helps filter out non-verified properties for travellers in the European Economic Area (EEA), based on the booker's country.These fields are available when requesting the /accommodations/details endpoint with the
description
extras parameter.
For more information, refer to the DSA compliance guide.
| Enhancement | Facilities details |
The following facilities-related information have been added in /accommodations/detail response:
Internet, parking, restaurant, swimming pool, together with specific details such as the type of connection, the charging model, pricing, location, reservation requirements, etc.
For a complete list and examples, refer to the accommodations/details guide.
| Addition | meal_prices |
We have added
meal_prices
in accommodations/details response to indicate meal pricing for breakfast, lunch, and dinner:
Example:
{
"meal_prices": {
"breakfast": 20,
"dinner": null,
"lunch": null
}
}
| Addition | domestic_no_cc |
We have included the
domestic_no_cc
field within the payment object.
- This indicates whether domestic bookers can book without using credit card for products offering free cancellation policies.
Example:
"payment": {
"amex_cvc_required": false,
"cvc_required": false,
"domestic_no_cc": false,
"methods": {
"cards": [...],
"cash": true,
"virtual_cards": [
1,
2,
3
]
}
}
/accommodations/bulk-availability
| Addition | Cancellation schedule |
We have included the cancellation schedule within the
policies.cancellation
object in the /accommodations/bulk-availability response.
- This field provides the cancellation timeline and estimated pricing.
Example:
"policies": {
"cancellation": {
"free_cancellation_until": "2025-08-08T22:59:59+00:00",
"type": "free_cancellation",
"schedule": [
{
"from": "now",
"price": 0
},
{
"from": "2025-08-08T23:00:00+00:00",
"price": 1189.63
}
]
}
}
- Please note that pricing discrepancies may occur between the /accommodations/bulk-availability and /orders/preview responses. To obtain the most accurate final cancellation pricing, always use the /orders/preview endpoint.
- Refer to the cancellation policies section for further details.
Car rentals
cars/search
| Addition | payment_timing filter |
Users can now filter car rental search results based on payment timing options:
pay_local
,pay_now
orpart_pay
.
Example of car rental search request with payment timing filter:
{
"booker": {
"country": "us"
},
"currency": "USD",
"driver": {
"age": 35
},
"route": {
"pickup": {
"datetime": "2025-07-21T10:00:00",
"location": {
"airport": "LAX"
}
},
"dropoff": {
"datetime": "2025-07-24T10:00:00",
"location": {
"airport": "LAX"
}
}
},
"payment": {
"timings": ["pay_now", "part_pay"]
}
}