Precise Pricing
Before proceeding to the booking creation step, you must verify the availability status, taxes, and final prices. This transaction checks if seats are still available and provides an exact price quote.
Since availability and fares from a Shopping (Search) transaction may be cached depending on the fare source, the initial prices and taxes might be inaccurate. By contrast, the Precise Pricing transaction retrieves real-time, uncached prices, taxes, and availability directly from the provider.
Endpoint
Method: POST
URL: /json/precisePricing
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| └ authentication | Object | Yes | Authentication details |
| └ partnerId | String | Yes | Partner Id |
| └ sign | String | Yes | Signature for the request |
| └ pricing | Object | Yes | Pricing request details |
| └ searchKey | String | Yes | Unique search identification from Shopping API |
| └ solutionId | String | Yes | Unique identification from Shopping API |
| └ adults | Integer | Yes | Number of adult passengers |
| └ children | Integer | Yes | Number of children (age 2-12) |
| └ infants | Integer | Yes | Number of infants (age 0-2, no seat) |
Request Example
json
{
"authentication": {
"partnerId": "{{PARTNER_ID}}",
"sign": "{{SIGN}}"
},
"pricing": {
"searchKey": "ISTLON20260814YLONIST20260822Y1100",
"solutionId": "rmm6MrVT9sqQd6BrNDONH2MLhoKdwGcddhXh9+Wwl8soDBwvLz7qDNm0hFcAay5m8Y5MXjGhKMbeM8hbDKZVZrjalM3U3ixzSpgiWMhbc0l54Wodx2d1VRrzJw3i39+IchK14mM4usIbL83NjLAsXqKS95fnSKUwlOA4V7tOTE6RALKScJ3jiJ4/quVebRmw1Smum12qAkec11m82wghahMq9NTfh0tXP1ZBnuCK/Yot3k/qX69k/gMOyQRG6KQT/KRnH1eB3yynOaiRtpWM7hh2AvrBwwZ9I0bDHzySwhJhGJtYc4SYrmIrH22lmw9XGjQ0ego+9NM0Z3RuRFxLVpB8FHLwKQ4PPJFEO+DpXWGKnjQI0keZrRRm6kg3B6oDcBToRtVU35VBDLAm+hp39w==",
"adults": 1,
"children": 1,
"infants": 0
}
}Response Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| └ errorCode | String | Yes | Error code, refer to Error Code List |
| └ errorMsg | String | Yes | Error message |
| └ data | Object | Yes | Returned data (not empty when errorCode is "0") |
| └ searchKey | String | Yes | Unique search identification from Shopping API |
| └ solution | Object | Yes | Solution details |
| └ solutionId | String | Yes | Unique solution identification from Shopping API |
| └ fareSource | String | No | Fare source type, e.g. Regular, Charter, NDC, B2B |
| └ category | String | No | Product type, e.g. VI (virtual interlining) |
| └ fareType | String | Yes | Fare type: Public or Private |
| └ validatingCarrier | String | Yes | Ticketing airline |
| └ currency | String | Yes | Currency code |
| └ adtFare | Number | Yes | Adult fare |
| └ adtTax | Number | Yes | Adult tax |
| └ chdFare | Number | Yes | Children (age 2-12) fare |
| └ chdTax | Number | Yes | Children (age 2-12) tax |
| └ infFare | Number | No | Infant (age 0-2, no seat) fare |
| └ infTax | Number | No | Infant (age 0-2, no seat) tax |
| └ tktFee | Number | Yes | Ticketing service fee |
| └ journeys | Object | Yes | Journey legs (journey_0, journey_1, ...) |
| └ journey_0 | [String] | Yes | Array of flightIds for outbound (flights -> flightId) |
| └ journey_1 | [String] | No | Array of flightIds for inbound (flights -> flightId) |
| └ journey_2 | [String] | No | Array of flightIds for multi-leg flight (flights -> flightId) |
| └ baggageMap | Object | No | Baggage rules Map by passenger type (ADT, CHD, INF) |
| └ ADT | [Object] | No | Baggage rules for ADT |
| └ segmentIdList | [String] | No | Array of segment IDs (segments -> segmentId) |
| └ baggageAmount | String | No | Free baggage amount: (e.g., "1PC") |
| └ baggageWeight | String | No | Free baggage weight: Unity: KG - kilogram, LB - pounds (e.g., "23KG") |
| └ baggageSize | [String] | No | Baggage dimensions [L, W, H]: Unity: CM - centimeter, IN - inches (e.g., ["76CM", "50CM", "30CM"] or ["158CM"]) |
| └ carryOnAmount | String | No | Free carry-on amount: (e.g., "1PC") |
| └ carryOnWeight | String | No | Free carry-on weight: Unity: KG - kilogram, LB - pounds (e.g., "10KG") |
| └ carryOnSize | [String] | No | Carry-on dimensions [L, W, H]: Unity: CM - centimeter, IN - inches (e.g., ["55CM", "40CM", "20CM"] or ["115CM"]) |
| └ CHD | [Object] | No | Baggage rules for CHD (fields are the same as ADT) |
| └ INF | [Object] | No | Baggage rules for INF (fields are the same as ADT) |
| └ flights | [Object] | Yes | Flight information |
| └ flightId | String | Yes | Flight ID, unique identification |
| └ segmentIds | [String] | Yes | Array of segment IDs (segments -> segmentId) |
| └ selfTransferSegmentIds | [String] | No | Self-transfer segment IDs |
| └ segments | [Object] | Yes | Segment details |
| └ segmentId | String | Yes | Segment ID, unique identification |
| └ marketingCarrier | String | Yes | Marketing carrier [IATA airline code] |
| └ flightNum | Integer | Yes | Flight number |
| └ operatingCarrier | String | No | Operating carrier [IATA airline code] |
| └ equipment | String | No | Aircraft equipment IATA-code |
| └ cabinClass | String | Yes | Cabin class, refer to Сabin Class List |
| └ bookingCode | String | No | Cabin code |
| └ departure | String | Yes | Departure [IATA airport code] |
| └ arrival | String | Yes | Arrival [IATA airport code] |
| └ departureTerminal | String | No | Departure terminal |
| └ arrivalTerminal | String | No | Arrival terminal |
| └ flightTime | Integer | No | Flight time in minutes |
| └ departureDate | String | Yes | Departure date (yyyy-MM-dd) |
| └ departureTime | String | Yes | Departure time (HH:mm) |
| └ arrivalDate | String | Yes | Arrival date (yyyy-MM-dd) |
| └ arrivalTime | String | Yes | Arrival time (HH:mm) |
| └ fareBasis | String | No | Fare basis code |
| └ stops | [Object] | No | Details about technical stops |
| └ location | String | No | Airport IATA code of the stop location |
| └ arrivalDate | String | No | Technical stop arrival date (yyyy-MM-dd) |
| └ arrivalTime | String | No | Technical stop arrival time (HH:mm) |
| └ departureDate | String | No | Technical stop departure date (yyyy-MM-dd) |
| └ departureTime | String | No | Technical stop departure time (HH:mm) |
| └ ancillaryAvailability | Object | Yes | Ancillary services (in development) |
| └ paidBag | Boolean | Yes | Paid baggage available |
| └ paidSeat | Boolean | Yes | Paid seat selection available |
Response Example
json
{
"errorCode": "0",
"errorMsg": "ok",
"data": {
"searchKey": "2349152586311b2374d979779ab9ea28",
"solution": {
"solutionId": "rmm6MrVT9sqQd6BrNDONH2MLhoKdwGcddhXh9+Wwl8soDBwvLz7qDNm0hFcAay5m8Y5MXjGhKMbeM8hbDKZVZrjalM3U3ixzSpgiWMhbc0l54Wodx2d1VRrzJw3i39+IchK14mM4usIbL83NjLAsXqKS95fnSKUwlOA4V7tOTE6RALKScJ3jiJ4/quVebRmw1Smum12qAkec11m82wghahMq9NTfh0tXP1ZBnuCK/Yot3k/qX69k/gMOyQRG6KQT/KRnH1eB3yynOaiRtpWM7hh2AvrBwwZ9I0bDHzySwhJhGJtYc4SYrmIrH22lmw9XGjQ0ego+9NM0Z3RuRFxLVpB8FHLwKQ4PPJFEO+DpXWGKnjQI0keZrRRm6kg3B6oDcBToRtVU35VBDLAm+hp39w==",
"fareSource": "Regular",
"category": "VI",
"fareType": "Private",
"validatingCarrier": "W9",
"currency": "EUR",
"adtFare": 146.89,
"adtTax": 0.86,
"chdFare": 146.89,
"chdTax": 0.86,
"infFare": null,
"infTax": null,
"tktFee": 0,
"journeys": {
"journey_0": [
"04dad589ff10fa52706e770317d613be"
],
"journey_1": [
"d4c1e191828488325470bbf8e074fc98"
]
},
"baggageMap": {
"ADT": [
{
"segmentIdList": [
"1"
],
"baggageAmount": "1PC",
"baggageWeight": "23KG",
"baggageSize": ["76CM", "50CM", "30CM"],
"carryOnAmount": "1PC",
"carryOnWeight": "10KG",
"carryOnSize": ["55CM", "40CM", "20CM"]
},
{
"segmentIdList": [
"2"
],
"baggageAmount": "1PC",
"baggageWeight": "23KG",
"baggageSize": ["76CM", "50CM", "30CM"],
"carryOnAmount": "1PC",
"carryOnWeight": "10KG",
"carryOnSize": ["55CM", "40CM", "20CM"]
}
],
"CHD": [
{
"segmentIdList": [
"1"
],
"baggageAmount": "1PC",
"baggageWeight": "23KG",
"baggageSize": ["76CM", "50CM", "30CM"],
"carryOnAmount": "1PC",
"carryOnWeight": "10KG",
"carryOnSize": ["55CM", "40CM", "20CM"]
},
{
"segmentIdList": [
"2"
],
"baggageAmount": "1PC",
"baggageWeight": "23KG",
"baggageSize": ["76CM", "50CM", "30CM"],
"carryOnAmount": "1PC",
"carryOnWeight": "10KG",
"carryOnSize": ["55CM", "40CM", "20CM"]
}
]
}
},
"flights": [
{
"flightId": "d4c1e191828488325470bbf8e074fc98",
"segmentIds": [
"0"
],
"selfTransferSegmentIds": null
},
{
"flightId": "04dad589ff10fa52706e770317d613be",
"segmentIds": [
"1"
],
"selfTransferSegmentIds": null
}
],
"segments": [
{
"segmentId": "0",
"marketingCarrier": "W9",
"flightNum": "5772",
"operatingCarrier": null,
"equipment": "JET",
"cabinClass": "Economy",
"bookingCode": "X",
"departure": "IST",
"arrival": "LGW",
"departureTerminal": "",
"arrivalTerminal": "0",
"flightTime": 245,
"departureDate": "2026-08-14",
"departureTime": "16:50",
"arrivalDate": "2026-08-15",
"arrivalTime": "18:55",
"fareBasis": "YRT",
"stops": [
{
"location": "IST",
"arrivalDate": "2026-08-15",
"arrivalTime": "10:00",
"departureDate": "2026-08-15",
"departureTime": "12:30"
}
]
},
{
"segmentId": "1",
"marketingCarrier": "W9",
"flightNum": "5729",
"operatingCarrier": null,
"equipment": "JET",
"cabinClass": "Economy",
"bookingCode": "X",
"departure": "LGW",
"arrival": "IST",
"departureTerminal": "S",
"arrivalTerminal": "",
"flightTime": 240,
"departureDate": "2026-08-22",
"departureTime": "13:35",
"arrivalDate": "2026-08-22",
"arrivalTime": "19:35",
"fareBasis": "YRT",
"stops": null
}
],
"ancillaryAvailability": {
"paidBag": true,
"paidSeat": true
}
}
}Error Code List
| errorCode | errorMsg | Description |
|---|---|---|
| 0 | ok | Request has been processed successfully |
| S001 | System error | System error |
| B002 | Partner does not exists | PartnerID does not exist |
| B003 | Illegal sign | Illegal sign. Please check your signature |
| B035 | Concurrency limited | Concurrency exceeded system limits |
| P001 | XXX is illegal | The field of XXX is illegal |
| P002 | XXX is missing | The field of XXX is missing |
| P004 | The maximum number of passengers with seat is 9 | Wrong parameter. The maximum number of passengers with seat is 9 |
| P005 | There should be at least one adult | Wrong parameter. There should be at least one adult |
| P009 | The number of infant passengers can not exceed the number of adult passengers | Wrong parameter. The number of infant passengers can not exceed the number of adult passengers |
| B013 | Interface is limited, please contact the system administrator | The route that you request is limited, please contact system administrator |
| B015 | Pricing failed | Pricing failed for other reason |
| B016 | Flight near take-off, can’t offer pricing service | Pricing fail. Can not pricing for flights that is near taking off |
| B018 | Airline or flight restriction | Airline or flight restriction |
| B019 | Can not find any supplier for current search | Can not find any supplier for current search |
| B020 | Can not find any price for this flight | Pricing fail. Can not find any price for this flight option |
| B021 | The booking code you choose has only 0 seat available | Pricing fail. The booking code you choose has 0 seat left. Please choose other booking code or flight |
| B024 | Pricing TimeOut | Pricing TimeOut |
| B035 | Concurrency limited | Concurrent users control |
| B039 | Can't find the related data of XXX | Wrong parameter. Can't find the related data of XXX, like illegal city/country/area/airline |
| B046 | Interface is limited, the routing is offlined | Look to book control |
| B068 | The segment detail is different between solutionid field and journey field | Please verify whether the information in the pricing request matches the details from the shopping response |
| B121 | Supplier is offline | Supplier is not at working time |
| B788 | Change price | Price for this flight was changed, after the repeat /json/precisePricing request, you will get the latest price |