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
| Header | Value | Required | Description |
|---|---|---|---|
Partner-Access-Token | Base64 String | Yes | Your encrypted AES-256 time-sensitive token. |
X-Currency | Currency Code | Optional | Display currency, e.g. THB, MMK, USD. Defaults to your partner currency, then THB. |
Accept-Language | Language Code | Optional | e.g. en, th, my. |
Content-Type | application/json | Yes | |
Accept | application/json | Yes |
Payload Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
trip_type | String | Yes | 1 (One Way), 2 (Round Trip), 3 (Multi City). |
cabin_class | String | Yes | See the Cabin Class table below. |
departure_city_code | String | Conditional | 3-letter IATA city code (e.g. BKK). Required if departure_airport_code is not provided. |
departure_airport_code | String | Conditional | 3-letter IATA airport code. Required if departure_city_code is not provided. |
arrival_city_code | String | Conditional | 3-letter IATA city code (e.g. SIN). Required if arrival_airport_code is not provided. |
arrival_airport_code | String | Conditional | 3-letter IATA airport code. Required if arrival_city_code is not provided. |
departure_date | String | Yes | Date format Y-m-d (e.g. 2026-10-01). |
return_date | String | Conditional | Date format Y-m-d. Required when trip_type is 2. |
adults | Integer | Optional | Minimum 1. Default 1. |
children | Integer | Optional | Minimum 0. Default 0. |
infants | Integer | Optional | Minimum 0. Default 0. |
is_mm_nationality | Boolean | Optional | Set true for Myanmar-national fares. Default false. |
Cabin Class
| Value | Description |
|---|---|
A | All Cabin Classes |
Y | Economy Class |
S | Premium Economy Class |
C | Business Class |
FC | First Class and Business Class |
YS | Economy and Premium Economy Class |
YSC | Economy, 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:
| Field | Type | Description |
|---|---|---|
solutionId | String | Unique itinerary identifier. Pass this as solution_id to Enrich, Pricing, Ancillary and Seat Map. |
provider | String | FLIGGY, HITIT or FLIGHTROUTE. Derived from the solutionId prefix. |
adultPrice | Float | Per-adult total in display currency, fare + tax. |
adultTax | Float | Per-adult tax portion, already included in adultPrice. |
adultPrice_thb / adultTax_thb | Float | Same values in THB (system currency). |
childPrice, childTax, infantPrice, infantTax | Float | Same structure for child and infant, plus their _thb counterparts. |
currency | String | Display currency of the price fields. |
currency_code / currency_symbol | String | Requested display currency. |
solutionAttribute | Object | Provider-specific fare attributes (cabin class, fare group, penalty rules). |
journeyList | Array | One entry per direction — 1 for one-way, 2 for round trip. |
segmentBaggageMappingList | Array | Baggage allowance per segment (fully populated by Enrich). |
segmentRefundChangeRuleMappingList | Array | Refund/change rules per segment (fully populated by Enrich). |
Journey object
| Field | Type | Description |
|---|---|---|
departureAirport / arrivalAirport | String | IATA codes for the whole journey. |
departureAirportName / arrivalAirportName | String | Resolved airport names. |
departureCity / arrivalCity | String | IATA city codes. |
departureCityName / arrivalCityName | String | Resolved city names. |
departureTime / arrivalTime | String | Y-m-d H:i:s. |
departureDateTimeStr / arrivalDateTimeStr | String | Pre-formatted, e.g. Thu, Oct 01 2026, 08:30:00. |
transferCount | Integer | Number of stops. 0 = direct. |
totalDuration | Integer | Total journey duration in minutes, including layovers. |
displayTotalDuration | String | Pre-formatted duration, e.g. 4h 15m. |
layovers | Array | One entry per connection. See below. |
segmentList | Array | Individual flight legs. |
Segment object
| Field | Type | Description |
|---|---|---|
departureAirport / arrivalAirport | String | IATA airport codes. |
departureAirportName / arrivalAirportName | String | Resolved names. |
departureCityName / arrivalCityName | String | Resolved city names. |
departureTime / arrivalTime | String | Y-m-d H:i:s. |
departureTimeOnly / arrivalTimeOnly | String | H:i. |
departureTimeStr / arrivalTimeStr | String | Pre-formatted full date-time. |
departureDateAmPm / arrivalDateAmPm | String | AM or PM. |
departureTerminal / arrivalTerminal | String | Terminal codes, may be empty. |
marketingAirline / operatingAirline | String | Airline IATA codes. |
marketingAirlineName / operatingAirlineName | String | Resolved airline names. |
marketingAirlineLogo / operatingAirlineLogo | String | Logo URLs. |
marketingFlightNo / operatingFlightNo | String | Flight numbers. |
cabinClass | String | Provider cabin code. |
cabinClassName | String | Resolved label, e.g. Economy Class. |
flightDuration | Integer | Segment duration in minutes. |
displayDuration | String | Pre-formatted duration. |
codeShare | Boolean | Whether the segment is a codeshare. |
Layover object
| Field | Type | Description |
|---|---|---|
overlay_airport | String | IATA code where the layover happens. |
overlay_airport_name | String | Airport name. |
display_overlay_airport | String | e.g. Suvarnabhumi Airport (BKK). |
arrival_time / next_departure_time | String | Inbound arrival and onward departure. |
duration | String | e.g. 2h 30m. |
duration_minutes | Integer | Layover length in minutes. |
is_overnight | Boolean | Whether the layover crosses a calendar day. |
overnight_days | Integer | Number of days crossed. |
overnight_note | String|null | Overnight layover when applicable. |
is_different_airport | Boolean | Whether the passenger changes airport. |
transfer_note | String|null | Transferring 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
| Message | Cause |
|---|---|
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.