POST/v1/flights/search
Buscar ofertas de vuelo
Busca inventario de vuelo en las fuentes activas y devuelve ofertas normalizadas con precio final para el developer, metadata de proveedor y links de reserva opcionales.
Busca inventario de vuelo en las fuentes activas y devuelve ofertas normalizadas con precio final para el developer, metadata de proveedor y links de reserva opcionales.
Endpoint
| Método | Ruta | Auth |
|---|---|---|
POST | /v1/flights/search | API key requerida |
| Header | Descripción |
|---|---|
Authorization | Bearer <secret_key>. The secret is shown only once when the credential is created. |
X-Travelandz-Id | <public_key>:<profile_code>. The profile_code is the dp_-prefixed Developer Profile code shown in your dashboard. This binds the request to a profile and credential. |
Content-Type | Use application/json for requests with a body. |
Esquema del cuerpo de la petición
| Propiedad | Tipo | Detalles | Requerido | Notas |
|---|---|---|---|---|
slices | array | Sí | - | |
slices[]origin | string | Sí | IATA code of the origin airport or city | |
slices[]destination | string | Sí | IATA code of the destination airport or city | |
slices[]departure_date | string | Format: YYYY-MM-DD | Sí | Must not be in the past |
passengers | array | Sí | - | |
passengers[]type | enum | adultchildinfant_without_seat | Sí | - |
cabin_class | enum | economybusinessfirstpremium_economy | Sí | - |
currency | enum | EURUSDCNY | No | Default EUR |
retrieveBookingLink | boolean | No | When true, supported offers can include offerLink | |
includeOriginalPrice | boolean | No | - | |
language | enum | eneszh | No | Optional language for translated metadata when available |
Respuesta exitosa
Devuelve offers[] with normalized provider metadata, pricing, passenger requirements, slices and segments.
Esquema del cuerpo de la respuesta
| Propiedad | Tipo | Detalles | Requerido | Notas |
|---|---|---|---|---|
offers | array | Sí | - | |
offers[]offerId | string | Sí | - | |
offers[]offerLink | string | Nulable | - | |
offers[]gdsprovider | number | Sí | - | |
offers[]expiresAt | string | Format: ISO 8601 | Sí | - |
offers[]totalAmount | number | Sí | - | |
offers[]originalTotalAmount | number | Sí | - | |
offers[]holdOptions | object | Sí | - | |
offers[]holdOptionsavailable | boolean | Sí | - | |
offers[]holdOptionspaymentRequiredBy | string | Format: ISO 8601 | Nulable | - |
offers[]holdOptionspriceGuarantedUntil | string | Format: ISO 8601 | Nulable | - |
offers[]supportedPassengerIdDocuments | array | Sí | - | |
offers[]supportedPassengerIdDocuments[] | enum[] | Sí | - | |
offers[]passengerIdentityDocumentsRequired | boolean | Sí | - | |
offers[]supportedLoyaltyPrograms | array | Sí | - | |
offers[]supportedLoyaltyPrograms[] | string[] | Sí | - | |
offers[]airline | object | Sí | - | |
offers[]airlinename | string | Sí | - | |
offers[]airlineiataCode | string | Sí | - | |
offers[]airlinelogoURL | string | Nulable | - | |
offers[]airlineconditionsOfCarriage | string | No | - | |
offers[]passengers | array | Sí | - | |
offers[]passengers[]id | string | Sí | - | |
offers[]passengers[]type | enum | adultchildinfant_without_seat | Sí | - |
offers[]conditions | object | Sí | - | |
offers[]conditionsrefundBeforeDeparture | object | Sí | - | |
offers[]conditionsrefundBeforeDeparturecurrency | string | Sí | - | |
offers[]conditionsrefundBeforeDeparturepenaltyAmount | string | Sí | - | |
offers[]conditionsrefundBeforeDepartureallowed | boolean | Sí | - | |
offers[]conditionschangeBeforeDeparture | object | Sí | - | |
offers[]conditionschangeBeforeDeparturecurrency | string | Sí | - | |
offers[]conditionschangeBeforeDeparturepenaltyAmount | string | Sí | - | |
offers[]conditionschangeBeforeDepartureallowed | boolean | Sí | - | |
offers[]slices | array | Sí | - | |
offers[]slices[]fareName | string | Sí | - | |
offers[]slices[]departure | object | Sí | - | |
offers[]slices[]departureiataCode | string | Sí | - | |
offers[]slices[]departurecityName | string | Sí | - | |
offers[]slices[]departureairportName | string | No | - | |
offers[]slices[]departuredepartingAt | string | Format: ISO 8601 | Sí | - |
offers[]slices[]departuretimeZone | string | No | - | |
offers[]slices[]arrival | object | Sí | - | |
offers[]slices[]arrivaliataCode | string | Sí | - | |
offers[]slices[]arrivalcityName | string | Sí | - | |
offers[]slices[]arrivalairportName | string | No | - | |
offers[]slices[]arrivalarrivingAt | string | Format: ISO 8601 | Sí | - |
offers[]slices[]arrivaltimeZone | string | No | - | |
offers[]slices[]durationMinutes | number | Sí | - | |
offers[]slices[]conditions | object | Sí | - | |
offers[]slices[]conditionspriorityCheckIn | boolean | Sí | - | |
offers[]slices[]conditionspriorityBoarding | boolean | Sí | - | |
offers[]slices[]conditionsadvanceSeatSelection | boolean | Sí | - | |
offers[]slices[]segments | array | Sí | - | |
offers[]slices[]segments[]fareName | string | Sí | - | |
offers[]slices[]segments[]departure | object | Sí | - | |
offers[]slices[]segments[]departureiataCode | string | Sí | - | |
offers[]slices[]segments[]departurecityName | string | Sí | - | |
offers[]slices[]segments[]departureairportName | string | No | - | |
offers[]slices[]segments[]departuredepartingAt | string | Format: ISO 8601 | Sí | - |
offers[]slices[]segments[]departuretimeZone | string | No | - | |
offers[]slices[]segments[]departureterminal | string | No | - | |
offers[]slices[]segments[]arrival | object | Sí | - | |
offers[]slices[]segments[]arrivaliataCode | string | Sí | - | |
offers[]slices[]segments[]arrivalcityName | string | Sí | - | |
offers[]slices[]segments[]arrivalairportName | string | No | - | |
offers[]slices[]segments[]arrivalarrivingAt | string | Format: ISO 8601 | Sí | - |
offers[]slices[]segments[]arrivaltimeZone | string | No | - | |
offers[]slices[]segments[]arrivalterminal | string | No | - | |
offers[]slices[]segments[]airline | object | Sí | - | |
offers[]slices[]segments[]airlineoperatingCarrier | object | Sí | - | |
offers[]slices[]segments[]airlineoperatingCarriername | string | Sí | - | |
offers[]slices[]segments[]airlineoperatingCarrieriataCode | string | Sí | - | |
offers[]slices[]segments[]airlineoperatingCarrierlogoURL | string | Nulable | - | |
offers[]slices[]segments[]airlineoperatingCarrierconditionsOfCarriage | string | No | - | |
offers[]slices[]segments[]airlinemarketingCarrier | object | Sí | - | |
offers[]slices[]segments[]airlinemarketingCarriername | string | Sí | - | |
offers[]slices[]segments[]airlinemarketingCarrieriataCode | string | Sí | - | |
offers[]slices[]segments[]airlinemarketingCarrierlogoURL | string | Nulable | - | |
offers[]slices[]segments[]airlinemarketingCarrierconditionsOfCarriage | string | No | - | |
offers[]slices[]segments[]flightNumber | string | Sí | - | |
offers[]slices[]segments[]durationMinutes | number | Sí | - | |
offers[]slices[]segments[]passengers | array | Sí | - | |
offers[]slices[]segments[]passengers[]amenities | object | Sí | - | |
offers[]slices[]segments[]passengers[]amenitieswifi | object | Sí | - | |
offers[]slices[]segments[]passengers[]amenitieswificost | enum | freefree or paidpaid | Nulable | - |
offers[]slices[]segments[]passengers[]amenitieswifiavailable | boolean | Sí | - | |
offers[]slices[]segments[]passengers[]amenitiesseat | object | Sí | - | |
offers[]slices[]segments[]passengers[]amenitiesseatpitch | enum | "number"n/a | Sí | - |
offers[]slices[]segments[]passengers[]amenitiesseatlegroom | enum | lessmorestandardn/a | Sí | - |
offers[]slices[]segments[]passengers[]amenitiesseattype | enum | standardskycouchreclinerangle_flatfull_flatfull_flat_podprivate_suite | Nulable | - |
offers[]slices[]segments[]passengers[]amenitiespower | boolean | Sí | - | |
offers[]slices[]segments[]passengers[]baggages | array | Sí | - | |
offers[]slices[]segments[]passengers[]baggages[]type | enum | checkedcarry_on | Sí | - |
offers[]slices[]segments[]passengers[]baggages[]quantity | number | Sí | - | |
offers[]slices[]segments[]passengers[]baggages[]maxKg | string | No | - | |
offers[]CO2EmissionsKg | number | Nulable | - | |
offers[]holdId | string | Nulable | - | |
offers[]originalCurrency | enum | EURUSDCNY | Sí | - |
offers[]currency | enum | EURUSDCNY | Sí | - |
Notas operativas
- Send one
slices[]item for one-way trips and two items for round trips. passengers[]must include at least one adult.retrieveBookingLink=truecan addofferLinkwhen the provider supports it.- Store the selected offer payload. Some booking flows require
totalSegmentsbuilt fromoffer.slices[].segments[].
Ejemplo
bash
curl -X POST https://api.sandbox.travelandz.com/v1/flights/search \
-H "Authorization: Bearer $TRAVELANDZ_SECRET_KEY" \
-H "X-Travelandz-Id: $TRAVELANDZ_PUBLIC_KEY:$TRAVELANDZ_PROFILE_CODE" \
-H "Content-Type: application/json" \
-d '{"slices":[{"origin":"MAD","destination":"BCN","departure_date":"2026-08-20"}],"passengers":[{"type":"adult"}],"cabin_class":"economy","currency":"EUR","retrieveBookingLink":false,"includeOriginalPrice":false,"language":"es"}'Cuerpo de la petición - Ejemplo
json
{
"slices": [
{
"origin": "MAD",
"destination": "BCN",
"departure_date": "2026-08-20"
}
],
"passengers": [
{
"type": "adult"
}
],
"cabin_class": "economy",
"currency": "EUR",
"retrieveBookingLink": false,
"includeOriginalPrice": false,
"language": "es"
}Respuestas
| Código | Descripción |
|---|---|
200 | Flight offers retrieved successfully. |
400 | Solicitud inválida: payload no válido. |
401 | No autorizado: credenciales inválidas o ausentes. |
403 | Prohibido: credenciales inválidas. |
500 | Error interno del servidor |
200 Cuerpo de la respuesta
Tipo de contenido: application/json
json
{
"offers": [
{
"offerId": "string",
"offerLink": "string",
"gdsprovider": 0,
"expiresAt": "2026-06-05T00:06:29.070Z",
"totalAmount": 0,
"originalTotalAmount": 0,
"holdOptions": {
"available": true,
"paymentRequiredBy": "2026-06-05T00:06:29.070Z",
"priceGuarantedUntil": "2026-06-05T00:06:29.070Z"
},
"supportedPassengerIdDocuments": "passport",
"passengerIdentityDocumentsRequired": true,
"supportedLoyaltyPrograms": [
null
],
"airline": {
"name": "string",
"iataCode": "string",
"logoURL": {},
"conditionsOfCarriage": "string"
},
"passengers": [
{
"id": "string",
"type": "adult"
}
],
"conditions": {
"refundBeforeDeparture": {
"currency": "string",
"penaltyAmount": "string",
"allowed": true
},
"changeBeforeDeparture": {
"currency": "string",
"penaltyAmount": "string",
"allowed": true
}
},
"slices": [
{
"fareName": "string",
"departure": {
"iataCode": "string",
"cityName": "string",
"airportName": "string",
"departingAt": "string",
"timeZone": "string"
},
"arrival": {
"iataCode": "string",
"cityName": "string",
"airportName": "string",
"arrivingAt": "string",
"timeZone": "string"
},
"durationMinutes": 0,
"conditions": {
"priorityCheckIn": true,
"priorityBoarding": true,
"advanceSeatSelection": true
},
"segments": [
{
"fareName": "string",
"departure": {
"iataCode": "string",
"cityName": "string",
"airportName": "string",
"departingAt": "string",
"timeZone": "string",
"terminal": "string"
},
"arrival": {
"iataCode": "string",
"cityName": "string",
"airportName": "string",
"arrivingAt": "string",
"timeZone": "string",
"terminal": "string"
},
"airline": {},
"flightNumber": "string",
"durationMinutes": 0,
"passengers": [
{
"amenities": {
"wifi": {
"cost": {},
"available": true
},
"seat": {
"pitch": "string",
"legroom": "string",
"type": {}
},
"power": true
},
"baggages": [
{
"type": "checked",
"quantity": 0,
"maxKg": "string"
}
]
}
]
}
]
}
],
"CO2EmissionsKg": 0,
"holdId": "string",
"originalCurrency": {},
"currency": "EUR"
}
]
}