POST/v1/transfers/pricing

Cotizar un transfer

Confirma el precio final de una oferta seleccionada y recibe el token necesario para reservarla.

Compartir
POST/v1/transfers/pricing

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
bash
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

HeaderDescripción
AuthorizationBearer <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>.
LANGHeader recomendado para el idioma. También se acepta Accept-Language.
Content-Typeapplication/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

gdsprovider
enum
0
Transfer content selector. Currently 0.
bookingToken
string
Copy the bookingToken of the selected offer.
searchId
string
Must be the searchId of the selected offer.
resultId
string
Must be the resultId of the selected offer.
selectedAmenities
array
selectedAmenities[]
string[]No
When sent, needs at least one unique, non-empty key available in the offer.
currency
enum
EURUSDINRCHFJPYGBPAUDCADCNYSGDNZDMXN
No
Lowercase values are accepted and normalized. Defaults to USD on a new search and is inherited afterwards.
language
enum
en-USes-ESde-DEfr-FRpt-BRzh-CNit-IT
No
Legacy field. Prefer the LANG or Accept-Language header.

Ejemplo de petición

Sin amenities

json
json
{
  "gdsprovider": 0,
  "bookingToken": "opaque_offer_token_generated_by_travelandz",
  "searchId": "73a5670b476649a985f0535db1077c05",
  "resultId": "fe94b51ccd0623a9f1adabfbe0614d34",
  "currency": "USD"
}

Con amenities

json
json
{
  "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

finalPrice
object
finalPriceamount
number
Amount to charge, rounded to two decimals.
finalPricecurrency
enum
EURUSDINRCHFJPYGBPAUDCADCNYSGDNZDMXN
selectedAmenities
array
selectedAmenities[]key
string
Value to send in selectedAmenities.
selectedAmenities[]name
string
Localized name.
selectedAmenities[]description
stringNo
selectedAmenities[]imageUrl
string
Formato: URL
No
selectedAmenities[]pngImageUrl
string
Formato: URL
No
selectedAmenities[]inputType
enum
booleannumeric
No
selectedAmenities[]included
boolean
True when the amenity is already part of the offer.
selectedAmenities[]selectable
boolean
True when the amenity can be added to this offer.
selectedAmenities[]selected
boolean
True when the amenity is part of the priced selection.
pricingToken
string
Opaque value. Send it to booking or to a reservation change; never decode or modify it.

Ejemplos de respuesta

json
json
{
  "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

HTTPCódigoSignificadoAcción recomendada
400El body, la query o el path son inválidos, o incluyen una propiedad desconocida.Corrige la petición usando el array message.
400transfer_invalid_currencyLa moneda está fuera de la lista soportada.Usa una moneda soportada.
400transfer_invalid_languageEl idioma solicitado no está soportado.Usa uno de los valores de idioma documentados.
429transfer_provider_errorEl servicio está temporalmente limitado por rate limit.Reintenta con backoff exponencial.
502transfer_provider_errorLa petición no pudo completarse.No asumas que tuvo éxito. Conserva tus identificadores y consulta la reserva cuando la operación pudiera haberse creado.
400transfer_invalid_booking_tokenEl booking token expiró, fue modificado o no pertenece a esta oferta.Vuelve a buscar y usa el token de la nueva oferta seleccionada.
400transfer_invalid_amenitiesLas 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.
400transfer_currency_mismatchLa 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.
503El 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

bash
bash
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"
}'