Skip to content

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

ParameterTypeRequiredDescription
authenticationObjectYesAuthentication details
  └ partnerIdStringYesPartner Id
  └ signStringYesSignature for the request
pricingObjectYesPricing request details
  └ searchKeyStringYesUnique search identification from Shopping API
  └ solutionIdStringYesUnique identification from Shopping API
  └ adultsIntegerYesNumber of adult passengers
  └ childrenIntegerYesNumber of children (age 2-12)
  └ infantsIntegerYesNumber 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

ParameterTypeRequiredDescription
└ errorCodeStringYesError code, refer to Error Code List
└ errorMsgStringYesError message
dataObjectYesReturned data (not empty when errorCode is "0")
  └ searchKeyStringYesUnique search identification from Shopping API
  └ solutionObjectYesSolution details
   └ solutionIdStringYesUnique solution identification from Shopping API
   └ fareSourceStringNoFare source type, e.g. Regular, Charter, NDC, B2B
   └ categoryStringNoProduct type, e.g. VI (virtual interlining)
   └ fareTypeStringYesFare type: Public or Private
   └ validatingCarrierStringYesTicketing airline
   └ currencyStringYesCurrency code
   └ adtFareNumberYesAdult fare
   └ adtTaxNumberYesAdult tax
   └ chdFareNumberYesChildren (age 2-12) fare
   └ chdTaxNumberYesChildren (age 2-12) tax
   └ infFareNumberNoInfant (age 0-2, no seat) fare
   └ infTaxNumberNoInfant (age 0-2, no seat) tax
   └ tktFeeNumberYesTicketing service fee
   └ journeysObjectYesJourney legs (journey_0, journey_1, ...)
    └ journey_0[String]YesArray of flightIds for outbound (flights -> flightId)
    └ journey_1[String]NoArray of flightIds for inbound (flights -> flightId)
    └ journey_2[String]NoArray of flightIds for multi-leg flight (flights -> flightId)
   └ baggageMapObjectNoBaggage rules Map by passenger type (ADT, CHD, INF)
    └ ADT[Object]NoBaggage rules for ADT
     └ segmentIdList[String]NoArray of segment IDs (segments -> segmentId)
     └ baggageAmountStringNoFree baggage amount: (e.g., "1PC")
     └ baggageWeightStringNoFree baggage weight:
Unity: KG - kilogram, LB - pounds
(e.g., "23KG")
     └ baggageSize[String]NoBaggage dimensions [L, W, H]:
Unity: CM - centimeter, IN - inches
(e.g., ["76CM", "50CM", "30CM"] or ["158CM"])
     └ carryOnAmountStringNoFree carry-on amount: (e.g., "1PC")
     └ carryOnWeightStringNoFree carry-on weight:
Unity: KG - kilogram, LB - pounds
(e.g., "10KG")
     └ carryOnSize[String]NoCarry-on dimensions [L, W, H]:
Unity: CM - centimeter, IN - inches
(e.g., ["55CM", "40CM", "20CM"] or ["115CM"])
    └ CHD[Object]NoBaggage rules for CHD (fields are the same as ADT)
    └ INF[Object]NoBaggage rules for INF (fields are the same as ADT)
  └ flights[Object]YesFlight information
   └ flightIdStringYesFlight ID, unique identification
   └ segmentIds[String]YesArray of segment IDs (segments -> segmentId)
   └ selfTransferSegmentIds[String]NoSelf-transfer segment IDs
  └ segments[Object]YesSegment details
   └ segmentIdStringYesSegment ID, unique identification
   └ marketingCarrierStringYesMarketing carrier [IATA airline code]
   └ flightNumIntegerYesFlight number
   └ operatingCarrierStringNoOperating carrier [IATA airline code]
   └ equipmentStringNoAircraft equipment IATA-code
   └ cabinClassStringYesCabin class, refer to Сabin Class List
   └ bookingCodeStringNoCabin code
   └ departureStringYesDeparture [IATA airport code]
   └ arrivalStringYesArrival [IATA airport code]
   └ departureTerminalStringNoDeparture terminal
   └ arrivalTerminalStringNoArrival terminal
   └ flightTimeIntegerNoFlight time in minutes
   └ departureDateStringYesDeparture date (yyyy-MM-dd)
   └ departureTimeStringYesDeparture time (HH:mm)
   └ arrivalDateStringYesArrival date (yyyy-MM-dd)
   └ arrivalTimeStringYesArrival time (HH:mm)
   └ fareBasisStringNoFare basis code
   └ stops[Object]NoDetails about technical stops
    └ locationStringNoAirport IATA code of the stop location
    └ arrivalDateStringNoTechnical stop arrival date (yyyy-MM-dd)
    └ arrivalTimeStringNoTechnical stop arrival time (HH:mm)
    └ departureDateStringNoTechnical stop departure date (yyyy-MM-dd)
    └ departureTimeStringNoTechnical stop departure time (HH:mm)
 └ ancillaryAvailabilityObjectYesAncillary services (in development)
   └ paidBagBooleanYesPaid baggage available
   └ paidSeatBooleanYesPaid 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

errorCodeerrorMsgDescription
0okRequest has been processed successfully
S001System errorSystem error
B002Partner does not existsPartnerID does not exist
B003Illegal signIllegal sign. Please check your signature
B035Concurrency limitedConcurrency exceeded system limits
P001XXX is illegalThe field of XXX is illegal
P002XXX is missingThe field of XXX is missing
P004The maximum number of passengers with seat is 9Wrong parameter. The maximum number of passengers with seat is 9
P005There should be at least one adultWrong parameter. There should be at least one adult
P009The number of infant passengers can not exceed the number of adult passengersWrong parameter. The number of infant passengers can not exceed the number of adult passengers
B013Interface is limited, please contact the system administratorThe route that you request is limited, please contact system administrator
B015Pricing failedPricing failed for other reason
B016Flight near take-off, can’t offer pricing servicePricing fail. Can not pricing for flights that is near taking off
B018Airline or flight restrictionAirline or flight restriction
B019Can not find any supplier for current searchCan not find any supplier for current search
B020Can not find any price for this flightPricing fail. Can not find any price for this flight option
B021The booking code you choose has only 0 seat availablePricing fail. The booking code you choose has 0 seat left. Please choose other booking code or flight
B024Pricing TimeOutPricing TimeOut
B035Concurrency limitedConcurrent users control
B039Can't find the related data of XXXWrong parameter. Can't find the related data of XXX, like illegal city/country/area/airline
B046Interface is limited, the routing is offlinedLook to book control
B068The segment detail is different between solutionid field and journey fieldPlease verify whether the information in the pricing request matches the details from the shopping response
B121Supplier is offlineSupplier is not at working time
B788Change pricePrice for this flight was changed, after the repeat /json/precisePricing request, you will get the latest price

TTN Octo API documentation