Hermeseus

Flight search API

The flight search API returns the cheapest itinerary per flight group for a route, dates, and passenger mix.

POST/Air/AirLowFareSearch

Access requires the permission air_low_fare_search

Send a POST request with one OriginDestinationInformations entry per leg. Use one entry for one-way, two for a round trip, and more for multi-city. The response is a set of priced itineraries, each with a FareSourceCode you carry into revalidate and book.

Want results as they arrive? Use the streaming endpoint AirLowFareSearchIncremental. It takes the same request and pushes itineraries over server-sent events.

Path parameters

None.

Query parameters

None.

Body parameters

NameTypeRequiredDefaultDescription
SessionIdstringYes-Your session id.
AdultCountintegerYes-Adult passengers. Minimum 1.
ChildCountintegerYes-Child passengers. Minimum 0.
InfantCountintegerYes-Infant passengers, no seat. Minimum 0.
PricingSourceTypestringYes-Pricing scope. Use All.
RequestOptionstringYes-Result-set option. Use All.
NumberOfResultsintegerNo100Basket size. 0 or omitted means 100. Any other value scales the same mix. Maximum 5000.
ProviderstringNo-Optional inventory-source hint. Omit it to let the gateway aggregate every source and pick the best. An unknown value falls back to the configured default.
TravelPreference object, optional
NameTypeRequiredDefaultDescription
CabinTypeintegerNo1Cabin: 1 Economy, 2 Premium Economy, 3 Business, 4 Premium Business, 5 First, 6 Premium First.
MaxStopsQuantitystringNoAllCap on stops. Use All for any, or 0 for non-stop.
AirTripTypestringNoderivedOneWay or Return. Defaults from the number of legs.
VendorPreferenceCodesarray of stringNo-Restrict results to these airline codes, for example ["TK","EK"].
VendorExcludeCodesarray of stringNo-Exclude these airline codes.
OriginDestinationInformations array of object, required

One entry per leg. Minimum 1.

NameTypeRequiredDescription
OriginLocationCodestringYesDeparture IATA code, for example IST.
DestinationLocationCodestringYesArrival IATA code, for example DXB.
DepartureDateTimestringYesLocal departure date and time, for example 2026-10-12T00:00:00.
OriginTypestringNoPoint qualifier, airport or city.
DestinationTypestringNoPoint qualifier, airport or city.

Request

curl -X POST https://api.hermeseus.com/api/Air/AirLowFareSearch \
  -H "Content-Type: application/json" \
  -d '{
    "SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
    "AdultCount": 1,
    "ChildCount": 0,
    "InfantCount": 0,
    "PricingSourceType": "All",
    "RequestOption": "All",
    "TravelPreference": { "CabinType": 3, "AirTripType": "OneWay" },
    "OriginDestinationInformations": [
      {
        "OriginLocationCode": "IST",
        "DestinationLocationCode": "DXB",
        "DepartureDateTime": "2026-10-12T00:00:00"
      }
    ]
  }'
const res = await fetch("https://api.hermeseus.com/api/Air/AirLowFareSearch", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    SessionId: "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
    AdultCount: 1,
    ChildCount: 0,
    InfantCount: 0,
    PricingSourceType: "All",
    RequestOption: "All",
    TravelPreference: { CabinType: 3, AirTripType: "OneWay" },
    OriginDestinationInformations: [
      {
        OriginLocationCode: "IST",
        DestinationLocationCode: "DXB",
        DepartureDateTime: "2026-10-12T00:00:00"
      }
    ]
  })
});

const data = await res.json();
import requests

res = requests.post(
    "https://api.hermeseus.com/api/Air/AirLowFareSearch",
    json={
        "SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
        "AdultCount": 1,
        "ChildCount": 0,
        "InfantCount": 0,
        "PricingSourceType": "All",
        "RequestOption": "All",
        "TravelPreference": {"CabinType": 3, "AirTripType": "OneWay"},
        "OriginDestinationInformations": [
            {
                "OriginLocationCode": "IST",
                "DestinationLocationCode": "DXB",
                "DepartureDateTime": "2026-10-12T00:00:00",
            }
        ],
    },
)

data = res.json()

Response

Returns the search id and the priced itineraries.

FieldTypeDescription
Successbooleantrue on success.
SearchIdintegerId of this search. Reuse it with AirSearchData.
PricedItinerariesarray of objectThe results. See below.
Errorobjectnull on success.
PricedItineraries[] object
FieldTypeDescription
FareSourceCodestringOpaque fare id. Carry it into revalidate and book.
ValidatingAirlineCodestringAirline that validates the ticket, for example TK.
DirectionIndintegerJourney direction indicator.
IsPassportMandatorybooleanWhether passport details are required to book.
AirItineraryPricingInfoobjectFare totals and the per-passenger breakdown.
OriginDestinationOptionsarray of objectOne entry per leg, each holding its flight segments.
AirItineraryPricingInfo object
FieldTypeDescription
FareTypeintegerFare category code.
ItinTotalFareobjectBaseFare, TotalTax, TotalFare (numbers) and Currency (string). All amounts are USD.
PtcFareBreakdownarray of objectFare per passenger type.
OriginDestinationOptions[].FlightSegments[] object
FieldTypeDescription
DepartureAirportLocationCodestringDeparture IATA code.
ArrivalAirportLocationCodestringArrival IATA code.
DepartureDateTimestringLocal departure time.
ArrivalDateTimestringLocal arrival time.
MarketingAirlineCodestringMarketing airline code.
FlightNumberstringFlight number.
ResBookDesigCodestringBooking class letter.
BaggagestringBaggage allowance, for example 1PC.
CabinClassCodeintegerCabin of the segment, same enum as CabinType: 1 Economy through 6 Premium First.
SeatsRemainingintegerSeats left at this fare.
{
  "Success": true,
  "SearchId": 428713,
  "PricedItineraries": [
    {
      "FareSourceCode": "dHA6ODc0NTE6ZmwxMjM0OjMyNw==",
      "ValidatingAirlineCode": "TK",
      "DirectionInd": 1,
      "IsPassportMandatory": true,
      "AirItineraryPricingInfo": {
        "FareType": 1,
        "ItinTotalFare": {
          "BaseFare": 182.40,
          "TotalTax": 37.20,
          "TotalFare": 219.60,
          "Currency": "USD"
        },
        "PtcFareBreakdown": [
          {
            "PassengerType": 1,
            "PassengerQuantity": 1,
            "BaseFare": 182.40,
            "TotalTax": 37.20,
            "TotalFare": 219.60,
            "Currency": "USD"
          }
        ]
      },
      "OriginDestinationOptions": [
        {
          "JourneyDurationPerMinute": 270,
          "FlightSegments": [
            {
              "DepartureAirportLocationCode": "IST",
              "ArrivalAirportLocationCode": "DXB",
              "DepartureDateTime": "2026-10-12T08:25:00",
              "ArrivalDateTime": "2026-10-12T14:55:00",
              "MarketingAirlineCode": "TK",
              "FlightNumber": "764",
              "ResBookDesigCode": "C",
              "Baggage": "2PC",
              "CabinClassCode": 3,
              "SeatsRemaining": 7
            }
          ]
        }
      ]
    }
  ],
  "Error": null
}

Errors

CodeMeaningFix
Err0106001A required field is missing or invalid. The message names it.Fix the field named in the message.
Err0101001Missing or invalid session.Create a new session and retry.
Err0101006The office lacks the air_low_fare_search permission.Ask to enable it.

See the full list on the errors reference.

Next step. Take the FareSourceCode of the itinerary the traveller picks and revalidate it before you book.