# Changelog

**Stay up to date with the latest enhancements to the Demand API**.

# March 2026

This release focuses on Demand API version 3.2 and 3.2 Beta, with significant updates across car rentals and orders:

div
strong
What´s new
ul
li
strong
Car rentals – v3.2 / 3.2 Beta:
ul
li
code
insurance
 – Object added in cars/search, cars/availability and orders/preview to support optional book of third-party insurance for a vehicle.
li
code
cars.payment.timing
 – Field in orders/details to indicate when the traveller is expected to pay for the car rental order (
code
pay_online_now
, 
code
pay_at_pickup
, 
code
unknown
).
li
strong
Attractions – 3.2 Beta:
ul
li
code
categories
 – New filter in attractions/search to allow filtering results by one or more attraction category IDs (e.g. tours, museums, etc).
li
strong
Orders – v3.2 / 3.2 Beta:
ul
li
code
occupancy_mismatch
 – New warning object in orders/preview to indicate when requested guest allocation exceeds product maximum occupancy. Provides 
code
allocated
 and 
code
unallocated
 breakdown.
li
 orders/cancel for cars – This endpoint supports now car orders cancellations.
li
 New orders/modify/preview – New consultive endpoint to validate whether a modification before confirming the change.
## Car rentals

### Insurance optional add-on

**|** v3.2 3.2 Beta **|** **New field: insurance** **|**

> The new `insurance` object under each product in the cars response provides information about any optional insurance traveller can book for the rental.
* Only present when configured for the partner.
* `null` if not available.



Available in:

* [/cars/search](/demand/docs/open-api/3.2/demand-api/cars/search)
* [/cars/availability](/demand/docs/open-api/3.2-beta/demand-api/cars/availability)
* [/orders/preview](/demand/docs/open-api/3.2-beta/demand-api/orders/orders/preview)


Example in search response:


```json
"insurance": {
  "name": "Full Protection",
  "id": "999",
  "price": {
    "amount": 144.70,
    "currency": "EUR"
  }
}
```

The `insurance` field differes from `policies.insurance_package`, which represents the supplier’s default insurance package. See the [Insurance dedicated guide](/demand/docs/cars/3.2/cars-insurance-guide) for more details.

### Cars payment timing

**|** v3.2 3.2 Beta **|** **New field: `cars.payment.timing` in orders/details** **|**

> Payment timing information is now available in the orders/details response under `cars.payment.timing`.
**Purpose** – It indicates when the traveller is expected to pay for the car rental order, enabling better post-booking experiences and financial workflows.


This field is only returned when extras: ["payment"] is included in the request.

Possible payment timing for cars:

* `pay_online_now` – Paid at booking time.
* `pay_at_pickup` – Paid locally at pickup.
* `unknown` – Timing could not be determined.


Example response:


```json
{
  "cars": {
    "payment": {
      "timing": "pay_at_pickup"
    }
  }
}
```

Use this field to clearly communicate payment expectations to travellers and align internal payment and reporting flows.

### Default car search results increased

**|** v3.2 3.2 Beta **|** **Behaviour change** **|**

> The default number of car search results returned by the /cars/search endpoint has been increased.
**Purpose** – Provides more comprehensive search results without requiring clients to set a custom limit.
* Default results increased from 100 to 500.
* Supports richer search experiences for travellers and applications.
* May affect response size and pagination behaviour.



Partners fetching a large number of results should be aware of the increased payload and adjust pagination or processing logic if needed.

## Attractions

### Filter by attraction categories

**|** 3.2 Beta **|** **New filter: `categories` in attractions/search** **|**

> The `categories` filter allows you to refine search results by one or more attraction category IDs.
**Purpose** – Enables more relevant and targeted search experiences by returning only attractions that match at least one of the selected categories.


Supported categories include:

* Tours
* Services and rentals.
* Workshops and classes.
* Museums, arts and culture.
* Nature and outdoor.
* Entertainment and tickets.
* Food and drink.


If an invalid or unsupported category ID is provided, the search response will return no results.

Available in:

* [/attractions/search](/demand/docs/open-api/3.2-beta/demand-api/attractions/search)


Use this filter to tailor results to traveller intent (for example, showing only cultural activities or outdoor experiences).

## Orders

### Car rental cancellations

**|** v3.2 3.2 Beta  **|** **Car order cancellations supported** **|**

> Apart from accommodation, orders/cancel endpoint supports now car rental cancellations.


Example request:


```json
{
  "car": {
    "reservation": "1234567890",
    "reason": "My travel plans have changed and I no longer need this car rental.",
    "booker": {
      "country": "nl"
    }
  }
}
```

See [Cancellation guide](/demand/docs/orders-api/cancel-order) for more details.

### Orders modify preview: new endpoint

**|** 3.2 Beta  **|** **New endpoint: /orders/modify/preview** **|**

> A new endpoint is available to preview order modifications before applying them.
**Purpose** – It allows you to validate whether a modification can be applied and understand its impact before confirming the change.
* Helps prevent failed modification attempts by checking eligibility upfront.
* Enables displaying updated pricing to travellers before confirming changes.
* Supports safer UX flows for post-booking modifications.



**Behaviour:**

* Returns `modifiable: true` if the change can be applied.
* Returns `modifiable: false` with a reason when the modification is not allowed.


For accommodation date changes, returns a price object with:

* `current` – price before modification.
* `new` – price after modification.


This endpoint is read-only and does not apply any modifications. Use it to preview and validate changes before confirming them calling orders/modify.

**Example request:**


```json
{
  "order": "6520081014",
  "modification": {
    "accommodation": {
      "reservation": "6187285715",
      "type": "dates",
      "change": {
        "checkin": "2026-04-19",
        "checkout": "2026-04-21"
      }
    }
  }
}
```

**Example response:**


```json
{
  "data": {
    "modifiable": true,
    "price": {
      "currency": "EUR",
      "current": {
        "amount": 120.00
      },
      "new": {
        "amount": 150.00
      }
    }
  }
}
```

See the [Preview order modifications guide (Beta)](/demand/docs/orders-api/3.2/order-modify-preview) for more details.

### Orders preview: occupancy_mismatch

**|** v3.2 v3.1 **|** **New field: occupancy_mismatch** **|**

> The new `occupancy_mismatch` warning object is included in the orders/preview endpoint response.
**Purpose** - It Indicates when the requested guest allocation exceeds the product’s maximum occupancy.
* It helps partners display a clear warning to the traveller or decide whether to allow the booking to proceed.

**Behaviour** – If the allocation fits the product capacity, `occupancy_mismatch` is `null`. Otherwise, it provides a breakdown of:


* `allocated` – guests that can be accommodated in the room.
* `unallocated` – guests that cannot be accommodated.


Optional for partners to handle. The order can still proceed despite an `occupancy_mismatch`.

**Example request:**


```json
{
  "occupancy_mismatch": {
    "allocated": {
      "number_of_adults": 1,
      "children": null
    },
    "unallocated": {
      "number_of_adults": 1,
      "children": null
    }
  }
}
```

See the [Occupancy and allocation guide](/demand/docs/accommodations/occupancy-allocation) for more details.

## References