# Car availability

Retrieve availability details for a specific car rental offer, including final pricing, available insurance options, and optional extras (such as an additional driver or child seat) that can be added to the order.

Endpoint: POST /cars/availability
Version: 3.2-Beta
Security: BearerAuth

## Header parameters:

  - `X-Affiliate-Id` (integer, required)
    Include here your Affiliate identifier number

## Request fields (application/json):

  - `offer` (integer, required)
    This ID identifies the car rental offer and its associated policies. Include it when calling the /cars/availability endpoint.

  - `search_token` (string, required)
    The encoded search token obtained from the search results. This token is car-specific and essential for maintaining state between search and availability checks.

  - `currency` (string | null, required)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.
    Example: EUR

  - `language` (string)
    A [IETF language tag code](https://en.wikipedia.org/wiki/IETF_language_tag) that uniquely identifies a supported human language or dialect. **Note:** Demand API only accepts lowercase for the language codes. Examples: "nl" for Dutch/Nederlands or "en-us" for English (US). To retrieve the full list of supported languages, call the `/common/languages` endpoint in the same Demand API version you are using.
    Example: en-us

## Response 200 fields (application/json):

  - `request_id` (string)
    Uniquely identifies the request. Please provide this identifier when contacting support.

  - `data` (object)

  - `data.offer` (integer)
    This ID identifies the car rental offer and its associated policies. Include it when calling the /cars/availability endpoint.

  - `data.currency` (string | null)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.
    Example: EUR

  - `data.policies` (object)
    The policies that apply to this product.

  - `data.policies.cancellation` (object)
    The cancellation policy that applies to this product.

  - `data.policies.cancellation.details` (object | null)
    Provides the policy details if the cancellation is free. For example:
1. duration='PT48H' and context=BEFORE_PICKUP means 'Free cancellation is available up to 48 hrs before pick up'.
2. duration='P7D' and context=WITHIN_GIVEN_TIME_PERIOD_OF_BOOKING means 'Free cancellation is available within 7 days of booking'

  - `data.policies.cancellation.details.context` (string)
    The context in which the cancellation policy applies. For example 'before_pickup'
    Enum: "before_pickup", "within_given_time_period_of_booking"

  - `data.policies.cancellation.details.duration` (string)
    The duration until which the cancellation is free. This is in ISO-8601/Duration format.

  - `data.policies.cancellation.type` (string)
    The type of cancellation present. For example 'free_cancellation' or 'non-refundable'.
    Enum: "free_cancellation", "non-refundable"

  - `data.policies.damage_excess` (object)

  - `data.policies.damage_excess.amount` (any)
    The maximum amount a traveller may be charged for damages to the car during the rental period, as specified by the rental agreement.

  - `data.policies.deposit` (object)

  - `data.policies.deposit.amount` (any)
    The amount of money 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.

  - `data.policies.insurance_package` (string)
    The supplier insurance package that applies to this product.
    Enum: "basic", "inclusive", "zero_excess"

  - `data.policies.fuel` (string)
    The fuel policy that applies to this product. Maps to the `fuel_policies` constant returned by the /cars/constants endpoint.
    Enum: "return_same", "return_same_or_prepay_no_refunds", "return_same_preauth", "free_tank", "prepay_no_refunds", "prepay_part_refunds", "prepay_refunds"

  - `data.policies.mileage` (object)
    The mileage policy that applies to this product.

  - `data.policies.mileage.distance_limit` (number | null)
    The maximum distance allowed before additional charges apply.

  - `data.policies.mileage.distance_unit` (string)
    The unit of measurement for the distance limit. For example 'km' or 'miles'.
    Enum: "kilometers", "miles"

  - `data.policies.mileage.amount` (any)
    The amount that must be paid if the distance limit is exceeded.

  - `data.policies.mileage.currency` (any)
    The currency of the amount that must be paid if the distance limit is exceeded.

  - `data.policies.mileage.type` (string)
    The type of mileage policy applied.
    Enum: "limited", "unlimited"

  - `data.policies.payment` (object)
    The payment policy that applies to this product.

  - `data.policies.payment.timing` (string)
    The applied payment timing. For example 'pay_online_now'.
    Enum: "pay_online_now", "pay_partial_online_now", "pay_at_pickup"

  - `data.policies.theft_excess` (object)

  - `data.policies.theft_excess.amount` (any)
    The maximum amount a traveller may be charged in the event of car theft during the rental period, as outlined in the rental agreement.

  - `data.price` (object)
    The price that applies to this vehicle.

  - `data.price.credit_card_required` (boolean | null)
    Indicates whether a credit card is required as a guarantee for this vehicle.
- true: A credit card must be provided and will be passed to the supplier for guarantee purposes. Applies to vehicles with 'payment.timing = pay_at_pickup'.
- false: A credit card is explicitly not required.
- null: Information not available or not applicable (for example, pay-online-now vehicles where credit card requirements are currently unknown).

  - `data.price.extra_charges` (array)
    The charge breakdown. Includes taxes and fees included in the drive away price.

  - `data.price.extra_charges.charge` (string)
    The type of this charge.

  - `data.products` (array)
    A list of optional extras (e.g. child seats, GPS) available for this vehicle.

  - `data.products.id` (string)
    Unique identifier of the product.

  - `data.products.type` (string)
    Specifies the type of optional extra or service associated with the vehicle. For example, gps for a navigation system, baby_seat for a child seat, or wifi_router for mobile internet. Some values may represent similar extras because suppliers use different naming conventions for the same or comparable products.
    Enum: "additional_driver", "baby_seat", "bluetooth_handsfree_kit", "booster_seat", "child_booster_seat", "child_seat", "child_seat_isofix", "etc_card_electronic_toll_collection_card", "excess_protection", "fast_track", "gps", "infant_seat", "luggage_rack", "personal_travel_assistant", "queue_jump", "roof_rack", "ski_box", "ski_rack", "skierized_equipment", "snow_chains", "snow_tyres", "wifi_mobile", "wifi_router"

  - `data.products.maximum_available` (number)
    Maximum number of units of this product that can be selected per booking.

  - `data.products.mode` (string)
    Defines how the product price is calculated. This determines whether pricing is applied per unit, per day, or for the full rental period.
    Enum: "each_per_day", "each_per_rental", "per_day", "per_rental"

  - `data.products.price` (object)
    Pricing information for the product, including display price and payment details.

  - `data.products.price.unit_amount` (object)
    Price object containing the amount shown to the traveller (display) and the actual payment amount (pay) with timing information.

  - `data.products.price.unit_amount.display` (object)
    A monetary amount with currency code.

  - `data.products.price.unit_amount.display.value` (number)
    The numeric value of the amount.

  - `data.products.price.unit_amount.pay` (object)
    A monetary amount with currency code and the timing of payment. Use timing to indicate whether the amount is paid online now, partially online, or at pickup.

  - `data.products.price.unit_amount.pay.value` (number)
    The numeric value of the amount.

  - `data.products.price.unit_amount.pay.timing` (string)
    The payment timing.
    Enum: "pay_online_now", "pay_partial_online_now", "pay_at_pickup"

  - `data.deal` (object | null)
    This specifies the deal tagging for the product.

  - `data.deal.discount_percentage` (integer)
    Discount percentage of the applied deals.

  - `data.deal.tags` (array)
    The tags of all the applied deals.

  - `data.special_offer` (string | null)
    The special offer included with this product, if any. This can be an additional service, a free upgrade, or a promotional feature provided by the supplier. If no special offer applies, the value is null.
    Enum: "one_additional_driver", "two_additional_drivers", "three_additional_drivers", "all_additional_drivers", "gps", "baby_or_child_seat", "priority_pickup", "wifi_device", "sim_card", "upgrade", "black_friday", "getaway_deal", "mobile_rate"

  - `data.supplier` (number)
    The unique identifier for the car rental supplier.

  - `data.route` (object)
    Defines the actual route associated with the product.

  - `data.route.dropoff` (object)
    Defines the product pick up / drop off route point.

  - `data.route.dropoff.depot` (integer)
    Unique identifier of a depot. Retrieve the full list by calling the (/cars/depots](#/cars/depots).
    Example: 5944

  - `data.route.dropoff.depot_location_type` (string)
    The type of location for the depot.
    Enum: "in_terminal", "car_rental_centre", "outside_terminal", "airport_hotel", "shuttle_bus", "meet_greet", "trainstation", "downtown"

  - `data.insurance` (object | null)
    Detailed third-party insurance quote for this car rental. Returned only for eligible partner configurations (e.g., partners with a signed insurance contract), and when insurance is available for the selected offer (null if not available).
This object represents a bookable insurance product and includes pricing, coverage, and policy documentation.

  - `data.insurance.quote_reference` (string, required)
    Unique reference for this insurance quote. Expires after 90 minutes.

  - `data.insurance.name` (string, required)
    The display name of the insurance product.

  - `data.insurance.id` (string, required)
    The identifier for the type of insurance product.

  - `data.insurance.coverage_amount` (object)
    The maximum coverage amount provided by the insurance product.

  - `data.insurance.documents` (array, required)
    Legal documents for this insurance product. Always returned when the insurance object is present, and always contains the `policy_document` entry. The `ipid` entry is only included when an IPID applies (EEA and UK countries) and is available in the requested language.

  - `data.insurance.documents.name` (string, required)
    The insurance document type.
    Enum: "policy_document", "ipid"

  - `data.insurance.documents.url` (string, required)
    URL of the insurance document.

  - `data.estimated_commission` (object | null)
    Estimated commission the partner may earn if the traveller books this car. Expressed in the selected currency and based on predictive modelling at search time. Only returned when the predicted commission feature is enabled for the partner. Omitted when the feature is unavailable or when a reliable estimate cannot be produced.

## Response 400 fields (application/json):

  - `request_id` (string, required)
    Uniquely identifies the request. Please provide this identifier when contacting support.

  - `errors` (array, required)

  - `errors.id` (string, required)

  - `errors.message` (string, required)

## Response 500 fields (application/json):

  - `request_id` (string, required)
    Uniquely identifies the request. Please provide this identifier when contacting support.

  - `errors` (array, required)

  - `errors.id` (string, required)

  - `errors.message` (string, required)

