Skip to content
FX-Port/Docs
GuidesAPI referenceChangelog
Get API keys
  • Overview
  • Error object

Search and price

  • Search flightsPOST
  • Flexible datesPOST
  • Price an offerPOST
  • Airport autocompleteGET
  • Most searched airportsGET

Book, pay and cancel

  • Book an offerPOST
  • Quote a held orderPOST
  • Pay a held orderPOST
  • Cancel a held orderPOST

After booking

  • Get a bookingPOST
  • Ticket PDFPOST
  • Ticket numberPOST
  • Quote a refundPOST
  • Confirm a cancellationPOST

ACD documents

  • Get the document statePOST
  • Upload passportsPOST

Objects

  • Flight offer
  • Flight booking

Flights ยท Search and price

Search flexible dates

Get a price calendar instead of offers: the cheapest fare of each day from three days before to three days after your travel dates.

POST/api/v1/flights/flexible_search

Requires an API key with Read permission; a Read+Write key works too.

The body is the one of get_flights; flexible and flexible_only are set for you. A one-way search returns 7 dates, a round trip or an open-jaw up to 49 date pairs (7 by 7). Each supplier entry has flexPrices.matrix[] and no results; summary.totalOffers is 0 and flexibleOnly is true. An entry has no offer id: to book a date, search for that exact date, then price and book as usual. The price of the matrix is an indication.

Only suppliers with the flexible-dates capability are called: today Amadeus Algeria (amadeus_aqc_dz_1, routes that touch Algeria). Duffel is skipped, and supplier_id: "duffel_1" is a 400 invalid_supplier_selection. A route nobody serves is 422 no_supplier_supports_flexible_search. To get the offers and the matrix together, send flexible: true to get_flights. Identical flexible searches that arrive at the same moment from the same agency, environment and currency are merged into one supplier fan-out; nothing is kept afterwards, and every caller still gets its own requestId and headers.

curl https://api.fx-port.com/api/v1/flights/flexible_search \
  -H "Authorization: Bearer fxp_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "origin": "ALG",
  "destination": "CDG",
  "departure_date": "2026-12-15",
  "cabin_class": "economy",
  "passengers": {
    "adults": 1
  }
}'
Response200
{
  "environment": "sandbox",
  "success": true,
  "requestId": "9c844468",
  "searchType": "ONE_WAY",
  "flexible": true,
  "processingTime": 4.092,
  "suppliers": [
    {
      "success": true,
      "searchId": "fs_4f72482f-0d24-4aba-882d-d4eb49f6d034",
      "supportHold": true,
      "supportVoid": true,
      "voidDeadline": "2026-11-01T23:00:00Z",
      "filtersApplied": {
        "flexible": true,
        "flexibleOnly": true
      },
      "warnings": [],
      "meta": {
        "supplierId": "amadeus_aqc_dz_1",
        "technologyType": "amadeus_aqc",
        "supplierName": "Amadeus Algeria",
        "processingTime": 4.029,
        "supplierCurrency": "DZD",
        "agencyCurrency": "DZD"
      },
      "flexPrices": {
        "supplierCurrency": "DZD",
        "agencyCurrency": "DZD",
        "matrix": [
          {
            "departure": "2026-12-12",
            "status": "available",
            "finalPrice": 26925.47,
            "basePrice": 18360,
            "taxesAndFees": 8538.57,
            "agencyCommission": 26.9,
            "flight": {
              "carrierCode": "IB",
              "flightNumber": "IB1378",
              "operatingCarrier": "IB",
              "validatingAirline": "IB",
              "duration": "PT9H45M",
              "stops": 1,
              "departureTime": "14:05",
              "arrivalTime": "23:50",
              "departureAirport": "ALG",
              "arrivalAirport": "CDG",
              "cabinClass": "ECONOMY",
              "brandedFare": null,
              "brandedFareLabel": null,
              "includedCheckedBags": {
                "quantity": 1
              }
            },
            "b2bPrice": 26898.57,
            "agencyCurrency": "DZD"
          },
          {
            "departure": "2026-12-13",
            "status": "available",
            "finalPrice": 29638.41,
            "basePrice": 11810,
            "taxesAndFees": 17798.8,
            "agencyCommission": 29.61,
            "flight": {
              "carrierCode": "AZ",
              "flightNumber": "AZ801",
              "operatingCarrier": "AZ",
              "validatingAirline": "AZ",
              "duration": "PT5H10M",
              "stops": 1,
              "departureTime": "12:15",
              "arrivalTime": "17:25",
              "departureAirport": "ALG",
              "arrivalAirport": "CDG",
              "cabinClass": "ECONOMY",
              "brandedFare": null,
              "brandedFareLabel": null,
              "includedCheckedBags": {
                "quantity": 1
              }
            },
            "b2bPrice": 29608.8,
            "agencyCurrency": "DZD"
          }
        ]
      }
    }
  ],
  "flexibleOnly": true,
  "summary": {
    "totalSuppliers": 1,
    "successfulSuppliers": 1,
    "failedSuppliers": 0,
    "totalOffers": 0
  }
}

Request

Body

Required, JSON.

originstring

Departure IATA code: three ASCII letters, an airport (ALG) or a city (PAR). Lower case is read as upper case. Several airports: "ALG,ORN" or ["ALG","ORN"], up to five.

destinationstring

Arrival IATA code. Must differ from origin. Several airports are written like for origin.

departure_datestring

YYYY-MM-DD, a real date from yesterday up to 365 days ahead (date_too_far beyond). return_date and every segment follow the same limits.

return_datestring

Makes the search a round trip. On or after departure_date.

segmentsarray of object

1 to 6 flights instead of origin, destination and departure_date: open-jaw and multi-city.

At most 6 items.

ShowHide 6 attributes
originstringrequired

Departure IATA code (three letters). A segment takes one code, not a list.

destinationstringrequired

Arrival IATA code. Must differ from origin.

departure_datestringrequired

Local departure date, YYYY-MM-DD, up to 365 days ahead. The dates must not go backwards.

datestringdeprecated

Legacy name, still accepted. Use departure_date instead.

The previous spelling of departure_date: Local departure date, YYYY-MM-DD, up to 365 days ahead.

departureDatestringdeprecated

Legacy name, still accepted. Use departure_date instead.

The previous spelling of departure_date: Local departure date, YYYY-MM-DD, up to 365 days ahead.

departurestringdeprecated

Legacy name, still accepted. Use departure_date instead.

The previous spelling of departure_date: Local departure date, YYYY-MM-DD, up to 365 days ahead.

urlstring

A path-style search used by FX-Port's own site, for example flights/ALG-CDG/2026-12-15/economy/1adults. It wins over every route field. Prefer the fields above.

At most 512 characters.

passengersobject

How many travelers of each type. Every field is optional. At most 9 seated passengers (adults, seniors, young adults, children and seated infants together), and not more lap or seated infants than adults and seniors. Counts and ages are JSON integers: numeric text and integral floats ("2", 2.0) are read with a coerced_value warning, an empty text or null means not sent, and words, fractions, booleans, negatives and counts above 99 are refused.

ShowHide 18 attributes
adultsinteger

Adults (12 or older). The default is one adult when nothing is sent.

Between 0 and 99.

seniorsinteger

Seniors.

Between 0 and 99.

young_adultsinteger

Young adults (12 to 17).

Between 0 and 99.

childreninteger

Children (2 to 11). Without child_ages every child is searched at age 11.

Between 0 and 99.

seated_infantsinteger

Infants under 2 with their own seat.

Between 0 and 99.

infantsinteger

Lap infants under 2: no seat, at most as many as adults and seniors.

Between 0 and 99.

child_agesarray of integer

The age of each child. The ages win over the counts: a disagreement is adjusted and reported in a coerced_value warning. A text list ("7,9") or one bare number is read as a list, also with a warning.

young_adult_agesarray of integer

The age of each young adult.

seated_infant_agesarray of integer

The age of each seated infant.

infant_agesarray of integer

The age of each lap infant. Without it every lap infant is searched at age 0, with no warning.

youngintegerdeprecated

Legacy name, still accepted. Use young_adults instead.

The previous spelling of young_adults: Young adults (12 to 17).

youngAdultsintegerdeprecated

Legacy name, still accepted. Use young_adults instead.

The previous spelling of young_adults: Young adults (12 to 17).

toddlersintegerdeprecated

Legacy name, still accepted. Use seated_infants instead.

The previous spelling of seated_infants: Infants under 2 with their own seat.

seatedInfantsintegerdeprecated

Legacy name, still accepted. Use seated_infants instead.

The previous spelling of seated_infants: Infants under 2 with their own seat.

childAgesarraydeprecated

Legacy name, still accepted. Use child_ages instead.

The previous spelling of child_ages: The age of each child.

youngAdultAgesarraydeprecated

Legacy name, still accepted. Use young_adult_ages instead.

The previous spelling of young_adult_ages: The age of each young adult.

seatedInfantAgesarraydeprecated

Legacy name, still accepted. Use seated_infant_ages instead.

The previous spelling of seated_infant_ages: The age of each seated infant.

infantAgesarraydeprecated

Legacy name, still accepted. Use infant_ages instead.

The previous spelling of infant_ages: The age of each lap infant.

cabin_classstring

The cabin. Case, spaces, dashes and underscores do not matter (Premium Economy is premium_economy); premium, economy_class, business_class, first_class and premium_economy_class are read as their cabin with a coerced_value warning, and an empty text means the default. Any other value (coach, Y) is 400 invalid_cabin_class. Default economy.

One of economy, premium_economy, business, first, any. Default economy.

nonstopboolean

true returns non-stop offers only.

refundableboolean

true asks the supplier for refundable fares. A hint, not a guarantee.

checked_bagsboolean

true asks for fares with a checked bag included. Ignored by Duffel.

max_pricenumber

A price ceiling. Not enforced in the sandbox. 0, an empty text and null mean no ceiling: the field is ignored (0 and an empty text add a coerced_value warning). Numeric text is read as a number with a warning; a negative or non-numeric value is 400 invalid_field_type.

included_airlinesobject

Up to 20 airline codes: only these carriers.

excluded_airlinesobject

Up to 20 airline codes to remove.

preferred_airlinesobject

Behaves exactly like included_airlines: a strict allow-list, not a ranking.

flexibleboolean

Also returns the date matrix (flexPrices) from the suppliers that support it.

flexible_onlyboolean

The matrix without offers. POST /flights/flexible_search sends it for you.

from_ccstring

ISO country code of the origin: exactly two letters. Used to choose suppliers.

to_ccstring

ISO country code of the destination: exactly two letters. Used to choose suppliers.

countriesarray of string

Up to 10 country codes of the route, to override the ones FX-Port infers.

At most 10 items.

filtersobject

The airline lists in their older nested form. Only the three airline lists are read from it; any other key is ignored. Prefer the top-level fields.

ShowHide 19 attributes
included_airlinesobject

Up to 20 airline codes: only these carriers.

excluded_airlinesobject

Up to 20 airline codes to remove.

preferred_airlinesobject

Behaves exactly like included_airlines: a strict allow-list, not a ranking.

airlineIncludeobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

airline_includeobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

includeAirlinesobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

include_airlinesobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

includedAirlinesobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

include_airlineobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

included_airlineobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

airlineExcludeobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

airline_excludeobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

excludeAirlinesobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

exclude_airlinesobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

excludedAirlinesobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

exclude_airlineobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

excluded_airlineobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

airlinesobjectdeprecated

Legacy name, still accepted. Use preferred_airlines instead.

The previous spelling of preferred_airlines: Behaves exactly like included_airlines: a strict allow-list, not a ranking.

preferredAirlinesobjectdeprecated

Legacy name, still accepted. Use preferred_airlines instead.

The previous spelling of preferred_airlines: Behaves exactly like included_airlines: a strict allow-list, not a ranking.

supplier_idstring

Restrict the search to one supplier id (a comma separated list is accepted). Strict: an unknown or disabled id is 400 invalid_supplier_selection.

supplier_idsarray of string

Restrict the search to this set. Strict, up to 10.

At most 10 items.

preferred_suppliersarray of string

A hint: ids that are not usable are ignored and the automatic selection applies.

max_suppliersinteger

Keep only the first N selected suppliers, in priority order. "3" and 3.0 are read as 3 with a coerced_value warning; an empty text means no limit.

loyalty_program_accountsarray of object

Up to 10 frequent-flyer accounts.

At most 10 items.

ShowHide 19 attributes
airline_iata_codestringrequired

IATA code of the airline of the programme.

account_numberstringrequired

The frequent-flyer number.

first_namestring

Given name of the member, matched with the passenger at booking.

last_namestring

Family name of the member.

airlineIataCodestringdeprecated

Legacy name, still accepted. Use airline_iata_code instead.

The previous spelling of airline_iata_code: IATA code of the airline of the programme.

airline_codestringdeprecated

Legacy name, still accepted. Use airline_iata_code instead.

The previous spelling of airline_iata_code: IATA code of the airline of the programme.

airlineCodestringdeprecated

Legacy name, still accepted. Use airline_iata_code instead.

The previous spelling of airline_iata_code: IATA code of the airline of the programme.

programOwnerstringdeprecated

Legacy name, still accepted. Use airline_iata_code instead.

The previous spelling of airline_iata_code: IATA code of the airline of the programme.

program_ownerstringdeprecated

Legacy name, still accepted. Use airline_iata_code instead.

The previous spelling of airline_iata_code: IATA code of the airline of the programme.

accountNumberstringdeprecated

Legacy name, still accepted. Use account_number instead.

The previous spelling of account_number: The frequent-flyer number.

membershipNumberstringdeprecated

Legacy name, still accepted. Use account_number instead.

The previous spelling of account_number: The frequent-flyer number.

membership_numberstringdeprecated

Legacy name, still accepted. Use account_number instead.

The previous spelling of account_number: The frequent-flyer number.

firstNamestringdeprecated

Legacy name, still accepted. Use first_name instead.

The previous spelling of first_name: Given name of the member, matched with the passenger at booking.

givenNamestringdeprecated

Legacy name, still accepted. Use first_name instead.

The previous spelling of first_name: Given name of the member, matched with the passenger at booking.

given_namestringdeprecated

Legacy name, still accepted. Use first_name instead.

The previous spelling of first_name: Given name of the member, matched with the passenger at booking.

lastNamestringdeprecated

Legacy name, still accepted. Use last_name instead.

The previous spelling of last_name: Family name of the member.

familyNamestringdeprecated

Legacy name, still accepted. Use last_name instead.

The previous spelling of last_name: Family name of the member.

family_namestringdeprecated

Legacy name, still accepted. Use last_name instead.

The previous spelling of last_name: Family name of the member.

surnamestringdeprecated

Legacy name, still accepted. Use last_name instead.

The previous spelling of last_name: Family name of the member.

acd_exempt_company_idstring

For agencies that settle in DZD and have an ACD-exempt company: its id, to price the fares without ACD.

agent_idstring

Your own id of the agent who searches; stored with the search and the booking.

agency_idstring

Not needed: the agency of a call is always the one of your API key. The field is accepted so that older clients keep working, and it is ignored.

departureDatestringdeprecated

Legacy name, still accepted. Use departure_date instead.

The previous spelling of departure_date: YYYY-MM-DD, a real date from yesterday up to 365 days ahead (date_too_far beyond).

returnDatestringdeprecated

Legacy name, still accepted. Use return_date instead.

The previous spelling of return_date: Makes the search a round trip.

cabinClassstringdeprecated

Legacy name, still accepted. Use cabin_class instead.

The previous spelling of cabin_class: The cabin.

travelersobjectdeprecated

Legacy name, still accepted. Use passengers instead.

The previous spelling of passengers: passengers.

directbooleandeprecated

Legacy name, still accepted. Use nonstop instead.

The previous spelling of nonstop: true returns non-stop offers only.

checkedBagsbooleandeprecated

Legacy name, still accepted. Use checked_bags instead.

The previous spelling of checked_bags: true asks for fares with a checked bag included.

maxPricenumberdeprecated

Legacy name, still accepted. Use max_price instead.

The previous spelling of max_price: A price ceiling.

flexibleOnlybooleandeprecated

Legacy name, still accepted. Use flexible_only instead.

The previous spelling of flexible_only: The matrix without offers.

fromCcstringdeprecated

Legacy name, still accepted. Use from_cc instead.

The previous spelling of from_cc: ISO country code of the origin: exactly two letters.

toCcstringdeprecated

Legacy name, still accepted. Use to_cc instead.

The previous spelling of to_cc: ISO country code of the destination: exactly two letters.

supplierIdstringdeprecated

Legacy name, still accepted. Use supplier_id instead.

The previous spelling of supplier_id: Restrict the search to one supplier id (a comma separated list is accepted).

supplierIdsarraydeprecated

Legacy name, still accepted. Use supplier_ids instead.

The previous spelling of supplier_ids: Restrict the search to this set.

preferredSuppliersarraydeprecated

Legacy name, still accepted. Use preferred_suppliers instead.

The previous spelling of preferred_suppliers: A hint: ids that are not usable are ignored and the automatic selection applies.

maxSuppliersintegerdeprecated

Legacy name, still accepted. Use max_suppliers instead.

The previous spelling of max_suppliers: Keep only the first N selected suppliers, in priority order.

airlineIncludeobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

airline_includeobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

includeAirlinesobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

include_airlinesobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

includedAirlinesobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

include_airlineobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

included_airlineobjectdeprecated

Legacy name, still accepted. Use included_airlines instead.

The previous spelling of included_airlines: Up to 20 airline codes: only these carriers.

airlineExcludeobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

airline_excludeobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

excludeAirlinesobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

exclude_airlinesobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

excludedAirlinesobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

exclude_airlineobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

excluded_airlineobjectdeprecated

Legacy name, still accepted. Use excluded_airlines instead.

The previous spelling of excluded_airlines: Up to 20 airline codes to remove.

airlinesobjectdeprecated

Legacy name, still accepted. Use preferred_airlines instead.

The previous spelling of preferred_airlines: Behaves exactly like included_airlines: a strict allow-list, not a ranking.

preferredAirlinesobjectdeprecated

Legacy name, still accepted. Use preferred_airlines instead.

The previous spelling of preferred_airlines: Behaves exactly like included_airlines: a strict allow-list, not a ranking.

agentIdstringdeprecated

Legacy name, still accepted. Use agent_id instead.

The previous spelling of agent_id: Your own id of the agent who searches; stored with the search and the booking.

acdExemptCompanyIdstringdeprecated

Legacy name, still accepted. Use acd_exempt_company_id instead.

The previous spelling of acd_exempt_company_id: For agencies that settle in DZD and have an ACD-exempt company: its id, to price the fares without ACD.

loyaltyProgramAccountsarraydeprecated

Legacy name, still accepted. Use loyalty_program_accounts instead.

The previous spelling of loyalty_program_accounts: Up to 10 frequent-flyer accounts.

agencyIdstringdeprecated

Legacy name, still accepted. Use agency_id instead.

The previous spelling of agency_id: Not needed: the agency of a call is always the one of your API key.

Response

200The date matrix of each flexible-capable supplier. Check that flexPrices is present before you read it; entries with status: no_flights_available are expected.

environmentstring

The environment of the key that made the call: sandbox for fxp_test_ keys, live for fxp_live_ keys. Present in every JSON body.

One of sandbox, live.

request_idstring

The id of the request, also in the X-Request-Id header.

warningsarray of object

Present only when the request used a previous spelling of a field or something the endpoint ignored.

ShowHide 5 attributes
codestring

What the warning is about.

One of deprecated_field, ignored_field, coerced_value, deprecated_value, deprecated_endpoint.

fieldstring

The request field the warning is about.

replacementstring

The name to use instead, for deprecated_* warnings.

messagestring

A sentence that says what happened and what to do.

documentation_urlstring

Where the naming rules are explained.

successboolean

true on every 200, even if some suppliers failed: read suppliers[n].success and failures.

requestIdstringdeprecated

Legacy name, still accepted. Use request_id instead.

The id of this search, 8 characters, for support.

searchTypestringdeprecated

Legacy name, still accepted. Use search_type instead.

The type of the search, derived from your route.

One of ONE_WAY, ROUND_TRIP, OPEN_JAW, MULTI_CITY.

search_typestring

The type of the search, derived from your route. The snake_case twin of searchType, with the same value: use this name.

One of ONE_WAY, ROUND_TRIP, OPEN_JAW, MULTI_CITY.

flexibleboolean

Whether the date matrix was requested.

flexibleOnlyboolean

Only present (and true) for a flexible-only search.

processingTimenumberdeprecated

Legacy name, still accepted. Use processing_time instead.

Seconds spent by the whole search.

processing_timenumber

Seconds spent by the whole search. The snake_case twin of processingTime, with the same value: use this name.

suppliersarray of object

One entry for each supplier that answered.

ShowHide 17 attributes
successboolean

Whether this supplier returned usable results.

searchIdstringdeprecated

Legacy name, still accepted. Use search_id instead.

Save this. fs_<uuid> (Amadeus Algeria) or fs_dfx_<uuid> (Duffel). Send it as search_id to price_flight and book_flight. Valid for 24 hours, but a supplier withdraws offers earlier.

search_idstring

Save this. fs_<uuid> (Amadeus Algeria) or fs_dfx_<uuid> (Duffel). Send it as search_id to price_flight and book_flight. Valid for 24 hours, but a supplier withdraws offers earlier. The snake_case twin of searchId, with the same value: use this name.

supportHoldbooleandeprecated

Legacy name, still accepted. Use support_hold instead.

What the supplier can do in general: hold. Read it again on the priced offer.

support_holdboolean

What the supplier can do in general: hold. Read it again on the priced offer. The snake_case twin of supportHold, with the same value: use this name.

supportVoidbooleandeprecated

Legacy name, still accepted. Use support_void instead.

What the supplier can do in general: same-day void.

support_voidboolean

What the supplier can do in general: same-day void. The snake_case twin of supportVoid, with the same value: use this name.

voidDeadlinestringnullabledeprecated

Legacy name, still accepted. Use void_deadline instead.

ISO 8601 UTC end of the same-day void window, null when the supplier cannot void.

void_deadlinestringnullable

ISO 8601 UTC end of the same-day void window, null when the supplier cannot void. The snake_case twin of voidDeadline, with the same value: use this name.

filtersAppliedobjectdeprecated

Legacy name, still accepted. Use filters_applied instead.

The filters you asked for, echoed.

filters_appliedobject

The filters you asked for, echoed. The snake_case twin of filtersApplied, with the same value: use this name.

warningsarray of object

Notes of the supplier.

metaobject

Who answered and how fast.

ShowHide 9 attributes
supplierIdstringdeprecated

Legacy name, still accepted. Use supplier_id instead.

Id of the supplier.

supplier_idstring

Id of the supplier. The snake_case twin of supplierId, with the same value: use this name.

technologyTypestring

The technology of the supplier: amadeus_aqc or duffel.

supplierNamestringdeprecated

Legacy name, still accepted. Use supplier_name instead.

Name of the supplier.

supplier_namestring

Name of the supplier. The snake_case twin of supplierName, with the same value: use this name.

processingTimenumberdeprecated

Legacy name, still accepted. Use processing_time instead.

Seconds this supplier took.

processing_timenumber

Seconds this supplier took. The snake_case twin of processingTime, with the same value: use this name.

supplierCurrencystring

Currency in which the supplier prices.

agencyCurrencystring

Currency of your agency.

resultsobject

The offers of one supplier.

ShowHide 4 attributes
totalOffersinteger

Number of offers of this result set. Always equals the length of offers: there is no pagination.

supplierCurrencystring

Currency in which the supplier prices.

agencyCurrencystring

Currency of your agency.

offersarray of FlightOffer

The offers, in the order the supplier ranks them.

See the Flight offer object

exchangeRatenumberdeprecated

Legacy name, still accepted. Use exchange_rate instead.

Only when the supplier's currency is not your agency's (Duffel: USD to DZD, 250.0). Every amount is already converted.

exchange_ratenumber

Only when the supplier's currency is not your agency's (Duffel: USD to DZD, 250.0). Every amount is already converted. The snake_case twin of exchangeRate, with the same value: use this name.

flexPricesobject

The date matrix of a flexible search: one cheapest fare for each candidate date. An entry has no offer id: to book a date, search for it.

ShowHide 3 attributes
supplierCurrencystring

Currency in which the supplier prices.

agencyCurrencystring

Currency of the prices of matrix.

matrixarray of object

One entry for each date (one-way: 7 dates) or date pair (round trip, open-jaw: up to 49).

ShowHide 15 attributes
departurestring

Candidate departure date, YYYY-MM-DD.

returnstring

Candidate return date. Only for a round trip or an open-jaw.

statusstring

available when the supplier has a fare for this date or pair.

One of available, no_flights_available.

finalPricenumbernullabledeprecated

Legacy name, still accepted. Use final_price instead.

What the traveler pays, in agencyCurrency.

final_pricenumbernullable

What the traveler pays, in agencyCurrency. The snake_case twin of finalPrice, with the same value: use this name.

basePricenumbernullabledeprecated

Legacy name, still accepted. Use base_price instead.

The airline's base fare.

base_pricenumbernullable

The airline's base fare. The snake_case twin of basePrice, with the same value: use this name.

taxesAndFeesnumbernullabledeprecated

Legacy name, still accepted. Use taxes_and_fees instead.

Taxes and fees.

taxes_and_feesnumbernullable

Taxes and fees. The snake_case twin of taxesAndFees, with the same value: use this name.

agencyCommissionnumbernullabledeprecated

Legacy name, still accepted. Use agency_commission instead.

Your commission.

agency_commissionnumbernullable

Your commission. The snake_case twin of agencyCommission, with the same value: use this name.

b2bPricenumbernullabledeprecated

Legacy name, still accepted. Use b2b_price instead.

The amount debited from your balance.

b2b_pricenumbernullable

The amount debited from your balance. The snake_case twin of b2bPrice, with the same value: use this name.

agencyCurrencystring

Currency of the prices of the entry.

flightobject

The cheapest flight behind the price of a date.

ShowHide 14 attributes
carrierCodestring

IATA code of the marketing airline.

flightNumberstring

Flight number with the carrier code (IB1378), unlike the offers.

operatingCarrierstring

IATA code of the operating airline.

validatingAirlinestring

IATA code of the validating airline, as a text (a list of objects in offers).

durationstring

ISO 8601 duration.

stopsinteger

Number of stops.

departureTimestring

HH:MM.

arrivalTimestring

HH:MM.

departureAirportstring

IATA code.

arrivalAirportstring

IATA code.

cabinClassstring

Cabin of the fare.

brandedFarestringnullable

Fare family code.

brandedFareLabelstringnullable

Display label of the fare family.

includedCheckedBagsobject

Checked baggage included.

ShowHide 1 attribute
quantityinteger

Number of checked bags included.

summaryobject

Counters of the search.

ShowHide 4 attributes
totalSuppliersinteger

The suppliers that answered (the same as successfulSuppliers). In the stream: the suppliers that were called.

successfulSuppliersinteger

Suppliers that returned results.

failedSuppliersinteger

Suppliers listed in failures.

totalOffersinteger

Offers of all the suppliers together.

failuresarray of object

Only when a supplier failed.

ShowHide 4 attributes
supplierIdstringdeprecated

Legacy name, still accepted. Use supplier_id instead.

The supplier that failed.

supplier_idstring

The supplier that failed. The snake_case twin of supplierId, with the same value: use this name.

errorstring

A fixed sentence about the cause, never the supplier's own text.

causestring

Why the supplier failed: a stable code to branch on. supplier_temporarily_unavailable: the supplier is skipped for a short while after repeated failures. supplier_busy: FX-Port's capacity towards the supplier is full for a moment, the supplier was not called, retry in a few seconds. service_overloaded: FX-Port was too busy to prepare the results of the supplier, retry in a few seconds.

One of supplier_timeout, supplier_api_error, supplier_auth_error, supplier_error, supplier_temporarily_unavailable, supplier_busy, service_overloaded.

Errors

StatusCodeExample message
400missing_search_paramsProvide either 'url' or structured params (origin, destination, departure_date, cabin_class).
400invalid_airport_code`origin` must be a 3-letter IATA code such as ALG.
400date_in_past`departure_date` is in the past; use today or a later date.
400invalid_cabin_class`cabin_class` must be one of: economy, premium_economy, business, first, any.
400invalid_supplier_selectionOne or more requested suppliers cannot be used for this flight search.
400traveler_rule_violationTotal seated passengers cannot exceed 9
403acd_exemption_invalidThe selected ACD exempt company is not linked to this agency.
413request_too_largeThe request body carries too many values.
422no_supplier_supports_flexible_searchNo flight supplier supports flexible-date search for this route. Flexible search is offered on routes that touch Algeria; use get_flights for fixed dates.
503all_suppliers_failedNo supplier returned results. See supplierErrors for details.
503supplier_busyThe supplier is temporarily at capacity; retry after the time given in the Retry-After header.
503service_overloadedThe service is temporarily overloaded; retry after the time given in the Retry-After header.

The shape of the error body depends on the endpoint. See Errors for every shape and code.

Related guides

  • Flexible-date search
  • Search flights
PreviousSearch flightsNext Price a flight offer

ยฉ 2026 FX-Port

TermsPrivacy[email protected]