POST/v1/transfers/reservations/changes/search

Search transfer reservation changes

Find replacement offers for an existing reservation.

Share
POST/v1/transfers/reservations/changes/search

API console

Try it

Send a real request to the sandbox API and inspect the response.

Credentials

Log in to pick from your saved API keys instead of pasting them.

Request body

cURL request

cURL
bash
curl -X POST 'https://api.sandbox.travelandz.com/v1/transfers/reservations/changes/search' \
  -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  -H 'X-Travelandz-Id: YOUR_PUBLIC_KEY:YOUR_PROFILE_CODE' \
  -H 'Content-Type: application/json' \
  -d '{"reservationHashedId":"5c8563a5d31d4c33a3a1eafbbfe59c4b","pickupDatetime":"2026-08-30 22:00","numPassengers":2,"currency":"USD"}'

Add your credentials to send a request.

This request needs identifiers or tokens from an earlier call. Run the previous step first, then paste its values here.

Response

Click "Try it!" to send a request and see the response here.

Find replacement offers for an existing reservation.

Authentication and headers

HeaderDescription
AuthorizationBearer <secret_key>. Keep the secret on the server and never write it to client logs.
X-Travelandz-Id<public_key>:<profile_code>, where the persisted profile code has the form dp_<12 alphanumeric>.
LANGPreferred locale header. Accept-Language is also supported.
Content-Typeapplication/json for requests with a JSON body.

Request

Only reservationHashedId is required. Send just the fields you want to change: everything you omit is taken from the original reservation.

This endpoint always answers with JSON. It never opens a stream.

Request Body Schema

reservationHashedId
stringYes
Identifier of the reservation you want to replace.
mode
enum
one_wayround_trip
No
numPassengers
numberNo
When sent, an integer of at least 1.
startAddress
stringNo
Optional override of the original location.
startCity
stringNo
Appended to the address to improve resolution.
startZipcode
stringNo
Appended to the address to improve resolution.
startLat
numberNo
Must be sent together with startLng.
startLng
numberNo
Must be sent together with startLat.
startPlaceId
stringNo
Alternative to an address or coordinates.
endAddress
stringNo
Optional override of the original location.
endCity
stringNo
Appended to the address to improve resolution.
endZipcode
stringNo
Appended to the address to improve resolution.
endLat
numberNo
Must be sent together with endLng.
endLng
numberNo
Must be sent together with endLat.
endPlaceId
stringNo
Alternative to an address or coordinates.
pickupDatetime
string
Format: YYYY-MM-DD HH:mm
No
flightDatetime
stringNo
returnPickupDatetime
stringNo
returnFlightDatetime
stringNo
amenities
arrayYes
amenities[]
string[]No
currency
enum
EURUSDINRCHFJPYGBPAUDCADCNYSGDNZDMXN
No
Lowercase values are accepted and normalized. Defaults to USD on a new search and is inherited afterwards.
campaign
stringNo
Your own campaign context.
branch
stringNo
Requires campaign when sent.
language
enum
en-USes-ESde-DEfr-FRpt-BRzh-CNit-IT
No
Legacy field. Prefer the LANG or Accept-Language header.

Request example

json
json
{
  "reservationHashedId": "5c8563a5d31d4c33a3a1eafbbfe59c4b",
  "pickupDatetime": "2026-08-30 22:00",
  "numPassengers": 2,
  "currency": "USD"
}

Success response

Returns a new change searchId and offers[]. The offers have the same shape as a normal search result, including an opaque bookingToken per offer.

Response Body Schema

gdsprovider
enum
0
Yes
searchId
stringYes
Change search identifier. Send it to pricing and confirmation.
moreComing
booleanYes
True when more replacement offers may still arrive.
pickupDatetime
string
Format: ISO 8601
No
numPassengers
numberNo
startLocation
objectYes
startLocationformattedAddress
stringNo
startLocationfullAddress
stringNo
startLocationiataCode
stringNo
Present for airport locations.
startLocationicaoCode
stringNo
startLocationplaceId
stringNo
Reusable place identifier; send it back to skip geocoding.
startLocationlatitude
numberNo
startLocationlongitude
numberNo
startLocationtimezone
stringNo
IANA timezone of the location.
endLocation
objectYes
endLocationformattedAddress
stringNo
endLocationfullAddress
stringNo
endLocationiataCode
stringNo
Present for airport locations.
endLocationicaoCode
stringNo
endLocationplaceId
stringNo
Reusable place identifier; send it back to skip geocoding.
endLocationlatitude
numberNo
endLocationlongitude
numberNo
endLocationtimezone
stringNo
IANA timezone of the location.
offers
arrayYes
offers[]searchId
stringYes
Send this value in pricing, booking and reservation reads.
offers[]gdsprovider
enum
0
Yes
offers[]resultId
stringYes
Identifies the selected offer.
offers[]bookingToken
stringYes
Opaque value. Copy it into pricing and booking; never decode or modify it.
offers[]expiresAt
string
Format: ISO 8601
Yes
The offer and its token stop being usable after this moment.
offers[]vehicleId
stringNo
offers[]totalAmount
numberYes
Indicative total for the offer in currency.
offers[]currency
enum
EURUSDINRCHFJPYGBPAUDCADCNYSGDNZDMXN
Yes
offers[]bookable
booleanYes
False when the offer cannot be booked.
offers[]flightInfoRequired
booleanYes
When true, airline and flightNumber are required to book.
offers[]extraPaxRequired
booleanYes
When true, extraPaxInfo is required to book.
offers[]goodToKnowInfo
arrayYes
offers[]goodToKnowInfo[]
string[]Yes
Localized operational notes to show the traveller.
offers[]supports
objectYes
offers[]cancellationPolicies
arrayYes
offers[]cancellationPolicies[]notice
numberNo
Hours of notice the policy requires.
offers[]cancellationPolicies[]refundPercent
numberNo
offers[]cancellationPolicies[]refundableUntilDatetime
string
Format: ISO 8601
No
offers[]cancellationPolicies[]refundAmount
numberNo
Refundable amount in the offer currency.
offers[]cancellationPolicies[]currency
enum
EURUSDINRCHFJPYGBPAUDCADCNYSGDNZDMXN
No
offers[]steps
arrayYes
offers[]steps[]stepType
stringNo
Leg type, for example car.
offers[]steps[]main
booleanNo
True for the primary leg of the transfer.
offers[]steps[]description
stringNo
offers[]steps[]departureDatetime
string
Format: ISO 8601
No
offers[]steps[]durationMinutes
numberNo
offers[]steps[]durationSeconds
numberNo
offers[]steps[]distanceMeters
numberNo
offers[]steps[]distanceMiles
numberNo
offers[]steps[]lineName
stringNo
Present for scheduled line transport.
offers[]steps[]lineColor
stringNo
offers[]steps[]provider
objectYes
offers[]steps[]providername
stringNo
offers[]steps[]providerrating
numberNo
offers[]steps[]vehicle
objectYes
offers[]steps[]vehicletype
stringNo
Vehicle name, for example Shared Ride Van.
offers[]steps[]vehiclecategory
stringNo
Vehicle grouping, for example Shared or Private.
offers[]steps[]vehiclemaxBags
numberNo
offers[]steps[]vehiclemaxPassengers
numberNo
offers[]steps[]vehiclenumVehicles
numberNo
offers[]steps[]vehicleimageUrl
string
Format: URL
No
offers[]steps[]waitTime
objectYes
offers[]steps[]waitTimeincluded
booleanNo
offers[]steps[]waitTimeminutesIncluded
numberNo
offers[]steps[]waitTimeextraWaitTimeChargeable
booleanNo
offers[]steps[]amenities
arrayYes
offers[]steps[]amenities[]key
stringYes
Value to send in selectedAmenities.
offers[]steps[]amenities[]name
stringYes
Localized name.
offers[]steps[]amenities[]description
stringNo
offers[]steps[]amenities[]imageUrl
string
Format: URL
No
offers[]steps[]amenities[]pngImageUrl
string
Format: URL
No
offers[]steps[]amenities[]inputType
enum
booleannumeric
No
offers[]steps[]amenities[]included
booleanYes
True when the amenity is already part of the offer.
offers[]steps[]amenities[]selectable
booleanYes
True when the amenity can be added to this offer.
offers[]steps[]amenities[]selected
booleanYes
True when the amenity is part of the priced selection.
offers[]steps[]startLocation
objectYes
offers[]steps[]startLocationformattedAddress
stringNo
offers[]steps[]startLocationfullAddress
stringNo
offers[]steps[]startLocationiataCode
stringNo
Present for airport locations.
offers[]steps[]startLocationicaoCode
stringNo
offers[]steps[]startLocationplaceId
stringNo
Reusable place identifier; send it back to skip geocoding.
offers[]steps[]startLocationlatitude
numberNo
offers[]steps[]startLocationlongitude
numberNo
offers[]steps[]startLocationtimezone
stringNo
IANA timezone of the location.
offers[]steps[]endLocation
objectYes
offers[]steps[]endLocationformattedAddress
stringNo
offers[]steps[]endLocationfullAddress
stringNo
offers[]steps[]endLocationiataCode
stringNo
Present for airport locations.
offers[]steps[]endLocationicaoCode
stringNo
offers[]steps[]endLocationplaceId
stringNo
Reusable place identifier; send it back to skip geocoding.
offers[]steps[]endLocationlatitude
numberNo
offers[]steps[]endLocationlongitude
numberNo
offers[]steps[]endLocationtimezone
stringNo
IANA timezone of the location.
offers[]ticketTypes
arrayYes
offers[]ticketTypes[]id
stringYes
Send this value in ticketTypes[].id when booking.
offers[]ticketTypes[]name
stringNo
offers[]ticketTypes[]departureDatetime
string
Format: ISO 8601
No
offers[]ticketTypes[]arrivalDatetime
string
Format: ISO 8601
No
offers[]alternativeTimes
arrayYes
offers[]alternativeTimes[]departureDatetime
string
Format: ISO 8601
No
offers[]alternativeTimes[]arrivalDatetime
string
Format: ISO 8601
No

Response examples

json
json
{
  "gdsprovider": 0,
  "searchId": "5c8563a5d31d4c33a3a1eafbbfe59c49",
  "moreComing": false,
  "pickupDatetime": "2026-08-30T22:00:00-04:00",
  "numPassengers": 2,
  "startLocation": {
    "formattedAddress": "433 Park Ave, New York, NY 10022, USA",
    "fullAddress": "433 Park Ave, New York",
    "placeId": "EiU0MzMgUGFyayBBdmUsIE5ldyBZb3JrLCBOWSAxMDAyMiwgVVNB",
    "latitude": 40.7607634,
    "longitude": -73.971212,
    "timezone": "America/New_York"
  },
  "endLocation": {
    "formattedAddress": "John F Kennedy International Airport",
    "fullAddress": "John F Kennedy International Airport",
    "iataCode": "JFK",
    "icaoCode": "KJFK",
    "latitude": 40.639751,
    "longitude": -73.778926,
    "timezone": "America/New_York"
  },
  "offers": [
    {
      "searchId": "5c8563a5d31d4c33a3a1eafbbfe59c49",
      "gdsprovider": 0,
      "resultId": "763475651c06f5ac31ea587084dc0640",
      "bookingToken": "opaque_change_offer_token_generated_by_travelandz",
      "expiresAt": "2026-08-30T22:20:00.000Z",
      "totalAmount": 49.84,
      "currency": "USD",
      "bookable": true,
      "flightInfoRequired": true,
      "extraPaxRequired": false,
      "goodToKnowInfo": [],
      "cancellationPolicies": [
        {
          "notice": 48,
          "refundPercent": 100,
          "refundAmount": 49.84,
          "currency": "USD"
        }
      ],
      "supports": {},
      "steps": [
        {
          "stepType": "car",
          "main": true,
          "departureDatetime": "2026-08-30T22:40:00-04:00",
          "provider": {
            "name": "GO Airlink NYC",
            "rating": 5
          },
          "vehicle": {
            "type": "Shared Ride Van",
            "category": "Shared",
            "maxBags": 4,
            "maxPassengers": 11,
            "numVehicles": 1
          },
          "amenities": []
        }
      ],
      "ticketTypes": [],
      "alternativeTimes": [
        {
          "departureDatetime": "2026-08-30T22:40:00-04:00",
          "arrivalDatetime": "2026-08-30T23:06:10-04:00"
        },
        {
          "departureDatetime": "2026-08-30T23:40:00-04:00",
          "arrivalDatetime": "2026-08-31T00:06:10-04:00"
        }
      ]
    }
  ]
}

Errors

HTTPCodeMeaningRecommended action
400The body, query or path is invalid, or contains an unknown property.Fix the request using the message array.
400transfer_invalid_currencyThe currency is outside the supported list.Use a supported currency.
400transfer_invalid_languageThe requested language is not supported.Use one of the documented language values.
429transfer_provider_errorThe service is temporarily rate limited.Retry with exponential backoff.
502transfer_provider_errorThe request could not be completed.Do not assume success. Keep your identifiers and read the reservation when the operation could have been created.
400transfer_location_not_foundAn origin or destination could not be resolved.Add a city or zipcode, or send a place ID or a coordinate pair.
503The price could not be confirmed right now.Retry later. Do not book and do not charge the traveller.

Usage notes

After the traveller picks a replacement offer, request pricing for it and then confirm the change. The original reservation stays active until the change is confirmed.

cURL example

bash
bash
curl --request POST \
  --url "https://api.sandbox.travelandz.com/v1/transfers/reservations/changes/search" \
  -H "Authorization: Bearer $TRAVELANDZ_SECRET_KEY" \
  -H "X-Travelandz-Id: $TRAVELANDZ_PUBLIC_KEY:$TRAVELANDZ_PROFILE_CODE" \
  -H "Content-Type: application/json" \
  --data '{
  "reservationHashedId": "5c8563a5d31d4c33a3a1eafbbfe59c4b",
  "pickupDatetime": "2026-08-30 22:00",
  "numPassengers": 2,
  "currency": "USD"
}'