Skip to main content
POST
Preview the rentals a car booking could be exchanged to
List the rentals this booking could move to, at the booked times, or at new pick_up_date_time / drop_off_date_time (branch-local YYYY-MM-DDTHH:MM:SS; omit either to keep the booked time), and with the rate extras (child seat, GPS, additional driver, excess cover) the rental should end up with (ancillaries; omit to keep what the booking carries, [] to remove every extra), each priced in full with that selection and with its delta against what was paid. Nothing is changed. Vehicle choice is not an input: every alternative at the requested times comes back as its own offer. The returned exchange_id plus one offer’s exchange_offer_token are what car_exchange_commit consumes. A booking that cannot be exchanged (already cancelled, an exchange already in flight) answers 200 with exchangeable: false and a reason, not an error. Guest-authenticated: booking_ref + last_name; a wrong pair returns 404 rather than confirming the booking’s existence.

Authorizations

X-API-Key
string
header
required

Body

application/json
booking_ref
string
required

Jinko booking reference from the confirmation email.

Minimum string length: 1
Example:

"JNK-8PT9VS"

last_name
string
required

Lead traveler's last name, exactly as on the booking.

Minimum string length: 1
Example:

"Carrard"

intent
object
pick_up_date_time
string

New pick-up date-time, branch-local, no timezone. Omit to keep the booked time.

Pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$
Example:

"2026-09-13T10:00:00"

drop_off_date_time
string

New drop-off date-time, branch-local, no timezone. Omit to keep the booked time.

Pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$
Example:

"2026-09-16T10:00:00"

ancillaries
object[]

The rate extras (child seat, GPS, additional driver, excess cover) the rental should END UP with. Omit to keep what the booking carries today; send [] to remove every extra; send a list to replace the selection. Every offer comes back priced with this selection and echoes it under rental.ancillaries. To change only the extras, send this without new times: the current rental returns as an offer and its delta settles like any other exchange. A paid_at: local extra is selectable but never enters the price.

Response

Exchange alternatives with their price deltas

exchange_id
string

Opaque reference of this preview ("exc_…"). Pass to car_exchange_commit with the chosen offer token — it binds the commit to the prices quoted here. Absent when the booking is not exchangeable. Treat as an opaque string; the format may evolve.

Example:

"exc_7c1e4b9a2d8f4e6b9a3c5d7e1f2a4b6c"

exchangeable
boolean
Example:

true

reason
string

Why the booking cannot be exchanged (already cancelled, an exchange already in flight). Absent when it can.

current
object

A rental: the vehicle, where it is collected and where it is returned. Used for both the booking as it stands today (current on the preview) and the one a candidate would replace it with (rental on an offer).

paid
object

What the customer paid — the basis every delta is computed against. Absent when the booking is not exchangeable.

offers
object[]

Replacement candidates at the requested times, each priced in full and with its delta. Empty when nothing is available, or when the booking is not exchangeable.

warnings
string[]