Skip to main content

Create Booking


The Create Booking method is designed for booking various content exposed by Sabre, and provides the capability to create Sabre Orders (refer to the New Distribution Capability page). Alternatively, the method can also create a Sabre PNR that includes traditional air (ATPCO) or low-cost carrier (LCC) content, book hotel content, book a combination of flight and hotel content, or book car content.

The hotel booking options include:

  • Book an aggregator hotel as a CSL segment
  • Book a Sabre GDS hotel as a CSL segment, or as a legacy segment

Note: Refer to Content Services For Lodging for more information.

Car booking options include:

  • Book car content via booking key.

The Booking Management API flow consists of a number of internal calls to individual product domains (PNR, Pricing, Profiles, Order) with added business logic that aims for simple implementation.

Technical overview

Create Booking is available in RPC/JSON format.

This API is designed to operate in a stateless way, and accepts both sessionless (ATK) and session-based (ATH) tokens. When a call is made to this API via a session-based token, the session (AAA) is cleared before and after execution.

General logic

Create Booking will attempt to create a Sabre PNR that contains either a Sabre Order or traditional air content (including LCC). If, during the orchestration process, a failure of a domain service call prevents the API from completing a booking, the system will stop processing and pass an error.

Internal orchestration

The APIs orchestrated in Create Booking include:

Create Booking request structure

Since this method supports both types of air content (NDC or traditional) you can choose the following mandatory request parameters:

  • flightOffer is used to pass details of a chosen NDC offer to be booked and populates chosen offerID and selectedOfferItems returned by the Offer Price API.
  • flightDetails is used to pass full details for a traditional air booking. It is necessary to provide all information on chosen flights and, if needed, define the air booking error strategy and/or chosen pricing options. The pricing options include price validation (priceComparison) and a plethora of optional qualifiers that may affect the final price for the booking.
Passing traveler information

Another mandatory step requires you to pass traveler information. Choose the travelers request element to pass details for each person. You may also expand on the travelers' details with information about their travel documents (identityDocuments) and/or loyalty programs (loyaltyPrograms). It is possible to request additional ancillary services (ancillaries), as well as send a special service request(s) to the airline (specialServices). Contact information (emails and phones) and remarks associated with a name can also be specified under a traveler object.


  • Infant passenger codes are currently not supported when creating NDC bookings.
  • Currently, ancillary services are supported only for ATPCO/traditional bookings.

Instead of passing traveler information, you may retrieve the Sabre profile to instead populate traveler information (including travel documents and/or loyalty programs) by using profiles. This is applicable for both types of air content.


The remaining parameters are optional and allow for more granular control over the new booking:

  • errorHandlingPolicy allows you to define the API's behavior in the event of an error. Available options are:
    • HALT_ON_ERROR (default): Stop processing upon encountering any error from downline APIs.
    • DO_NOT_HALT_ON_FLIGHT_PRICING_ERROR: Continue upon encountering a pricing error (only ATPCO/traditional booking).
    • DO_NOT_HALT_ON_HOTEL_BOOKING_ERROR: Continue upon encountering a hotel booking error.
    • DO_NOT_HALT_ON_CAR_BOOKING_ERROR - continue upon encountering a car booking error.
    • HALT_ON_INVALID_MINIMUM_CONNECTING_TIME_ERROR: Stop if the minimum connecting time between the flights is not met (only ATPCO/traditional booking).
  • targetPcc changes the context to a desired pseudo city code. This is particularly useful for agencies that separate their booking, fulfillment, and shopping across different pseudo city codes (PCCs).
  • receivedFrom is an optional property that passes information on the entity that authorized the creation of the booking.
  • asynchronousUpdateWaitTime allows you to specify desired wait time in milliseconds that is applied to asynchronous updates related to booking creation. Mainly used for the redisplay operation of NDC bookings.
  • agency is used to pass agency related information, like agency address or the ticketing policy selected.
  • contactInfo is used to pass contact information for the booking, like e-mail address (or addresses) or phone number (or phone numbers).
  • payment is mainly used to associate different forms of payment to the booking. These can be chosen as a booking method during pricing (flightDetails.flightPricing.qualifiers.payment).
  • remarks is used to add various booking related remarks.
  • notifications contains actions that are to be performed after the booking has been completed, such as sending itinerary information to an e-mail address.
  • otherServices contains other service information (OSI) sent to an airline. It is not possible to send other service request to a hotel chain and/or car rental vendor.
  • retentionEndDate is used to pass the retention date of the booking.
  • retentionLabelis used to specify the label associated with the retention date.
Booking hotel content

If you wish to use this method to book hotel content, choose from the following request elements:

  • agency is used to pass agency-related information, such as agency address. Agency information is required to complete hotel bookings.
  • travelers is used to pass details for each traveler.
  • hotel.useCsl defines if the booking should be made as CSL hotel or legacy GDS content.
  • hotel.bookingKey is a required value obtained as part of the response of the Hotel Price Check API. createBooking will automatically decode the booking key, obtain the hotel property ID, rate details, and determine the source (GDS or Aggregator) in order to execute the booking through the appropriate vendor.
  • hotel.rooms defines the rooms to be booked and assign them to travelers.
  • hotel.formOfPayment defines the form of payment to complete the booking.

Starting in v1.9 of the Booking Management API, the Create Booking method supports Payment Service Directive 2 (PSD2) compliant Strong Customer Authentication (SCA) for payment cards. When using payment cards for hotel bookings, specify SCA information under the request element: payment.formsOfPayment.authentications

Booking car content

The car.bookingKey is returned in the Vehicle Price Check API response and is a mandatory value to book cars with the Booking Management API.

Create Booking response structure

The Create Booking response is mainly comprised of the response structure found in Get Booking and contains details of the newly made booking.

  • booking contains the details of the booking. Refer to the Get Booking section for detailed information.
  • request includes a copy of the request sent to the API.
  • errors includes all errors/warnings returned by the API.

Error handling

This section illustrates the current error handling logic for Create Booking:

Error structure

Field Type Description
category String Indicates error category.
description String Provides detailed description.
type String Indicates error type.
fieldPath String Request’s field path if error caused by bad request.
fieldName String Request’s field name if error caused by bad request.
fieldValue String Request’s field value if error caused by bad request.

Error codes

In the event an error(s) occurs, Create Booking returns a non-empty errors list. Each item in the collection contains three fields with the following possible values:

  • type
  • category
  • description

Note: Refer to Create Booking - Error List for additional details on possible errors returned by Create Booking.