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 -X POST 'https://api.sandbox.travelandz.com/v1/transfers/search' \
-H 'Authorization: Bearer YOUR_SECRET_KEY' \
-H 'X-Travelandz-Id: YOUR_PUBLIC_KEY:YOUR_PROFILE_CODE' \
-H 'Content-Type: application/json' \
-d '{"mode":"one_way","startAddress":"433 Park Ave","startCity":"New York","startZipcode":"10022","endAddress":"JFK","pickupDatetime":"2026-08-16 15:30","numPassengers":2,"currency":"USD","responseMode":"complete"}'Add your credentials to send a request.
Response
Click "Try it!" to send a request and see the response here.
Search transfer offers and receive a complete JSON response or progressive stream events.
Authentication and headers
| Header | Description |
|---|---|
Authorization | Bearer <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>. |
LANG | Preferred locale header. Accept-Language is also supported. |
Content-Type | application/json for requests with a JSON body. |
Request
Send mode and numPassengers. Origin and destination each need an address, a place ID, or a latitude/longitude pair. Set responseMode to stream to receive offers as they arrive instead of one final response. A round_trip search also requires returnPickupDatetime or returnFlightDatetime.
Request Body Schema
moderesponseModecomplete.numPassengersstartAddressstartCitystartZipcodestartLatstartLng.startLngstartLat.startPlaceIdendAddressendCityendZipcodeendLatendLng.endLngendLat.endPlaceIdpickupDatetimeflightDatetimeflightTypereturnPickupDatetimeround_trip search requires this field or returnFlightDatetime.returnFlightDatetimeround_trip search requires this field or returnPickupDatetime.amenitiesamenities[]currencyUSD on a new search and is inherited afterwards.campaignbranchcampaign when sent.languageLANG or Accept-Language header.Request example
Complete response
{
"mode": "one_way",
"startAddress": "433 Park Ave",
"startCity": "New York",
"startZipcode": "10022",
"endAddress": "JFK",
"pickupDatetime": "2026-08-16 15:30",
"numPassengers": 2,
"currency": "USD",
"responseMode": "complete"
}Stream response
{
"mode": "one_way",
"startAddress": "433 Park Ave, New York",
"endAddress": "JFK",
"pickupDatetime": "2026-08-16 15:30",
"numPassengers": 2,
"currency": "USD",
"responseMode": "stream"
}Success response
Returns transfers[] with the offers that can be priced and booked, plus metadata describing the resolved locations and whether the result set is final. Each offer carries an opaque bookingToken that you copy into pricing.
A search can return 200 with metadata.timedOut: true. That is not an error: the offers already present are valid and bookable.
Response Body Schema
transferstransfers[]searchIdtransfers[]gdsprovidertransfers[]resultIdtransfers[]bookingTokentransfers[]expiresAttransfers[]vehicleIdtransfers[]totalAmountcurrency.transfers[]currencytransfers[]bookabletransfers[]flightInfoRequiredairline and flightNumber are required to book.transfers[]extraPaxRequiredextraPaxInfo is required to book.transfers[]goodToKnowInfotransfers[]goodToKnowInfo[]transfers[]supportstransfers[]cancellationPoliciestransfers[]cancellationPolicies[]noticetransfers[]cancellationPolicies[]refundPercenttransfers[]cancellationPolicies[]refundableUntilDatetimetransfers[]cancellationPolicies[]refundAmounttransfers[]cancellationPolicies[]currencytransfers[]stepstransfers[]steps[]stepTypecar.transfers[]steps[]maintransfers[]steps[]descriptiontransfers[]steps[]departureDatetimetransfers[]steps[]durationMinutestransfers[]steps[]durationSecondstransfers[]steps[]distanceMeterstransfers[]steps[]distanceMilestransfers[]steps[]lineNametransfers[]steps[]lineColortransfers[]steps[]providertransfers[]steps[]providernametransfers[]steps[]providerratingtransfers[]steps[]vehicletransfers[]steps[]vehicletypeShared Ride Van.transfers[]steps[]vehiclecategoryShared or Private.transfers[]steps[]vehiclemaxBagstransfers[]steps[]vehiclemaxPassengerstransfers[]steps[]vehiclenumVehiclestransfers[]steps[]vehicleimageUrltransfers[]steps[]waitTimetransfers[]steps[]waitTimeincludedtransfers[]steps[]waitTimeminutesIncludedtransfers[]steps[]waitTimeextraWaitTimeChargeabletransfers[]steps[]amenitiestransfers[]steps[]amenities[]keyselectedAmenities.transfers[]steps[]amenities[]nametransfers[]steps[]amenities[]descriptiontransfers[]steps[]amenities[]imageUrltransfers[]steps[]amenities[]pngImageUrltransfers[]steps[]amenities[]inputTypetransfers[]steps[]amenities[]includedtransfers[]steps[]amenities[]selectabletransfers[]steps[]amenities[]selectedtransfers[]steps[]startLocationtransfers[]steps[]startLocationformattedAddresstransfers[]steps[]startLocationfullAddresstransfers[]steps[]startLocationiataCodetransfers[]steps[]startLocationicaoCodetransfers[]steps[]startLocationplaceIdtransfers[]steps[]startLocationlatitudetransfers[]steps[]startLocationlongitudetransfers[]steps[]startLocationtimezonetransfers[]steps[]endLocationtransfers[]steps[]endLocationformattedAddresstransfers[]steps[]endLocationfullAddresstransfers[]steps[]endLocationiataCodetransfers[]steps[]endLocationicaoCodetransfers[]steps[]endLocationplaceIdtransfers[]steps[]endLocationlatitudetransfers[]steps[]endLocationlongitudetransfers[]steps[]endLocationtimezonetransfers[]ticketTypestransfers[]ticketTypes[]idticketTypes[].id when booking.transfers[]ticketTypes[]nametransfers[]ticketTypes[]departureDatetimetransfers[]ticketTypes[]arrivalDatetimetransfers[]alternativeTimestransfers[]alternativeTimes[]departureDatetimetransfers[]alternativeTimes[]arrivalDatetimemetadatametadatacompletedmetadatatimedOutmetadataproviderResultsmetadataproviderResults[]gdsprovidermetadataproviderResults[]searchIdmetadataproviderResults[]completedmetadataproviderResults[]timedOutmetadataproviderResults[]moreComingsearchId.metadatastartLocationmetadatastartLocationformattedAddressmetadatastartLocationfullAddressmetadatastartLocationiataCodemetadatastartLocationicaoCodemetadatastartLocationplaceIdmetadatastartLocationlatitudemetadatastartLocationlongitudemetadatastartLocationtimezonemetadataendLocationmetadataendLocationformattedAddressmetadataendLocationfullAddressmetadataendLocationiataCodemetadataendLocationicaoCodemetadataendLocationplaceIdmetadataendLocationlatitudemetadataendLocationlongitudemetadataendLocationtimezonemetadatapickupDatetimemetadatanumPassengersResponse Body Schema (responseMode=stream)
transferstransfers[]searchIdtransfers[]gdsprovidertransfers[]resultIdtransfers[]bookingTokentransfers[]expiresAttransfers[]vehicleIdtransfers[]totalAmountcurrency.transfers[]currencytransfers[]bookabletransfers[]flightInfoRequiredairline and flightNumber are required to book.transfers[]extraPaxRequiredextraPaxInfo is required to book.transfers[]goodToKnowInfotransfers[]goodToKnowInfo[]transfers[]supportstransfers[]cancellationPoliciestransfers[]cancellationPolicies[]noticetransfers[]cancellationPolicies[]refundPercenttransfers[]cancellationPolicies[]refundableUntilDatetimetransfers[]cancellationPolicies[]refundAmounttransfers[]cancellationPolicies[]currencytransfers[]stepstransfers[]steps[]stepTypecar.transfers[]steps[]maintransfers[]steps[]descriptiontransfers[]steps[]departureDatetimetransfers[]steps[]durationMinutestransfers[]steps[]durationSecondstransfers[]steps[]distanceMeterstransfers[]steps[]distanceMilestransfers[]steps[]lineNametransfers[]steps[]lineColortransfers[]steps[]providertransfers[]steps[]providernametransfers[]steps[]providerratingtransfers[]steps[]vehicletransfers[]steps[]vehicletypeShared Ride Van.transfers[]steps[]vehiclecategoryShared or Private.transfers[]steps[]vehiclemaxBagstransfers[]steps[]vehiclemaxPassengerstransfers[]steps[]vehiclenumVehiclestransfers[]steps[]vehicleimageUrltransfers[]steps[]waitTimetransfers[]steps[]waitTimeincludedtransfers[]steps[]waitTimeminutesIncludedtransfers[]steps[]waitTimeextraWaitTimeChargeabletransfers[]steps[]amenitiestransfers[]steps[]amenities[]keyselectedAmenities.transfers[]steps[]amenities[]nametransfers[]steps[]amenities[]descriptiontransfers[]steps[]amenities[]imageUrltransfers[]steps[]amenities[]pngImageUrltransfers[]steps[]amenities[]inputTypetransfers[]steps[]amenities[]includedtransfers[]steps[]amenities[]selectabletransfers[]steps[]amenities[]selectedtransfers[]steps[]startLocationtransfers[]steps[]startLocationformattedAddresstransfers[]steps[]startLocationfullAddresstransfers[]steps[]startLocationiataCodetransfers[]steps[]startLocationicaoCodetransfers[]steps[]startLocationplaceIdtransfers[]steps[]startLocationlatitudetransfers[]steps[]startLocationlongitudetransfers[]steps[]startLocationtimezonetransfers[]steps[]endLocationtransfers[]steps[]endLocationformattedAddresstransfers[]steps[]endLocationfullAddresstransfers[]steps[]endLocationiataCodetransfers[]steps[]endLocationicaoCodetransfers[]steps[]endLocationplaceIdtransfers[]steps[]endLocationlatitudetransfers[]steps[]endLocationlongitudetransfers[]steps[]endLocationtimezonetransfers[]ticketTypestransfers[]ticketTypes[]idticketTypes[].id when booking.transfers[]ticketTypes[]nametransfers[]ticketTypes[]departureDatetimetransfers[]ticketTypes[]arrivalDatetimetransfers[]alternativeTimestransfers[]alternativeTimes[]departureDatetimetransfers[]alternativeTimes[]arrivalDatetimemetadatametadatacompletedmetadatatimedOutmetadataproviderResultsmetadataproviderResults[]gdsprovidermetadataproviderResults[]searchIdmetadataproviderResults[]completedmetadataproviderResults[]timedOutmetadataproviderResults[]moreComingsearchId.metadatastartLocationmetadatastartLocationformattedAddressmetadatastartLocationfullAddressmetadatastartLocationiataCodemetadatastartLocationicaoCodemetadatastartLocationplaceIdmetadatastartLocationlatitudemetadatastartLocationlongitudemetadatastartLocationtimezonemetadataendLocationmetadataendLocationformattedAddressmetadataendLocationfullAddressmetadataendLocationiataCodemetadataendLocationicaoCodemetadataendLocationplaceIdmetadataendLocationlatitudemetadataendLocationlongitudemetadataendLocationtimezonemetadatapickupDatetimemetadatanumPassengerserrorerror event.errorCodeerror event.Response examples
{
"transfers": [
{
"searchId": "5c8563a5d31d4c33a3a1eafbbfe59c4b",
"gdsprovider": 0,
"resultId": "763475651c06f5ac31ea587084dc0629",
"bookingToken": "opaque_offer_token_generated_by_travelandz",
"expiresAt": "2026-08-05T21:20:00.000Z",
"totalAmount": 49.84,
"currency": "USD",
"bookable": true,
"flightInfoRequired": true,
"extraPaxRequired": false,
"goodToKnowInfo": [],
"cancellationPolicies": [
{
"notice": 48,
"refundPercent": 100,
"refundableUntilDatetime": "2026-08-14T14:40:00-04:00",
"refundAmount": 49.84,
"currency": "USD"
}
],
"supports": {},
"steps": [
{
"stepType": "car",
"main": true,
"departureDatetime": "2026-08-16T14:40:00-04:00",
"durationMinutes": 26,
"distanceMeters": 25749,
"provider": {
"name": "GO Airlink NYC",
"rating": 5
},
"vehicle": {
"type": "Shared Ride Van",
"category": "Shared",
"maxBags": 4,
"maxPassengers": 11,
"numVehicles": 1
},
"waitTime": {
"included": false,
"minutesIncluded": 0,
"extraWaitTimeChargeable": false
},
"amenities": []
}
],
"ticketTypes": [],
"alternativeTimes": [
{
"departureDatetime": "2026-08-16T14:40:00-04:00",
"arrivalDatetime": "2026-08-16T15:06:10-04:00"
},
{
"departureDatetime": "2026-08-16T13:40:00-04:00",
"arrivalDatetime": "2026-08-16T14:06:10-04:00"
}
]
}
],
"metadata": {
"completed": true,
"timedOut": false,
"providerResults": [
{
"gdsprovider": 0,
"searchId": "5c8563a5d31d4c33a3a1eafbbfe59c4b",
"completed": true,
"timedOut": false,
"moreComing": false
}
],
"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"
},
"pickupDatetime": "2026-08-16T15:30:00-04:00",
"numPassengers": 2
}
}Stream events
| Event | Description |
|---|---|
provider_search_created | The search was accepted. Carries the first offers, if any are already available. |
provider_poll_result | An updated set of offers. Replace what you were showing with the payload of the latest event. |
provider_done | A source finished contributing offers. |
error | The stream could not continue. Carries error and errorCode. |
done | Final combined result. Close the connection when you receive it. |
Stream example
event: provider_search_created
data: {"transfers":[],"metadata":{"completed":false,"timedOut":false,"providerResults":[{"gdsprovider":0,"searchId":"5c8563a5d31d4c33a3a1eafbbfe59c4b","moreComing":true}]}}
event: provider_poll_result
data: {"transfers":[{"searchId":"5c8563a5d31d4c33a3a1eafbbfe59c4b","resultId":"763475651c06f5ac31ea587084dc0629","totalAmount":49.84,"currency":"USD"}],"metadata":{"completed":false,"timedOut":false,"providerResults":[{"gdsprovider":0,"moreComing":true}]}}
event: provider_done
data: {"transfers":[{"searchId":"5c8563a5d31d4c33a3a1eafbbfe59c4b","resultId":"763475651c06f5ac31ea587084dc0629","totalAmount":49.84,"currency":"USD"}],"metadata":{"completed":true,"timedOut":false,"providerResults":[{"gdsprovider":0,"completed":true,"moreComing":false}]}}
event: done
data: {"transfers":[{"searchId":"5c8563a5d31d4c33a3a1eafbbfe59c4b","resultId":"763475651c06f5ac31ea587084dc0629","totalAmount":49.84,"currency":"USD"}],"metadata":{"completed":true,"timedOut":false,"providerResults":[{"gdsprovider":0,"completed":true,"moreComing":false}]}}Errors
| HTTP | Code | Meaning | Recommended action |
|---|---|---|---|
400 | The body, query or path is invalid, or contains an unknown property. | Fix the request using the message array. | |
400 | transfer_invalid_currency | The currency is outside the supported list. | Use a supported currency. |
400 | transfer_invalid_language | The requested language is not supported. | Use one of the documented language values. |
429 | transfer_provider_error | The service is temporarily rate limited. | Retry with exponential backoff. |
502 | transfer_provider_error | The request could not be completed. | Do not assume success. Keep your identifiers and read the reservation when the operation could have been created. |
400 | transfer_location_not_found | An origin or destination could not be resolved. | Add a city or zipcode, or send a place ID or a coordinate pair. |
503 | The price could not be confirmed right now. | Retry later. Do not book and do not charge the traveller. |
Usage notes
If every source fails before the stream opens, the request fails with a normal JSON HTTP error. If the stream already started, the failure arrives as an error event instead. Close stream connections explicitly when you no longer need them.
Persist searchId, resultId and bookingToken for the offer the traveller selects: pricing, booking and reservation reads all need them.
cURL example
curl --request POST \
--url "https://api.sandbox.travelandz.com/v1/transfers/search" \
-H "Authorization: Bearer $TRAVELANDZ_SECRET_KEY" \
-H "X-Travelandz-Id: $TRAVELANDZ_PUBLIC_KEY:$TRAVELANDZ_PROFILE_CODE" \
-H "Content-Type: application/json" \
--data '{
"mode": "one_way",
"startAddress": "433 Park Ave",
"startCity": "New York",
"startZipcode": "10022",
"endAddress": "JFK",
"pickupDatetime": "2026-08-16 15:30",
"numPassengers": 2,
"currency": "USD",
"responseMode": "complete"
}'