Skip to main content

Flight Search Endpoint

Searches flight availability across every provider enabled for your partner account and returns one merged list of priced itineraries.

  • Endpoint: /api/v1/flights/search
  • Method: POST

Providers are queried concurrently. A provider that fails or times out is skipped silently rather than failing the whole search, so a response containing only Hitit results does not mean Fliggy and FlightRoute were not tried. Searches can take up to 120 seconds; set your client timeout accordingly.

Headers​

HeaderValueRequiredDescription
Partner-Access-TokenBase64 StringYesYour encrypted AES-256 time-sensitive token.
X-CurrencyCurrency CodeOptionalDisplay currency, e.g. THB, MMK, USD. Defaults to your partner currency, then THB.
Accept-LanguageLanguage CodeOptionale.g. en, th, my.
Content-Typeapplication/jsonYes
Acceptapplication/jsonYes

Payload Parameters​

ParameterTypeRequiredDescription
trip_typeStringYes1 (One Way), 2 (Round Trip), 3 (Multi City).
cabin_classStringYesSee the Cabin Class table below.
departure_city_codeStringConditional3-letter IATA city code (e.g. BKK). Required if departure_airport_code is not provided.
departure_airport_codeStringConditional3-letter IATA airport code. Required if departure_city_code is not provided.
arrival_city_codeStringConditional3-letter IATA city code (e.g. SIN). Required if arrival_airport_code is not provided.
arrival_airport_codeStringConditional3-letter IATA airport code. Required if arrival_city_code is not provided.
departure_dateStringYesDate format Y-m-d (e.g. 2026-10-01).
return_dateStringConditionalDate format Y-m-d. Required when trip_type is 2.
adultsIntegerOptionalMinimum 1. Default 1.
childrenIntegerOptionalMinimum 0. Default 0.
infantsIntegerOptionalMinimum 0. Default 0.
is_mm_nationalityBooleanOptionalSet true for Myanmar-national fares. Default false.

Cabin Class​

ValueDescription
AAll Cabin Classes
YEconomy Class
SPremium Economy Class
CBusiness Class
FCFirst Class and Business Class
YSEconomy and Premium Economy Class
YSCEconomy, Premium Economy and Business Class

Sample Payload​

{
"trip_type": "1",
"cabin_class": "A",
"departure_city_code": "BKK",
"arrival_city_code": "SIN",
"departure_date": "2026-10-01",
"return_date": null,
"adults": 1,
"children": 0,
"infants": 0,
"is_mm_nationality": false
}

Response Fields​

data is an array of itineraries ("solutions"). Each entry contains:

FieldTypeDescription
solutionIdStringUnique itinerary identifier. Pass this as solution_id to Enrich, Pricing, Ancillary and Seat Map.
providerStringFLIGGY, HITIT or FLIGHTROUTE. Derived from the solutionId prefix.
adultPriceFloatPer-adult total in display currency, fare + tax.
adultTaxFloatPer-adult tax portion, already included in adultPrice.
adultPrice_thb / adultTax_thbFloatSame values in THB (system currency).
childPrice, childTax, infantPrice, infantTaxFloatSame structure for child and infant, plus their _thb counterparts.
currencyStringDisplay currency of the price fields.
currency_code / currency_symbolStringRequested display currency.
solutionAttributeObjectProvider-specific fare attributes (cabin class, fare group, penalty rules).
journeyListArrayOne entry per direction — 1 for one-way, 2 for round trip.
segmentBaggageMappingListArrayBaggage allowance per segment (fully populated by Enrich).
segmentRefundChangeRuleMappingListArrayRefund/change rules per segment (fully populated by Enrich).

Journey object​

FieldTypeDescription
departureAirport / arrivalAirportStringIATA codes for the whole journey.
departureAirportName / arrivalAirportNameStringResolved airport names.
departureCity / arrivalCityStringIATA city codes.
departureCityName / arrivalCityNameStringResolved city names.
departureTime / arrivalTimeStringY-m-d H:i:s.
departureDateTimeStr / arrivalDateTimeStrStringPre-formatted, e.g. Thu, Oct 01 2026, 08:30:00.
transferCountIntegerNumber of stops. 0 = direct.
totalDurationIntegerTotal journey duration in minutes, including layovers.
displayTotalDurationStringPre-formatted duration, e.g. 4h 15m.
layoversArrayOne entry per connection. See below.
segmentListArrayIndividual flight legs.

Segment object​

FieldTypeDescription
departureAirport / arrivalAirportStringIATA airport codes.
departureAirportName / arrivalAirportNameStringResolved names.
departureCityName / arrivalCityNameStringResolved city names.
departureTime / arrivalTimeStringY-m-d H:i:s.
departureTimeOnly / arrivalTimeOnlyStringH:i.
departureTimeStr / arrivalTimeStrStringPre-formatted full date-time.
departureDateAmPm / arrivalDateAmPmStringAM or PM.
departureTerminal / arrivalTerminalStringTerminal codes, may be empty.
marketingAirline / operatingAirlineStringAirline IATA codes.
marketingAirlineName / operatingAirlineNameStringResolved airline names.
marketingAirlineLogo / operatingAirlineLogoStringLogo URLs.
marketingFlightNo / operatingFlightNoStringFlight numbers.
cabinClassStringProvider cabin code.
cabinClassNameStringResolved label, e.g. Economy Class.
flightDurationIntegerSegment duration in minutes.
displayDurationStringPre-formatted duration.
codeShareBooleanWhether the segment is a codeshare.

Layover object​

FieldTypeDescription
overlay_airportStringIATA code where the layover happens.
overlay_airport_nameStringAirport name.
display_overlay_airportStringe.g. Suvarnabhumi Airport (BKK).
arrival_time / next_departure_timeStringInbound arrival and onward departure.
durationStringe.g. 2h 30m.
duration_minutesIntegerLayover length in minutes.
is_overnightBooleanWhether the layover crosses a calendar day.
overnight_daysIntegerNumber of days crossed.
overnight_noteString|nullOvernight layover when applicable.
is_different_airportBooleanWhether the passenger changes airport.
transfer_noteString|nullTransferring at different airport when applicable.

Sample Response​

Truncated to one solution with one segment.

{
"result": 1,
"message": "success",
"data": [
{
"solutionId": "HITIT_9f2c1b7d4e8a3f6c0d5b2a91e7c48d63",
"provider": "HITIT",
"adultPrice": 8450.00,
"adultTax": 1250.00,
"adultPrice_thb": 8450.00,
"adultTax_thb": 1250.00,
"childPrice": 8450.00,
"childTax": 1250.00,
"infantPrice": 8450.00,
"infantTax": 1250.00,
"currency": "THB",
"currency_code": "THB",
"currency_symbol": "THB",
"solutionAttribute": {
"cabinClass": 1,
"fareGroupName": "ECOSAVER"
},
"journeyList": [
{
"transferCount": 0,
"departureAirport": "BKK",
"departureAirportName": "Suvarnabhumi Airport",
"departureCity": "BKK",
"departureCityName": "Bangkok",
"arrivalAirport": "SIN",
"arrivalAirportName": "Singapore Changi Airport",
"arrivalCity": "SIN",
"arrivalCityName": "Singapore",
"departureTime": "2026-10-01 08:30:00",
"arrivalTime": "2026-10-01 12:00:00",
"departureDateTimeStr": "Thu, Oct 01 2026, 08:30:00",
"arrivalDateTimeStr": "Thu, Oct 01 2026, 12:00:00",
"totalDuration": 150,
"displayTotalDuration": "2h 30m",
"layovers": [],
"segmentList": [
{
"departureAirport": "BKK",
"departureAirportName": "Suvarnabhumi Airport",
"departureCityName": "Bangkok",
"arrivalAirport": "SIN",
"arrivalAirportName": "Singapore Changi Airport",
"arrivalCityName": "Singapore",
"departureTime": "2026-10-01 08:30:00",
"arrivalTime": "2026-10-01 12:00:00",
"departureTimeOnly": "08:30",
"arrivalTimeOnly": "12:00",
"departureDateAmPm": "AM",
"arrivalDateAmPm": "PM",
"departureTerminal": "1",
"arrivalTerminal": "3",
"marketingAirline": "TG",
"marketingAirlineName": "Thai Airways",
"marketingAirlineLogo": "https://.../tg.png",
"operatingAirline": "TG",
"marketingFlightNo": "TG403",
"operatingFlightNo": "TG403",
"cabinClass": "Y",
"cabinClassName": "Economy Class",
"flightDuration": 150,
"displayDuration": "2h 30m",
"codeShare": false
}
]
}
],
"segmentBaggageMappingList": [],
"segmentRefundChangeRuleMappingList": []
}
]
}

Errors​

MessageCause
No flights found for the given search criteria.Every provider returned zero results.

Next Step​

Take the solutionId of the itinerary the customer picked and call Pricing — optionally via Enrich first if you want to show baggage allowance and fare rules before committing to a price.