FX-Port API
FlightsFlight Search

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

FieldTypeMeaning
direct / nonstopbooleanNon-stop offers only
refundablebooleanPrefer refundable fares — see the caveat below; always confirm on the offer itself
checked_bagsbooleanOffers including checked baggage
included_airlinesstring[]Restrict results to these IATA carrier codes
excluded_airlinesstring[]Remove these IATA carrier codes from the results
preferred_airlinesstring[]Alias of included_airlines — see the note below
flexiblebooleanRequest 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.

On this page