Filter examples
Direct flights, refundable fares, checked bags, airline include/exclude, and flexible dates.
All filters are optional and can be combined when their semantics do not conflict.
Filter reference
| Field | Type | Meaning |
|---|---|---|
direct / nonstop | boolean | Non-stop offers only |
refundable | boolean | Prefer refundable fares — see the caveat below; always confirm on the offer itself |
checked_bags | boolean | Offers including checked baggage |
included_airlines | string[] | Restrict results to these IATA carrier codes |
excluded_airlines | string[] | Remove these IATA carrier codes from the results |
preferred_airlines | string[] | Alias of included_airlines — see the note below |
flexible | boolean | Request flexible-date matrix from capable suppliers while keeping regular offers |
Do not send included_airlines and excluded_airlines together for the same search. Choose a
whitelist or a blacklist. Amadeus rejects supplier requests that contain both.
preferred_airlines currently behaves exactly like included_airlines — it restricts
results to the listed carriers, it does not merely rank them higher. There is no separate
"ranking-only, non-exclusive" preference filter today. Use included_airlines for clarity;
preferred_airlines is accepted as a compatibility alias with identical behavior. Do not send
both with different carrier lists in the same request.
max_price is not currently enforced for every supplier. It is sent as a native filter to
Amadeus, but the Duffel integration does not yet apply it — a Duffel search with max_price set
can still return offers above that price. Treat max_price as best-effort and always check each
offer's own pricing.finalPrice client-side before relying on it as a hard cap.
Refundable only
{
"origin": "ALG",
"destination": "CDG",
"departure_date": "2026-09-15",
"cabin_class": "economy",
"passengers": { "adults": 1 },
"refundable": true
}refundable: true is a hint forwarded to each supplier, not a guaranteed post-filter on every
technology — a search can still return a mix of refundable and non-refundable offers. Always read
conditions.refundBeforeDeparture.allowed on each individual offer rather than assuming every
offer returned by this filter is refundable.
Checked baggage only
{
"origin": "ALG",
"destination": "CDG",
"departure_date": "2026-09-15",
"return_date": "2026-09-22",
"cabin_class": "economy",
"passengers": { "adults": 1 },
"checked_bags": true
}Response example
Every offer's travelerPricing[n].fareDetailsBySegment[m].includedCheckedBags.quantity is >= 1.
See Search response essentials for the full offer shape.
{
"id": "fx_offer_e12658c6",
"pricing": {
"supplierCurrency": "USD",
"agencyCurrency": "DZD",
"basePrice": 16325.0,
"taxesAndFees": 5210.8,
"agencyCommission": 21.54,
"finalPrice": 21557.34,
"b2bPrice": 21535.8
},
"travelerPricing": [
{
"fareDetailsBySegment": [
{ "includedCheckedBags": { "quantity": 1 } }
]
}
]
}Include airlines (allow-list)
{
"origin": "ALG",
"destination": "CDG",
"departure_date": "2026-09-15",
"cabin_class": "economy",
"passengers": { "adults": 1 },
"included_airlines": ["AF", "AH"]
}For Amadeus, FX-Port sends a native include filter. Duffel's offer request does not expose a native
carrier include field, so FX-Port filters returned offers while preserving the unified response.
Either way, every offer returned has validatingAirline[0].code equal to one of the listed codes.
Exclude airlines (block-list)
{
"origin": "ALG",
"destination": "CDG",
"departure_date": "2026-09-15",
"cabin_class": "economy",
"passengers": { "adults": 1 },
"excluded_airlines": ["IB"]
}None of the listed carrier codes appear as validatingAirline[0].code on any returned offer.
Flexible dates across all suppliers
{
"origin": "ALG",
"destination": "CDG",
"departure_date": "2026-09-15",
"return_date": "2026-09-22",
"cabin_class": "economy",
"passengers": { "adults": 1 },
"flexible": true
}Every compatible supplier still returns its regular offers under results; only suppliers that
support the flexible-date matrix additionally add a flexPrices key next to results on their
entry in suppliers[]. Always check for that key's presence rather than assuming it's there — see
Flexible search for the full matrix shape, and use the dedicated
POST /api/v1/flights/flexible_search endpoint when you want only flexible-capable suppliers
queried.