The Flight Specific Search API Reference Payload request returns additional upsells, up to 99, for any product/s returned by Search or Next Leg Search. The reference payload sends an identifier referencing a previous response and the offer and product identifiers. To use the Flight Specific Search reference payload request, your initial Search request must send offersPerPage to invoke caching if that Search was journey-based (leg-based search results are always cached).
The full payload request does not reference a previous Search response (GDS only, not supported for NDC).
Any CabinPreference in the initial Search request is applied to any subsequent Next Leg Search and reference Flight Specific Search requests.
The Flight Specific Search response uses the same structure and returns the same objects as the Search response. The difference is that one instance of CatalogProductOffering (id o1) is returned for each offer sent in the request and one instance of ReferenceListProduct/Product is returned for each product sent in the request.
When sending a Premium Flex request, use the endpoint catalog/search/catalogproductofferings/buildpremiumflexoptions.
- Mock serverhttps://developer.travelport.com/_mock/apis/flights/air/catalog/search/catalogproductofferings/buildoptions
- https://api.pp.travelport.net/11https://api.pp.travelport.net/11/air/catalog/search/catalogproductofferings/buildoptions
- https://api.travelport.net/11https://api.travelport.net/11/air/catalog/search/catalogproductofferings/buildoptions
curl -i -X POST \
https://developer.travelport.com/_mock/apis/flights/air/catalog/search/catalogproductofferings/buildoptions \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-H 'TVP-PCC-Core: DU7_1G' \
-H 'TraceId: TraceID_123456789' \
-H 'XAUTH_TRAVELPORT_ACCESSGROUP: 19Y88702-C27A-4E5D-829A-89D7016688B1' \
-H 'travelportPlusSessionIdentifier: 49f58f5f-c443-43b4-9f5d-be405fd00a01' \
-d '{
"@type": "CatalogProductOfferingsQueryBuildOptions",
"BuildOptions": {
"@type": "BuildOptionsFromProducts",
"maxNumberOfUpsellsToReturn": 99,
"BuildFromProductsRequest": {
"@type": "BuildFromProductsRequestAir",
"PassengerCriteria": [
{
"@type": "PassengerCriteria",
"number": 1,
"age": 25,
"passengerTypeCode": "ADT"
}
],
"ProductCriteriaAir": [
{
"SpecificFlightCriteria": [
{
"flightNumber": "405",
"carrier": "QF",
"departureDate": "2026-11-02",
"departureTime": "06:30:00",
"arrivalDate": "2026-11-02",
"arrivalTime": "08:05:00",
"from": "SYD",
"to": "MEL",
"classOfService": "E",
"cabin": "Economy",
"segmentSequence": 1,
"brandTier": "1",
"AvailabilitySourceCode": "Q",
"ContentSource": "GDS"
}
]
},
{
"SpecificFlightCriteria": [
{
"flightNumber": "422",
"carrier": "QF",
"departureDate": "2026-11-09",
"departureTime": "09:00:00",
"arrivalDate": "2026-11-09",
"arrivalTime": "10:25:00",
"from": "MEL",
"to": "SYD",
"classOfService": "E",
"cabin": "Economy",
"segmentSequence": 2,
"brandTier": "1",
"AvailabilitySourceCode": "Q",
"ContentSource": "GDS"
}
]
}
]
}
}
}'{ "CatalogProductOfferingsResponse": { "CatalogProductOfferings": { "@type": "CatalogProductOfferings", "id": "cpo_1", "Identifier": { … }, "CatalogProductOffering": [ … ], "UpsellOffering": [ … ] }, "@type": "response", "transactionId": "49f58f5f-c443-43b4-9f5d-be405fd00a01", "traceId": "TraceID_123456", "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c", "reservationStatus": "Success", "Result": { "@type": "Result", "status": "Complete", "Error": [ … ], "Warning": [ … ] }, "Identifier": { "value": "A0656EFF-FAF4-456F-B061-0161008D7C4E", "authority": "TVPT" }, "NextSteps": { "baseURI": "string", "id": "5", "NextStep": [ … ] }, "ReferenceList": [ { … } ], "CurrencyRateConversion": [ { … } ], "Pagination": { "@type": "Pagination", "page": 1, "pageSize": 20, "totalPages": 5, "totalItems": 100 } } }