Skip to content

Precise Booking

This method is used to directly create a flight booking. It is called after the search (/json/shopping) and price validation (/json/precisePricing) steps. The method takes an offer identifier and detailed passenger data, and returns a booking locator (PNR) in the response.

Endpoint

Method: POST

URL: /json/preciseBooking

Request Parameters

ParameterTypeRequiredDescription
authenticationObjectYesAuthentication details
  └ partnerIdStringYesPartner Id
  └ signStringYesSignature for the request
bookingObjectYes
  └ solutionObjectYesJourney information
   └ searchKeyStringYesUnique search identification from Shopping API
   └ solutionIdStringYesUnique solution identification from Shopping API
  └ passengers[Object]YesPassenger information
   └ passengerIdStringYesPassenger sequence ID
   └ firstNameStringYesFirst name
   └ lastNameStringYesLast name
   └ nationalityStringYesNationality [country code]
   └ psgTypeStringYesPassenger type including ADT - Adult, CHD - Child, INF - Infant (no seat)
   └ genderStringYesGender, including M for male, F for female
   └ birthdayStringYesDate of birth [yyyy-mm-dd]
   └ cardTypeStringYesType of travel document
   └ cardNumStringYesTravel document number
   └ cardExpiredDateStringYesTravel document expired date [yyyy-mm-dd]
  └ contactObjectYes
   └ emailStringYesEmail address
   └ phoneStringYesPhone number
  └ notifyUrlStringNoIf the Partner implements callback functionality, the URL should be provided here
(e.g.,https://example.com/order_notification_callback?provider=xxxxx&key=yyyyy)

Request Example

json
{
  "authentication": {
    "partnerId": "{{PARTNER_ID}}",
    "sign": "{{SIGN}}"
  },
  "booking": {
    "solution": {
      "searchKey": "ISTLON20260814YLONIST20260822Y1100",
      "solutionId": "rmm6MrVT9sqQd6BrNDONH2MLhoKdwGcddhXh9+Wwl8soDBwvLz7qDNm0hFcAay5m8Y5MXjGhKMbeM8hbDKZVZrjalM3U3ixzSpgiWMhbc0l54Wodx2d1VRrzJw3i39+IchK14mM4usIbL83NjLAsXqKS95fnSKUwlOA4V7tOTE6RALKScJ3jiJ4/quVebRmw1Smum12qAkec11m82wghahMq9NTfh0tXP1ZBnuCK/Yot3k/qX69k/gMOyQRG6KQT/KRnH1eB3yynOaiRtpWM7hh2AvrBwwZ9I0bDHzySwhJhGJtYc4SYrmIrH22lmw9XGjQ0ego+9NM0Z3RuRFxLVpB8FHLwKQ4PPJFEO+DpXWGKnjQI0keZrRRm6kg3B6oDcBToRtVU35VBDLAm+hp39w=="
    },
    "passengers": [
      {
        "passengerId": "1",
        "firstName": "GEORGE",
        "lastName": "TAYLOR",
        "nationality": "GB",
        "psgType": "ADT",
        "gender": "M",
        "birthday": "1998-04-26",
        "cardType": "P",
        "cardNum": "6970406",
        "cardExpiredDate": "2030-04-26"
      },
      {
        "passengerId": "2",
        "firstName": "SOPHIA",
        "lastName": "TAYLOR",
        "nationality": "GB",
        "psgType": "CHD",
        "gender": "F",
        "birthday": "2023-06-14",
        "cardType": "P",
        "cardNum": "54645854",
        "cardExpiredDate": "2028-07-25"
      }
    ],
    "contact": {
      "email": "george.taylor@example.com",
      "phone": "447911123456"
    },
    "notifyUrl": "https://example.com/order_notification_callback?provider=xxxxx&key=yyyyy"
  }
}

Response Parameters

The response parameters are identical to those in the orderDetail response.
Please refer to the Order Detail - Response Parameters section for a complete description.

TIP

In case of failed response, Partner should return only two parameters in the response: errorCode and errorMsg, with the corrsponding error code from Error Code List and explonation in the error message.

Success Response Example

json
{
  "errorCode": "0",
  "errorMsg": "ok",
  "data": {
    "orderStatus": "TO_BE_PAID",
    "orderNum": "917685547687690201",
    "createdTime": "2026-03-20T19:10:15+05:00",
    "ticketTimeLimit": "2026-03-20T19:12:15+05:00",
    "pnr": "WCREDC",
    "passengers": [
      {
        "passengerId": "1",
        "firstName": "GEORGE",
        "lastName": "TAYLOR",
        "nationality": "GB",
        "psgType": "ADT",
        "gender": "M",
        "birthday": "1998-04-26",
        "cardType": "P",
        "cardNum": "6970406",
        "cardExpiredDate": "2030-04-26",
        "ticketNum": null
      },
      {
        "passengerId": "2",
        "firstName": "SOPHIA",
        "lastName": "TAYLOR",
        "nationality": "GB",
        "psgType": "CHD",
        "gender": "F",
        "birthday": "2023-06-14",
        "cardType": "P",
        "cardNum": "54645854",
        "cardExpiredDate": "2028-07-25",
        "ticketNum": null
      }
    ],
    "solutions": [
      {
        "fareSource": "Regular",
        "category": "VI",
        "fareType": "Private",
        "validatingCarrier": "W9",
        "currency": "EUR",
        "adtFare": 146.93,
        "adtTax": 0.86,
        "chdFare": 146.93,
        "chdTax": 0.86,
        "infFare": null,
        "infTax": null,
        "tktFee": 0,
        "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"]
            }
          ]
        }
      }
    ],
    "journeys": [
      {
        "segments": [
          {
            "segmentId": "1",
            "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"
              }
            ]
          }
        ]
      },
      {
        "segments": [
          {
            "segmentId": "2",
            "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
          }
        ]
      }
    ],
    "pnrList": [
      {
        "segmentId": "1",
        "ticketNums": [
          {
            "airPnr": null,
            "ticketNum": null,
            "passengerId": "1"
          },
          {
            "airPnr": null,
            "ticketNum": null,
            "passengerId": "2"
          }
        ]
      },
      {
        "segmentId": "2",
        "ticketNums": [
          {
            "airPnr": null,
            "ticketNum": null,
            "passengerId": "1"
          },
          {
            "airPnr": null,
            "ticketNum": null,
            "passengerId": "2"
          }
        ]
      }
    ]
  }
}

Failed Response Example

json
{
  "errorCode": "0307",
  "errorMsg": "No free seats"
}

Error Code List

errorCodeerrorMsgDescription
0okRequest has been processed successfully
S001System errorSystem error
B002Partner is 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
P006Invalid parameterValue of request cannot pass the validation, please check on the request
0307Reservation failed - Booking class is sold outReservation failed. Seats have been sold out
B004There are errors in the passenger type of AdultsAdult passenger's age does not meet the requirements
B005Can not find any matching precisePricing result before the price expiresCan not find the corresponding precisePricing record. Please check the itinerary and passenger numbers. PreciseBooking has to be invoked before the price expires
B006Reservation failed - Other. OrderNum is XXXBooking fail for other reason. The order has been created which is indicated in Other. OrderNum field
B006Reservation failedBooking fail for other reason
B007Reservation failed - Segment status is not HKSegment status is invalid from GDS. Please select other flight options
B008Itinerary is different between PNR and orderItinerary in reservation is different from precisePricing. There might be a flight re-schedule. Please select other flight options
B011Reservation failed - Fare is unavailableFare is unavailable form GDS. Please select other flight options
B012Reservation failed - Create PNR time outCreate PNR time out from GDS. Please wait some minutes or select other flight options
B017Price is changedPrice is changed
B023Reservation failed - Save price failFail to save price from GDS
B022There are errors in the passenger type of ChildrenChild passenger's age does not meet the requirements
B025Reservation failed - RT PNR failFail to retrieve PNR from GDS
B027Airline PNR is missingAirline PNR is missing from GDS
B028Reservation failed - Time outBooking time out from GDS
B029Duplicate reservations have been found for passenger XXX/XXX in order XXX, in pnr XXXDuplicated reservation is not allowed. If there is an order with same segment and passenger, system will block the second reservation and return error. Please cancel the last duplicated order or pay the last order directly
B030Illegal passenger nameWrong passenger name
B031Illegal passenger nameWrong passenger name. Name length is over the limitation
B032Illegal documentIllegal document
B043Reservation failed: Create PNR failedBooking failed from GDS
B044Reservation failed - Create PNR failed, end transaction failedBooking failed from GDS
B062The passenger name must not exceed 40 charactersPassenger's name shouldbe within 40 English alphabet, including "/" between last name and first name
B064The lastName of passenger should be within 2-30 charactersPassenger's last name should be within 2-30 English alphabet
B065Passenger's document information must be filled in for this tripPassenger's document information must be filled in for this trip. Passenger's document information contains cardType, cardNum, cardExpiredDate and nationality
B069Reservation failed, this fare has passenger age limitationReservation failed, because this fare has a passenger age limitation
B077There are errors in the passenger type of infantsInfant passenger's age does not meet the requirements
B078Lack of passengerIdFor bookings contain infant(s), passengerId is required for each passenger
B079Each infant must be associated to one adultEach infant must be associated to one adult and each adult can only be associated to one infant maximum
B080Invalid or duplicated or discontinuous passengerIdPassengerId must be positive and continuous integers starting from 1
B081Error in ancillary passenger infoError in ancillary passenger info
B087Booking Failed. System has recognized possible churningChurning booking behaviour were detected and booking request with the same passenger will be restricted
B192Duplicate baggages are not allowed in the same journeyOnly one baggage purchase is allowed for the same journey, all subsequent attempts will be granted with this response
B193Multiple seat selection is not allowed in the same flightOnly one seat selection is allowed for the same journey, all subsequent attempts will be granted with this response

TTN Octo API documentation