The AirPrice API confirms pricing on air search results. While air pricing is generally an optional but recommended step, it is required for low cost carriers and some NDC carriers.
Requests a fare based on the cabin class. Only one cabin preferenceType (Permitted, Preferred, PreferredWithUpgrade) is allowed per request, but there is no limit to the number of cabins that can be sent.
- Any CabinPreference in the initial Search request is applied to any subsequent Next Leg Search and reference Flight Specific Search requests.
- In AirPrice and AirReservation only one cabin preference type is allowed per request, but there is no limit to the number of cabins that can be sent. If CabinPreference was sent in the Search request, it is cached and sent with the AirPrice reference payload request. If you send CabinPreference in the AirPrice request, all cached modifiers are discarded and only the modifiers sent in the AirPrice request are used.
Can be combined with lowFareFinderInd=true to return lowest fare in the requested cabin or cabins. When using CabinPreference and lowFareFinderInd, if both CabinPreference and a class of service are sent, class of service is ignored. If CabinPreference is sent without a class of service, the response returns the lowest fare in the cabin requested. If that cabin is not available, the response may upgrade or downgrade to a different cabin. If a different cabin than requested is returned, the response returns the message that the cabin class may differ from the class requested. If lowFareFinderInd=false and CabinPreference are sent in the request, AirPrice ignores the preferred cabin and returns a message that the preferred cabin was ignored.
If CabinPreference is set to All, no cabin preference is applied.
Optional object to send the BIN/INN (IssuerIdentificationNumber) of the credit card to be used for payment; sending the BIN returns OB fees in the response
Required when using Air Canada flight pass.
Use not recommended; request fare rules using the Fare Rules API request instead.
Returns fare rules in the offer response.
Structured rules limit the rules returned to one or more of these categories: advance reservation/ticketing requirements, minimum/maximum stay, stopovers, penalties, voluntary exchanges and refunds.
GDS supports all categories; NDC supports only penalties. See the Fare Rules Guide for details. Note that even if fare rules are not requested, for GDS only, change and cancel penalties are returned unless suppressed by sending CustomResponseModifiersAir/excludePenaltiesInd set to true.
Not supported in BuildOptions (Flight Specific Search).
Not recommended to use. Invoke fare rule end points directly.
GDS only; not supported for NDC.
Provides pricing flexibility around class of service.
- If true: returns the lowest fares available in any class of service available, which may not be the same as the requested class.
- If false (default behavior): the response returns fares only in the requested class of service.
Notes for modifier interations:
- If lowFareFinderInd is sent with true and CabinPreference is sent, the only supported value for CabinPreference/type is Permitted.
- When lowFareFindInd=true and brand attributes are not disabled with inhibitBrandContentInd, AirPrice uses only the brand tier (and any other pricing modifiers) to find the lowest fare within a brand tier regardless of class of service.
Use to request the return of branded fares, which by default are not returned for the AirPrice Full Payload request.
- If true, returns branded fares. For AirPrice this is supported only in the full payload request.
- If false (default behavior): Does not return branded fares.
GDS only, not supported for NDC (NDC carriers always validate inventory at pricing).
Sets whether to validate inventory on the first flight in the itinerary in the requested class of service by booking and then releasing seats. Can help reduce sell failures at booking by alerting of insufficient availability.
- If true, verifies availability for the requested number of passengers in a specific class of service at the time of the price request by booking and releasing seats. If any or all segments are not bookable, AirPrice returns a message that the air segment/s are not bookable along with the dates and city pairs of the segments that are not bookable.
- If false (default behavior): Checks only for general seat availability on the flight, not a specific class of service.
Because this indicator temporarily affects seat availability, the recommended best practice is to use validateInventoryInd instead. Some airlines monitor for high volumes of sell/ignore transactions. Regardless of pricing results, air fares and inventory are only guaranteed by airlines when ticketed and paid.
To cause AirPrice to perform the same check for connecting flights, you can send both reCheckInventory=true and SpecificFlightCriteria/boundFlightsInd=true for each connecting flight.
GDS only; not supported for NDC, as NDC carriers already validate inventory at pricing.
Sets whether to validate inventory in the requested class of service.
- If true, checks for availability for the requested number of passengers in the requested class of service at the time of the price request. If there are fewer seats than requested passengers available in that class of service, AirPrice does not return any offers and instead returns an error message that the booking class or preference is not available. This reduces failures at the Add Offer and Workbench Commit steps.
- If false (default behavior): Checks only for general seat availability on the flight, not a specific class of service. AirPrice may return upsell offers with no availability in the requested class of service.
NDC only; not supported for GDS.
Supports values from 0 to 99 inclusive. Send to request upsell offers along with pricing for the requested class of service or cabin, returned in ascending price order. An upsell is the next highest fare in a different brand or cabin than requested.
Upsells are returned as follows:
- Upsells not requested: Only the requested offer is returned.
- One upsell requested: The lowest priced offer in the requested class of service or cabin plus one upsell offer are returned.
- Two upsells requested (and so on for x upsells requested): The lowest priced offer in the requested class of service or cabin plus two upsell offers are returned.
- Mock serverhttps://developer.travelport.com/_mock/apis/flights/air/price/offers/buildfromproducts
- https://api.pp.travelport.net/11https://api.pp.travelport.net/11/air/price/offers/buildfromproducts
- https://api.travelport.net/11https://api.travelport.net/11/air/price/offers/buildfromproducts
- GDS round trip with CustomerLoyalty
- GDS with SellCity pricing modifier
- NDC upsells along with pricing
curl -i -X POST \
https://developer.travelport.com/_mock/apis/flights/air/price/offers/buildfromproducts \
-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": "OfferQueryBuildFromProducts",
"BuildFromProductsRequest": {
"@type": "BuildFromProductsRequestAir",
"PassengerCriteria": [
{
"@type": "PassengerCriteria",
"number": 2,
"age": 25,
"passengerTypeCode": "ADT",
"CustomerLoyalty": [
{
"value": "1900007921",
"supplier": "AA",
"cardHolderName": "MEMBER LOYTEST"
}
]
}
],
"ProductCriteriaAir": [
{
"SpecificFlightCriteria": [
{
"flightNumber": "1551",
"carrier": "QF",
"departureDate": "2026-11-03",
"departureTime": "10:00:00",
"arrivalDate": "2026-11-03",
"arrivalTime": "11:50:00",
"from": "SYD",
"to": "LST",
"classOfService": "O",
"cabin": "Economy",
"segmentSequence": 1,
"brandTier": "1",
"AvailabilitySourceCode": "Q",
"ContentSource": "GDS",
"boundFlightsInd": true
},
{
"flightNumber": "2092",
"carrier": "QF",
"departureDate": "2026-11-10",
"departureTime": "14:15:00",
"arrivalDate": "2026-11-10",
"arrivalTime": "15:35:00",
"from": "LST",
"to": "MEL",
"classOfService": "K",
"cabin": "Economy",
"segmentSequence": 2,
"AvailabilitySourceCode": "Q",
"ContentSource": "GDS"
}
]
},
{
"SpecificFlightCriteria": [
{
"flightNumber": "422",
"carrier": "QF",
"departureDate": "2026-11-10",
"departureTime": "09:00:00",
"arrivalDate": "2026-11-10",
"arrivalTime": "10:25:00",
"from": "MEL",
"to": "SYD",
"classOfService": "E",
"cabin": "Economy",
"segmentSequence": 3,
"brandTier": "1",
"AvailabilitySourceCode": "Q",
"ContentSource": "GDS"
}
]
}
]
},
"validateInventoryInd": true
}'OK - Successful Response - 200
{ "OfferListResponse": { "OfferID": [ { … } ], "@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 } } }