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/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"}'Añade tus credenciales para enviar una petición.
Esta petición necesita identificadores o tokens de una llamada anterior. Ejecuta primero el paso previo y pega aquí sus valores.
Respuesta
Pulsa «¡Pruébalo!» para enviar una petición y ver la respuesta aquí.
Busca ofertas de reemplazo para una reserva existente.
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
Solo reservationHashedId es obligatorio. Envía únicamente los campos que quieras cambiar: todo lo que omitas se toma de la reserva original.
Este endpoint siempre responde con JSON. Nunca abre un stream.
Schema del body
reservationHashedIdmodenumPassengersstartAddressstartCitystartZipcodestartLatstartLng.startLngstartLat.startPlaceIdendAddressendCityendZipcodeendLatendLng.endLngendLat.endPlaceIdpickupDatetimeflightDatetimereturnPickupDatetimereturnFlightDatetimeamenitiesamenities[]currencyUSD on a new search and is inherited afterwards.campaignbranchcampaign when sent.languageLANG or Accept-Language header.Ejemplo de petición
{
"reservationHashedId": "5c8563a5d31d4c33a3a1eafbbfe59c4b",
"pickupDatetime": "2026-08-30 22:00",
"numPassengers": 2,
"currency": "USD"
}Respuesta exitosa
Devuelve un nuevo searchId de cambio y offers[]. Las ofertas tienen la misma forma que un resultado de búsqueda normal, incluido un bookingToken opaco por oferta.
Schema de respuesta
gdsprovidersearchIdmoreComingpickupDatetimenumPassengersstartLocationstartLocationformattedAddressstartLocationfullAddressstartLocationiataCodestartLocationicaoCodestartLocationplaceIdstartLocationlatitudestartLocationlongitudestartLocationtimezoneendLocationendLocationformattedAddressendLocationfullAddressendLocationiataCodeendLocationicaoCodeendLocationplaceIdendLocationlatitudeendLocationlongitudeendLocationtimezoneoffersoffers[]searchIdoffers[]gdsprovideroffers[]resultIdoffers[]bookingTokenoffers[]expiresAtoffers[]vehicleIdoffers[]totalAmountcurrency.offers[]currencyoffers[]bookableoffers[]flightInfoRequiredairline and flightNumber are required to book.offers[]extraPaxRequiredextraPaxInfo is required to book.offers[]goodToKnowInfooffers[]goodToKnowInfo[]offers[]supportsoffers[]cancellationPoliciesoffers[]cancellationPolicies[]noticeoffers[]cancellationPolicies[]refundPercentoffers[]cancellationPolicies[]refundableUntilDatetimeoffers[]cancellationPolicies[]refundAmountoffers[]cancellationPolicies[]currencyoffers[]stepsoffers[]steps[]stepTypecar.offers[]steps[]mainoffers[]steps[]descriptionoffers[]steps[]departureDatetimeoffers[]steps[]durationMinutesoffers[]steps[]durationSecondsoffers[]steps[]distanceMetersoffers[]steps[]distanceMilesoffers[]steps[]lineNameoffers[]steps[]lineColoroffers[]steps[]provideroffers[]steps[]providernameoffers[]steps[]providerratingoffers[]steps[]vehicleoffers[]steps[]vehicletypeShared Ride Van.offers[]steps[]vehiclecategoryShared or Private.offers[]steps[]vehiclemaxBagsoffers[]steps[]vehiclemaxPassengersoffers[]steps[]vehiclenumVehiclesoffers[]steps[]vehicleimageUrloffers[]steps[]waitTimeoffers[]steps[]waitTimeincludedoffers[]steps[]waitTimeminutesIncludedoffers[]steps[]waitTimeextraWaitTimeChargeableoffers[]steps[]amenitiesoffers[]steps[]amenities[]keyselectedAmenities.offers[]steps[]amenities[]nameoffers[]steps[]amenities[]descriptionoffers[]steps[]amenities[]imageUrloffers[]steps[]amenities[]pngImageUrloffers[]steps[]amenities[]inputTypeoffers[]steps[]amenities[]includedoffers[]steps[]amenities[]selectableoffers[]steps[]amenities[]selectedoffers[]steps[]startLocationoffers[]steps[]startLocationformattedAddressoffers[]steps[]startLocationfullAddressoffers[]steps[]startLocationiataCodeoffers[]steps[]startLocationicaoCodeoffers[]steps[]startLocationplaceIdoffers[]steps[]startLocationlatitudeoffers[]steps[]startLocationlongitudeoffers[]steps[]startLocationtimezoneoffers[]steps[]endLocationoffers[]steps[]endLocationformattedAddressoffers[]steps[]endLocationfullAddressoffers[]steps[]endLocationiataCodeoffers[]steps[]endLocationicaoCodeoffers[]steps[]endLocationplaceIdoffers[]steps[]endLocationlatitudeoffers[]steps[]endLocationlongitudeoffers[]steps[]endLocationtimezoneoffers[]ticketTypesoffers[]ticketTypes[]idticketTypes[].id when booking.offers[]ticketTypes[]nameoffers[]ticketTypes[]departureDatetimeoffers[]ticketTypes[]arrivalDatetimeoffers[]alternativeTimesoffers[]alternativeTimes[]departureDatetimeoffers[]alternativeTimes[]arrivalDatetimeEjemplos de respuesta
{
"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"
}
]
}
]
}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
Después de que el viajero elija una oferta de reemplazo, pide pricing para ella y luego confirma el cambio. La reserva original permanece activa hasta confirmar el cambio.
Ejemplo cURL
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"
}'