Creating Air Bookings

Air booking creates a reservation and stores an air itinerary. Air booking can include pricing information in the reservation; however, pricing data is usually not required for booking. Some carriers do require payment and ticketing at the time of booking.

Note: Booking creates a reservation only. You must subsequently ticket the itinerary or the airline will release the itinerary. The length of the hold varies by airline.

To add an air booking to an existing PNR or Universal Record, see Modifying Air Bookings.

Air bookings are created using the results from an Air Pricing response after searching for air segments and fares. Air bookings can also be created using the results from a Low Fare Shopping response; however, a subsequent Air Pricing call is recommended to confirm fares.

Note: For Airline Content Hub, an Air Pricing call is required before booking.


Located in Universal.xsd:

How To

  1. Following an Air Pricing or Low Fare Shopping response, send an AirCreateReservationReq with at least the minimum required data.

    • Within AirCreateReservationReq/BookingTraveler, at least one /BookingTravelerName and one /PhoneNumber are required. Refer to Booking Traveler Name for limitations.

    • Send AirCreateReservationReq/ActionStatus to indicate the queue or ticketing status of the booked air segment (optional in Galileo).

    • To add the air segment as a new PNR in an existing Universal Record, specify the existing Universal Record using AirCreateReservationReq @UniversalRecordLocatorCode.

  2. If an Air Pricing request was made prior to the reservation request, the following information is required and is found in the Air Pricing response.

    • For each air segment in the trip, include a /AirPricingSolution/AirSegment element with @Group, @Carrier, @FlightNumber, @Origin, @Destination, and @DepartureTime.

      If an air segment contains a connection, use /Connection to ensure the flights are sold correctly and a sell failure does not occur. See Air Segment Connection Logic for more details.

    • If ticketing is performed at the time of booking, FormOfPayment and Payment are also required.

      Note: Most ACH carriers require payment at the time of booking.

  3. If booking branded fares, enter AirPricingSolution/HostToken and AirPricingSolution/AirpricingInfo/BookingInfo @HostTokenRef.

  4. Additional optional data can be sent in AirCreateReservationReq.

    Optional information Description

    Seat assignments

    AirCreateReservationReq/AutoSeatAssignment and /SpecificSeatAssignment are used to include seat assignments with the booking.

    /AirPricingSolution/OptionalServices/OptionalService @Type="PreReservedSeatAssignment" is used to request paid seats for ACH carriers. Specify the seat number using /OptionalService/ServiceData @Data. For ATPCO carriers, use the Stand-Alone Merchandising Flow.

    Forms of payment

    Payment can be specified at the provider reservation (PNR) level or the stored fare level across a single or multiple stored fares. Refer to Air Booking with Form of Payment for detailed information.

    Passenger type, geography, and residency

    Passenger type, personal geography, and residency type are defined in AirPricingSolution/AirPricingInfo/PassengerType. If no passenger type is sent, adult is assumed.

    Personal geography can be used for locale-specific requirements.

    Optional services

    Send /AirPricingSolution/OptionalServices/OptionalService elements for selected services.

    Branded Fares

    Branded and Upsell Fares can be added as part of a booking. See Rich Content and Branding in Air Bookings for details.

    Manual fares

    Manual fares can be added by during the creation of the booking for active segments by setting the PricingMethod attribute of AirPricingInfo to 'ManualFare'.

    AirPricingSolution/AirPricingInfo/AirPricingModifiers/ManualFareAdjustment can be used to provide increments or discounts to a fare using a percentage or amount.

    Override fares

    If none of the system-generated fares from Universal API are acceptable, Fare Basis Codes can be used to create a specific fare to price, which overrides Universal API's fare responses.

    The total price can also be adjusted by a flat amount or a percent. The adjustment can be applied at both the PTC level and the per passenger level. See Air Booking with Price Adjustments for details.

    Fare types

    Both Public and Private (negotiated) Fares are available. Use AirPricingSolution/AirPricingInfo/AirPricingModifiers @FaresIndicator to either restrict the type of fare to book or allow flexibility in choosing other fare types.

    You can also specify contract or account codes to return private fares and redistribute private fares if needed. Refer to Air Booking with? Fare Type for more information.

    Loyalty cards

    Use /BookingTraveler/LoyaltyCard to accrue points/miles. For more information, refer to Air Booking with Loyalty Program.

    Multiple AirPricingInfo elements

    If more than one AirPricingInfo element is sent in a book request, then all AirPricingInfo children associated to an AirPricingInfoGroup must be provided in AirTicketingReq/AirTicketingModifiers.

    Restrict wait-listed segments

    Client applications have the option to restrict the creation or update of PNRs for air bookings that contain wait-listed segments in the booking or modify request.

    Passive segments

    To add a passive segment, set AirPricingSolution/AirSegment @Passive="true". Add the supplier's code and record locator in AirCreateReservationReq/SupplierLocator.

    Override minimum connection time

    Universal API stops processing the reservation when the minimum connection time is not met and an error is returned. You can resend the request with AirCreateReservationReq @OverrideMCT="true" for Galileo or Apollo.

    Special Service Requests for Merchandising Optional Services

    If applicable, a Special Service Request (SSR) is created for each Optional Service that is sent in the Air Merchandising Fulfillment request or Air Booking request. This SSR is created in addition to the ASVC SSR.

    Book on Book

    Book on Book for an Air Create Reservation request is allowed with host Provider Locator Code and Universal Record Locator Code if the Provider Locator Code does not have any active/passive air content.

    Language code

    @LanguageCode is available for ACH only. It defines the language that the carrier uses in the confirmation email.

    Retain reservation

    Use AirCreateReservationReq @RetainReservation to define whether a PNR is created if the values sent in the request differ from the values in the stored schedule and price.

    Pricing type

    Identify the pricing type using AirPricingSolution/AirPricingInfo @PricingType.

    Price open segments

    Open segments are air segments that do not specify a flight number. To book open segments, send /AirPicingSolution/AirSegment @OpenSegment="true".

    Price variance

    With Universal.xsd v46, price is checked during the reservation request. You can specify a price tolerance at time of book, which reduces booking failures.

    Review bookings

    Review Bookings (Q-Minders) are a provider functionality that issues reminders to agents for any pending tasks that must be done by a specific date and time. The PNR and the reminders are put into the agency queue on the date and time specified in Review Booking.

    Agent ID override

    AirCreateReservationReq/AgencyIDOverride is used to specify another agent ID for the reservation.


    To emulate another PCC or SID, use AirCreateReservationReq/OverridePCC.

    Search Control Console

    @ChannelID and @NSCC are only used by Search Control Console users.

  5. If the booking was successful, AirCreateReservationRsp returns Universal Record and the new air PNR data. If the air segment is the first segment booked for the trip, a new Universal Record is created. If the air segment was added to an existing Universal Record, a new air PNR within that record is created.

  6. Within the Universal Record, AirReservation contains the booking data. Booking Data is encapsulated in multiple elements.

    Air reservation information Description
    Air segments

    UniversalRecord/AirReservation/AirSegment contains the itinerary data for each corresponding segment in the itinerary.

    Air pricing

    UniversalRecord/AirReservation/AirPricingInfo contains the total fare for all segments. Fares for each segment are returned in one or more AirPricingInfo/FareInfo elements.

    Optional services

    Information (including costs) about optional services is returned in UniversalRecord/AirReservation/OptionalServices (added in Air v29.0 and later).

    Provider reservation reference keys

    UniversalRecord/AirReservation/ProviderReservationInfoRef provides a cross-reference for the air segment between the Universal Record (UR) and the provider PNR when all segments are canceled, which lets you delete segments and remove the Universal Record. Fully canceled/deleted air segments can then be retrieved within the UR, and the provider age-out guidelines for archiving the PNR data are supported.

    Connection indicators and group numbering

    The AirSegment @Group and Connection @SegmentIndex attributes return connection indicators and group numbering in the book response so that the data is present in post-book workflows. E.g.,

    <air:Connection/> </air:AirSegment><air:AirSegment Key="9Y1ynsxrGD...==" Group="2" Carrier="LH" FlightNumber="630" ...>

    This is limited release functionality. Please contact your Travelport representative to activate this enhancement.

  7. The response also contains information about schedule changes or failures.

    Response information Description

    Schedule change

    If a schedule change occurred, the AirSolutionChangedInfo element is returned.

    Failed air segments

    If any air segments failed to book, the AirSegmentSellFailureInfo element is returned.

  8. The response may also contain Brand details for the fares. See Rich Content and Branding in Air Bookings for details.

Errors and Warnings