Consola API
Pruébalo
Envía una petición real al entorno sandbox e inspecciona la respuesta.
Credenciales
Inicia sesión para elegir entre tus API keys guardadas en vez de pegarlas.
Cuerpo de la petición
Petición cURL
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"}'Añade tus credenciales para enviar una petición.
Respuesta
Pulsa «¡Pruébalo!» para enviar una petición y ver la respuesta aquí.
Busca ofertas de transfers y recibe una respuesta JSON completa o eventos progresivos en stream.
Autenticación y headers
| Header | Descripción |
|---|---|
Authorization | Bearer <secret_key>. Conserva el secret en el servidor y nunca lo escribas en logs del cliente. |
X-Travelandz-Id | <public_key>:<profile_code>, donde el profile code persistido usa el formato dp_<12 alfanuméricos>. |
LANG | Header recomendado para el idioma. También se acepta Accept-Language. |
Content-Type | application/json para peticiones con body JSON. |
Petición
Envía mode y numPassengers. Origen y destino requieren cada uno una dirección, un place ID o un par de latitud/longitud. Usa responseMode en stream para recibir las ofertas a medida que llegan en lugar de una única respuesta final. Una búsqueda round_trip requiere además returnPickupDatetime o returnFlightDatetime.
Schema del body
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.Ejemplo de petición
Respuesta completa
{
"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"
}Respuesta en stream
{
"mode": "one_way",
"startAddress": "433 Park Ave, New York",
"endAddress": "JFK",
"pickupDatetime": "2026-08-16 15:30",
"numPassengers": 2,
"currency": "USD",
"responseMode": "stream"
}Respuesta exitosa
Devuelve transfers[] con las ofertas que pueden cotizarse y reservarse, más metadata con las ubicaciones resueltas y si el conjunto de resultados es definitivo. Cada oferta incluye un bookingToken opaco que copias en pricing.
Una búsqueda puede devolver 200 con metadata.timedOut: true. No es un error: las ofertas ya presentes son válidas y reservables.
Schema de respuesta
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.metadatastartLocationmetadatastartLocationformattedAddressmetadatastartLocationfullAddressmetadatastartLocationiataCodemetadatastartLocationicaoCodemetadatastartLocationplaceIdmetadatastartLocationlatitudemetadatastartLocationlongitudemetadatastartLocationtimezonemetadataendLocationmetadataendLocationformattedAddressmetadataendLocationfullAddressmetadataendLocationiataCodemetadataendLocationicaoCodemetadataendLocationplaceIdmetadataendLocationlatitudemetadataendLocationlongitudemetadataendLocationtimezonemetadatapickupDatetimemetadatanumPassengersSchema de respuesta (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.Ejemplos de respuesta
{
"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
}
}Eventos del stream
| Evento | Descripción |
|---|---|
provider_search_created | La búsqueda fue aceptada. Incluye las primeras ofertas, si ya hay alguna disponible. |
provider_poll_result | Un conjunto actualizado de ofertas. Reemplaza lo que estabas mostrando con el payload del último evento. |
provider_done | Una fuente terminó de aportar ofertas. |
error | El stream no pudo continuar. Incluye error y errorCode. |
done | Resultado final combinado. Cierra la conexión al recibirlo. |
Ejemplo de stream
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}]}}Errores
| HTTP | Código | Significado | Acción recomendada |
|---|---|---|---|
400 | El body, la query o el path son inválidos, o incluyen una propiedad desconocida. | Corrige la petición usando el array message. | |
400 | transfer_invalid_currency | La moneda está fuera de la lista soportada. | Usa una moneda soportada. |
400 | transfer_invalid_language | El idioma solicitado no está soportado. | Usa uno de los valores de idioma documentados. |
429 | transfer_provider_error | El servicio está temporalmente limitado por rate limit. | Reintenta con backoff exponencial. |
502 | transfer_provider_error | La petición no pudo completarse. | No asumas que tuvo éxito. Conserva tus identificadores y consulta la reserva cuando la operación pudiera haberse creado. |
400 | transfer_location_not_found | No se pudo resolver el origen o el destino. | Añade city o zipcode, o envía un place ID o un par de coordenadas. |
503 | El precio no pudo confirmarse en este momento. | Reintenta más tarde. No reserves ni cobres al viajero. |
Notas de uso
Si todas las fuentes fallan antes de abrir el stream, la petición falla con un error HTTP JSON normal. Si el stream ya empezó, el fallo llega como evento error. Cierra explícitamente las conexiones de stream cuando ya no las necesites.
Persiste searchId, resultId y bookingToken de la oferta que elija el viajero: pricing, booking y las consultas de reserva los necesitan.
Ejemplo cURL
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"
}'