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.