Transfers

Transfers workflows

The required call order for booking a transfer and for changing a reservation.

Share

The required call order for booking a transfer and for changing a reservation.

New reservation

text
text
POST /search
  -> POST /pricing
    -> POST /book
      -> GET /reservations/details

Pricing is required even when the traveller selects no amenities. There is no way to book directly from a search result.

Reservation change

text
text
POST /reservations/changes/search
  -> POST /pricing
    -> POST /reservations/changes

The original reservation stays active until the change is confirmed.

Values you carry between calls

ValueWhere it comes fromWhere it goes
searchIdSearch or change searchPricing, booking, reservation reads
resultIdThe selected offerPricing and booking
bookingTokenThe selected offerPricing and booking
pricingTokenPricingBooking or change confirmation
reservationIdBookingReservation reads, driver and vehicle, tracking, cancellation
confirmationNumberBookingReservation reads, traveller communication

bookingToken and pricingToken are opaque. Copy them into the next call exactly as you received them: do not decode, parse or modify them. They belong to the offer they were issued for and stop working when that offer expires, which expiresAt tells you in advance.

Booking result states

Booking and change confirmation answer HTTP 200 with a status field:

statusWhat it meansWhat to do
completedThe transfer is booked.Confirm to the traveller once completed is true and reservations is not empty.
pendingThere is no final answer yet.Read the reservation to find out how it ended. Do not send the booking request again.
failedThe booking was refused.Show the reason from error and offer the traveller another option.

Never treat a reservation as confirmed just because the HTTP status was 200.

After a failed request

A 502 means the request did not complete, not that nothing happened. Keep the identifiers you already have and read the reservation before you create another one.

What to persist

Store searchId, resultId, bookingToken, pricingToken, reservationId, confirmationNumber and your own partnerTrackingId. Without them you cannot read, change or cancel the reservation later.