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/pricing' \
-H 'Authorization: Bearer YOUR_SECRET_KEY' \
-H 'X-Travelandz-Id: YOUR_PUBLIC_KEY:YOUR_PROFILE_CODE' \
-H 'Content-Type: application/json' \
-d '{"gdsprovider":0,"bookingToken":"opaque_offer_token_generated_by_travelandz","searchId":"73a5670b476649a985f0535db1077c05","resultId":"fe94b51ccd0623a9f1adabfbe0614d34","selectedAmenities":["baby_seats","child_booster"],"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í.
Confirma el precio final de una oferta seleccionada y recibe el token necesario para reservarla.
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 gdsprovider, el bookingToken de la oferta seleccionada y su searchId y resultId coincidentes. Añade selectedAmenities con las keys de amenities que eligió el viajero. Si envías currency debe coincidir con la moneda de la búsqueda; omítela para heredarla.
Schema del body
gdsprovider0.bookingTokenbookingToken of the selected offer.searchIdsearchId of the selected offer.resultIdresultId of the selected offer.selectedAmenitiesselectedAmenities[]currencyUSD on a new search and is inherited afterwards.languageLANG or Accept-Language header.Ejemplo de petición
Sin amenities
{
"gdsprovider": 0,
"bookingToken": "opaque_offer_token_generated_by_travelandz",
"searchId": "73a5670b476649a985f0535db1077c05",
"resultId": "fe94b51ccd0623a9f1adabfbe0614d34",
"currency": "USD"
}Con amenities
{
"gdsprovider": 0,
"bookingToken": "opaque_offer_token_generated_by_travelandz",
"searchId": "73a5670b476649a985f0535db1077c05",
"resultId": "fe94b51ccd0623a9f1adabfbe0614d34",
"selectedAmenities": [
"baby_seats",
"child_booster"
],
"currency": "USD"
}Respuesta exitosa
Devuelve finalPrice, la selección normalizada de amenities y un pricingToken opaco.
finalPrice.amount es el importe a cobrar al viajero. Nunca recompongas un precio desde la respuesta de búsqueda ni desde los datos de amenities.
Schema de respuesta
finalPricefinalPriceamountfinalPricecurrencyselectedAmenitiesselectedAmenities[]keyselectedAmenities.selectedAmenities[]nameselectedAmenities[]descriptionselectedAmenities[]imageUrlselectedAmenities[]pngImageUrlselectedAmenities[]inputTypeselectedAmenities[]includedselectedAmenities[]selectableselectedAmenities[]selectedpricingTokenEjemplos de respuesta
{
"finalPrice": {
"amount": 181.97,
"currency": "USD"
},
"selectedAmenities": [
{
"key": "baby_seats",
"name": "Baby seats",
"description": "Your vehicle will have a child safety seat to keep children under age 4 safe.",
"imageUrl": "https://api.sandbox.travelandz.com/v1/assets/transfers/images/0/amenities/baby-seats.svg",
"pngImageUrl": "https://api.sandbox.travelandz.com/v1/assets/transfers/images/0/amenities/baby-seats.png",
"inputType": "numeric",
"included": false,
"selected": true,
"selectable": true
},
{
"key": "child_booster",
"name": "Child booster",
"description": "Your vehicle will have a child booster seat to keep children from age 4-8 safe.",
"imageUrl": "https://api.sandbox.travelandz.com/v1/assets/transfers/images/0/amenities/child-booster.svg",
"pngImageUrl": "https://api.sandbox.travelandz.com/v1/assets/transfers/images/0/amenities/child-booster.png",
"inputType": "numeric",
"included": false,
"selected": true,
"selectable": true
}
],
"pricingToken": "opaque_public_pricing_token_generated_by_travelandz"
}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_invalid_booking_token | El booking token expiró, fue modificado o no pertenece a esta oferta. | Vuelve a buscar y usa el token de la nueva oferta seleccionada. |
400 | transfer_invalid_amenities | Las keys de amenities están duplicadas, vacías o no están disponibles en esta oferta. | Envía keys únicas tomadas de la oferta o del catálogo de amenities. |
400 | transfer_currency_mismatch | La moneda no coincide con la oferta, la cotización o la reserva. | Reutiliza la moneda devuelta por el paso anterior, u omite el campo para heredarla. |
503 | El precio no pudo confirmarse en este momento. | Reintenta más tarde. No reserves ni cobres al viajero. |
Notas de uso
Pricing es obligatorio antes de cada reserva y antes de confirmar cada cambio de reserva, incluso sin amenities seleccionadas.
El pricingToken es opaco y pertenece a la oferta para la que se creó. Cópialo en la siguiente llamada sin decodificarlo ni modificarlo, y vuelve a pedir pricing si la oferta expira.
Ejemplo cURL
curl --request POST \
--url "https://api.sandbox.travelandz.com/v1/transfers/pricing" \
-H "Authorization: Bearer $TRAVELANDZ_SECRET_KEY" \
-H "X-Travelandz-Id: $TRAVELANDZ_PUBLIC_KEY:$TRAVELANDZ_PROFILE_CODE" \
-H "Content-Type: application/json" \
--data '{
"gdsprovider": 0,
"bookingToken": "opaque_offer_token_generated_by_travelandz",
"searchId": "73a5670b476649a985f0535db1077c05",
"resultId": "fe94b51ccd0623a9f1adabfbe0614d34",
"selectedAmenities": [
"baby_seats",
"child_booster"
],
"currency": "USD"
}'