/v2/flight/search-result/{id}Poll search results
Keep calling until completionPercent is 100. Then pick a flightId.
Provider names and raw counts are collapsed into completionPercent. A customer never learns how many suppliers you query, who they are, or which failed. Prices are POS-converted before mapping. total on each row includes the markup.
Unknown or expired searchId produces no body and is observed as 404. Treat a non-200 as “this search no longer exists”, not as a server fault.
cURL
curl "https://booking.aerolink.dev/v2/flight/search-result/9f2c...?pageNum=0&pageSize=10" \
-H "Authorization: Bearer eyJ..."Path parameters
idstringsearchId from init-search
idstring required | searchId from init-search |
Query parameters
pageNumnumberDefault 0
pageSizenumberDefault 10
sortstringFastest sorts by duration; anything else by price
airlinescsvFilter by marketing carrier
flight-nocsvFilter by flight number
stopscsvFilter by stop count
depart{N}csv pairDeparture window for leg N, e.g. depart0=06:00,12:00
duration{N}csv pairDuration window for leg N
pageNumnumber optional | Default 0 |
pageSizenumber optional | Default 10 |
sortstring optional | Fastest sorts by duration; anything else by price |
airlinescsv optional | Filter by marketing carrier |
flight-nocsv optional | Filter by flight number |
stopscsv optional | Filter by stop count |
depart{N}csv pair optional | Departure window for leg N, e.g. depart0=06:00,12:00 |
duration{N}csv pair optional | Duration window for leg N |
Response
{
"message": "Success",
"data": {
"content": [
{
"id": "66d2...",
"flightId": "1-1",
"searchId": "9f2c...",
"tags": ["Branded Fare"],
"tripType": "ONE_WAY",
"totalSegment": 1,
"totalStopCount": 0,
"totalElapsedTime": 300,
"brandedFare": true,
"pair": "DAC-DXB",
"aitPlate": "EK",
"routeType": "INTERNATIONAL",
"totalPassengerWithoutInfant": 1,
"operatingCarrier": {},
"createdDate": "2026-09-02T15:30:00",
"totalPrice": {
"currencyCode": "BDT",
"baseFare": 40000,
"tax": 0,
"ait": 0,
"gross": 40000,
"subTotal": 40000,
"discount": 0,
"serviceCharge": 0,
"total": 46000
},
"tripList": [],
"priceGroups": null
}
],
"meta": {
"searchId": "9f2c...",
"status": "IN_PROGRESS",
"completionPercent": 50,
"totalFlights": 120,
"estimatedFlights": 200,
"startedAt": "2026-09-02T15:30:00",
"completedAt": null
},
"page": 0,
"size": 10,
"totalElements": 120,
"totalPages": 12,
"last": false
}
}Response fields
content[].idstringItinerary id
content[].flightIdstringUse this for flight detail
content[].tagsstring[]e.g. Branded Fare, Cheapest, Fastest
content[].totalElapsedTimenumberMinutes
content[].totalPriceB2cFaretotal includes the markup
meta.statusenumIN_PROGRESS, COMPLETED, PARTIAL, FAILED
meta.completionPercentnumber100 for any terminal status
content[].idstring | Itinerary id |
content[].flightIdstring | Use this for flight detail |
content[].tagsstring[] | e.g. Branded Fare, Cheapest, Fastest |
content[].totalElapsedTimenumber | Minutes |
content[].totalPriceB2cFare | total includes the markup |
meta.statusenum | IN_PROGRESS, COMPLETED, PARTIAL, FAILED |
meta.completionPercentnumber | 100 for any terminal status |
Business rules
- Poll until completionPercent is 100. COMPLETED, PARTIAL and FAILED all mean stop.
- Any filter present switches off index-based sorting and applies the filter path instead.
Errors
Missing token or missing B2C_FLIGHT_SEARCH
Unknown or expired searchId. Not an empty page.
| HTTP | message | When |
|---|---|---|
| 401 / 403 | UNAUTHORIZED | Missing token or missing B2C_FLIGHT_SEARCH |
| 404 | (empty body) | Unknown or expired searchId. Not an empty page. |