POST/v1/flights/search
Rechercher des offres de vol
Searches active flight inventory sources and returns normalized offers with final developer pricing, provider metadata and optional booking links.
Searches active flight inventory sources and returns normalized offers with final developer pricing, provider metadata and optional booking links.
Endpoint
| Method | Path | Auth |
|---|---|---|
POST | /v1/flights/search | Required API key |
| Header | Description |
|---|---|
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. |
Request Body Schema
| Property | Type | Details | Required | Notes |
|---|---|---|---|---|
slices | array | Yes | - | |
slices[]origin | string | Yes | IATA code of the origin airport or city | |
slices[]destination | string | Yes | IATA code of the destination airport or city | |
slices[]departure_date | string | Format: YYYY-MM-DD | Yes | Must not be in the past |
passengers | array | Yes | - | |
passengers[]type | enum | adultchildinfant_without_seat | Yes | - |
cabin_class | enum | economybusinessfirstpremium_economy | Yes | - |
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 |
Success Response
Returns offers[] with normalized provider metadata, pricing, passenger requirements, slices and segments.
Response Body Schema
| Property | Type | Details | Required | Notes |
|---|---|---|---|---|
offers | array | Yes | - | |
offers[]offerId | string | Yes | - | |
offers[]offerLink | string | Nullable | - | |
offers[]gdsprovider | number | Yes | - | |
offers[]expiresAt | string | Format: ISO 8601 | Yes | - |
offers[]totalAmount | number | Yes | - | |
offers[]originalTotalAmount | number | Yes | - | |
offers[]holdOptions | object | Yes | - | |
offers[]holdOptionsavailable | boolean | Yes | - | |
offers[]holdOptionspaymentRequiredBy | string | Format: ISO 8601 | Nullable | - |
offers[]holdOptionspriceGuarantedUntil | string | Format: ISO 8601 | Nullable | - |
offers[]supportedPassengerIdDocuments | array | Yes | - | |
offers[]supportedPassengerIdDocuments[] | enum[] | Yes | - | |
offers[]passengerIdentityDocumentsRequired | boolean | Yes | - | |
offers[]supportedLoyaltyPrograms | array | Yes | - | |
offers[]supportedLoyaltyPrograms[] | string[] | Yes | - | |
offers[]airline | object | Yes | - | |
offers[]airlinename | string | Yes | - | |
offers[]airlineiataCode | string | Yes | - | |
offers[]airlinelogoURL | string | Nullable | - | |
offers[]airlineconditionsOfCarriage | string | No | - | |
offers[]passengers | array | Yes | - | |
offers[]passengers[]id | string | Yes | - | |
offers[]passengers[]type | enum | adultchildinfant_without_seat | Yes | - |
offers[]conditions | object | Yes | - | |
offers[]conditionsrefundBeforeDeparture | object | Yes | - | |
offers[]conditionsrefundBeforeDeparturecurrency | string | Yes | - | |
offers[]conditionsrefundBeforeDeparturepenaltyAmount | string | Yes | - | |
offers[]conditionsrefundBeforeDepartureallowed | boolean | Yes | - | |
offers[]conditionschangeBeforeDeparture | object | Yes | - | |
offers[]conditionschangeBeforeDeparturecurrency | string | Yes | - | |
offers[]conditionschangeBeforeDeparturepenaltyAmount | string | Yes | - | |
offers[]conditionschangeBeforeDepartureallowed | boolean | Yes | - | |
offers[]slices | array | Yes | - | |
offers[]slices[]fareName | string | Yes | - | |
offers[]slices[]departure | object | Yes | - | |
offers[]slices[]departureiataCode | string | Yes | - | |
offers[]slices[]departurecityName | string | Yes | - | |
offers[]slices[]departureairportName | string | No | - | |
offers[]slices[]departuredepartingAt | string | Format: ISO 8601 | Yes | - |
offers[]slices[]departuretimeZone | string | No | - | |
offers[]slices[]arrival | object | Yes | - | |
offers[]slices[]arrivaliataCode | string | Yes | - | |
offers[]slices[]arrivalcityName | string | Yes | - | |
offers[]slices[]arrivalairportName | string | No | - | |
offers[]slices[]arrivalarrivingAt | string | Format: ISO 8601 | Yes | - |
offers[]slices[]arrivaltimeZone | string | No | - | |
offers[]slices[]durationMinutes | number | Yes | - | |
offers[]slices[]conditions | object | Yes | - | |
offers[]slices[]conditionspriorityCheckIn | boolean | Yes | - | |
offers[]slices[]conditionspriorityBoarding | boolean | Yes | - | |
offers[]slices[]conditionsadvanceSeatSelection | boolean | Yes | - | |
offers[]slices[]segments | array | Yes | - | |
offers[]slices[]segments[]fareName | string | Yes | - | |
offers[]slices[]segments[]departure | object | Yes | - | |
offers[]slices[]segments[]departureiataCode | string | Yes | - | |
offers[]slices[]segments[]departurecityName | string | Yes | - | |
offers[]slices[]segments[]departureairportName | string | No | - | |
offers[]slices[]segments[]departuredepartingAt | string | Format: ISO 8601 | Yes | - |
offers[]slices[]segments[]departuretimeZone | string | No | - | |
offers[]slices[]segments[]departureterminal | string | No | - | |
offers[]slices[]segments[]arrival | object | Yes | - | |
offers[]slices[]segments[]arrivaliataCode | string | Yes | - | |
offers[]slices[]segments[]arrivalcityName | string | Yes | - | |
offers[]slices[]segments[]arrivalairportName | string | No | - | |
offers[]slices[]segments[]arrivalarrivingAt | string | Format: ISO 8601 | Yes | - |
offers[]slices[]segments[]arrivaltimeZone | string | No | - | |
offers[]slices[]segments[]arrivalterminal | string | No | - | |
offers[]slices[]segments[]airline | object | Yes | - | |
offers[]slices[]segments[]airlineoperatingCarrier | object | Yes | - | |
offers[]slices[]segments[]airlineoperatingCarriername | string | Yes | - | |
offers[]slices[]segments[]airlineoperatingCarrieriataCode | string | Yes | - | |
offers[]slices[]segments[]airlineoperatingCarrierlogoURL | string | Nullable | - | |
offers[]slices[]segments[]airlineoperatingCarrierconditionsOfCarriage | string | No | - | |
offers[]slices[]segments[]airlinemarketingCarrier | object | Yes | - | |
offers[]slices[]segments[]airlinemarketingCarriername | string | Yes | - | |
offers[]slices[]segments[]airlinemarketingCarrieriataCode | string | Yes | - | |
offers[]slices[]segments[]airlinemarketingCarrierlogoURL | string | Nullable | - | |
offers[]slices[]segments[]airlinemarketingCarrierconditionsOfCarriage | string | No | - | |
offers[]slices[]segments[]flightNumber | string | Yes | - | |
offers[]slices[]segments[]durationMinutes | number | Yes | - | |
offers[]slices[]segments[]passengers | array | Yes | - | |
offers[]slices[]segments[]passengers[]amenities | object | Yes | - | |
offers[]slices[]segments[]passengers[]amenitieswifi | object | Yes | - | |
offers[]slices[]segments[]passengers[]amenitieswificost | enum | freefree or paidpaid | Nullable | - |
offers[]slices[]segments[]passengers[]amenitieswifiavailable | boolean | Yes | - | |
offers[]slices[]segments[]passengers[]amenitiesseat | object | Yes | - | |
offers[]slices[]segments[]passengers[]amenitiesseatpitch | enum | "number"n/a | Yes | - |
offers[]slices[]segments[]passengers[]amenitiesseatlegroom | enum | lessmorestandardn/a | Yes | - |
offers[]slices[]segments[]passengers[]amenitiesseattype | enum | standardskycouchreclinerangle_flatfull_flatfull_flat_podprivate_suite | Nullable | - |
offers[]slices[]segments[]passengers[]amenitiespower | boolean | Yes | - | |
offers[]slices[]segments[]passengers[]baggages | array | Yes | - | |
offers[]slices[]segments[]passengers[]baggages[]type | enum | checkedcarry_on | Yes | - |
offers[]slices[]segments[]passengers[]baggages[]quantity | number | Yes | - | |
offers[]slices[]segments[]passengers[]baggages[]maxKg | string | No | - | |
offers[]CO2EmissionsKg | number | Nullable | - | |
offers[]holdId | string | Nullable | - | |
offers[]originalCurrency | enum | EURUSDCNY | Yes | - |
offers[]currency | enum | EURUSDCNY | Yes | - |
Operational Notes
- 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[].
Example
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"}'Request Body - Example Value
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"
}Responses
| Code | Description |
|---|---|
200 | Flight offers retrieved successfully. |
400 | Bad request – invalid payload. |
401 | Unauthorized – invalid or missing credentials. |
403 | Forbidden – invalid credentials. |
500 | Internal server error |
200 Response Body
Media type: 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"
}
]
}