Check the Hotel Release Notes for updates across all Hotel APIs.

Create Reservation Reference Payload API Reference

POST

book/reservations/build

Use this base path if you have not yet received or not migrated to the new credentials from Travelport:

Pre-production https://api.pp.travelport.com/11/hotel/ | Production https://api.travelport.com/11/hotel/

Use this base path after you have migrated to the new credentials from Travelport (using .net instead of .com):

Pre-production https://api.pp.travelport.net/11/hotel/ | Production https://api.travelport.net/11/hotel/

Related Content: JSON Hotel APIs Guide, Hotel Workflows, Hotel Availability API Reference, SearchComplete API Reference

Use the Create Reservation reference payload request to book a room using a cached offer from either of the preceding responses:

The reference payload sends an offer ID plus traveler details and both form of payment and payment information. It does not send full offer details as in the full payload request.

JSON Hotel SearchComplete is not yet available as a general release. All details in this documentation are for informational purposes only and subject to change until General Availability release, which will be communicated in advance via a Travelport Developer Advisory.
Results from Availability and SearchComplete are stored in cache for 30 minutes. If the offers expire before you create a reservation, you must send a new request before booking.
Multi-room sell requests

When making a reservation, Travelport attempts to sell the number of rooms requested, but the supplier may not be able to accommodate the total number of rooms. Each room sold creates a unique hotel segment on the Travelport reservation. A traveler name will be associated with each room with these limitations:

  • If the number of rooms requested is equal to the number of traveler names in the request, each room is associated with a unique traveler name.

  • If the number of rooms requested is not equal to the number of traveler names in the request, all rooms are associated with the first traveler name.


Request

As part of the request requirements, also see Authentication and Common Hotel API Headers.

Query Parameters

All Hotel APIs that create a new reservation or add a segment to an existing reservation verify the reservation request with the guarantee type and price returned in the preceding Availability or SearchComplete response. If there is any difference, the API does not yet create the reservation but instead returns an error notifying you of the change. To accept the change, send the request a second time with the appropriate query parameter/s below. Do not send either of these query parameters in the first reservation request.

If you do not want to proceed with the booking because of the changes, sending a second booking request is not necessary, however, you can simply start a new booking and let these offers expire.

Object Description

acceptPriceChangeInd

Boolean. Behaviors are as follows:

true: Accepts any difference in the current sell price from the total price returned in the Availability response.

false: Terminates the sell process without making a reservation. Default if not sent is false.

acceptGuaranteeChangeInd

Boolean. Behaviors are as follows:

true: Accepts any difference in the guarantee type from the guarantee type returned in the Availability response. Guarantee types checked for differences are guarantee required, deposit required, prepay required.

false: Terminates the sell process without making a reservation. Default if not sent is false.

Request Body

For additional examples, download the developer toolkits and see Using Postman and Developer Toolkits.
The red asterisk at the end of an object name below, as in Traveler*, marks that object as required in the request.

The example below shows the reference payload to create a reservation using an offer ID from Hotel Availability.

ReservationQueryBuild*

Top level object for the request.

Includes the ReservationBuild object.


ReservationBuild*

Top level object for hotel sell request by offer ID.

May include the BuildFromCatalogOfferingHospitality, Traveler, FormOfPayment, Payment, ReservationComment, and TravelAgency objects.


BuildFromCatalogOfferingHospitality*

Object signifying hospitality request. Top level object for offer identifiers from the Availability response. Includes CatalogOfferingIdentifier object.

NumberOfRooms : Number. Supports values 1-9 inclusive. Number of rooms requested at a single property. If not sent, defaults to one room.


CatalogOfferingIdentifier*

Top level object for reference offer identifier.

value* : String. Send the value from either of the preceding responses as appropriate:

  • Availability: Send the value returned in CatalogOffering/id for the instance of CatalogOffering for the offer to book.

  • SearchComplete: Send the value returned in propertyItems/lowestPublicAvailableRate/rateKey/value for the instance of propertyItems to book.

    JSON Hotel SearchComplete is not yet available as a general release. All details in this documentation are for informational purposes only and subject to change until General Availability release, which will be communicated in advance via a Travelport Developer Advisory.
Results from Availability and SearchComplete are stored in cache for 30 minutes. If the offers expire before you create a reservation, you must send a new request before booking.




ReservationComment

Top level object to include remarks and comments in the booking.

Example Create Reservation Payload request

{
 "ReservationQueryBuild": {
  "@type": "ReservationQueryBuild",
  "ReservationBuild": {
   "@type": "ReservationBuildFromCatalogOffering",
   "BuildFromCatalogOfferingHospitality": {
    "@type": "BuildFromCatalogOfferingHospitality",
    "CatalogOfferingIdentifier": {
     "value": "6269ddc1-a017-40cb-bce6-140d5e74e104:cc3280205f5ae9a9b7944c1002c88b33"
    }
   },
   "Traveler": [
    {
     "@type": "Traveler",
     "PersonName": {
      "Given": "Bear",
      "Surname": "Das",
      "Title": "Mr"
     },
     "Telephone": [
      {
       "@type": "TelephoneDetail",
       "countryAccessCode": "91",
       "areaCityCode": "011",
       "phoneNumber": "9891766469",
       "cityCode": "DL"
      }
     ],
     "Email": [
      {
       "value": "matt.singh@galileo.co.in"
      }
     ],
     "CustomerLoyalty": [
      {
       "value": "1111111",
       "programId": "IQ",
       "supplierType": "hotel"
      },
      {
       "value": "222222",
       "programId": "IT",
       "supplierType": "air"
      }
     ]
    }
   ],
   "FormOfPayment": [
    {
     "@type": "FormOfPaymentPaymentCard",
     "PaymentCard": {
      "@type": "PaymentCardDetail",
      "expireDate": "1125",
      "CardType": "Credit",
      "CardCode": "VI",
      "CardHolderName": "Frank Sinatra",
      "CardNumber": {
       "@type": "CardNumber",
       "PlainText": "4444333322221111"
      },
      "SeriesCode": {
       "@type": "SeriesCode",
       "PlainText": "343"
      },
      "PersonName": {
       "@type": "PersonNameDetail",
       "Given": "Bill",
       "Surname": "Thisguy"
      },
      "Address": {
       "@type": "AddressDetail",
       "Number": {
        "value": "125"
       },
       "Street": "Billing Address Street",
       "AddressLine": [
        "125 Billing Address Street"
       ],
       "City": "Claremont",
       "County": "Los Angeles",
       "StateProv": {
        "value": "CA"
       },
       "Country": {
        "value": "US"
       },
       "PostalCode": "91711-3323"
      },
      "Telephone": [
       {
        "@type": "TelephoneDetail",
        "countryAccessCode": "1",
        "areaCityCode": "909",
        "phoneNumber": "1231234",
        "cityCode": "DEN"
       }
      ],
      "Email": [
       {
        "value": "smith@example.com"
       }
      ]
     }
    }
   ],
   "Payment": [
    {
     "@type": "Payment",
     "Amount": {
      "code": "USD",
      "value": 143.37
     },
     "guaranteeInd": true,
     "depositInd": false
    }
   ]
  }
 }
}

Response

Top level objects

ReservationResponse

Top level object for the response.


Reservation

Top level object. Properties:

id: Internal identifier for the response.

Includes Offer, Traveler, TravelerProduct, and Receipt objects. May include ReservationComment and Accounting.


Offer

Top level object for offer details. Properties:

id: System-generated offer identifier value sent in the reference payload request to book that offer. Note that id is not returned in the response to a full payload request. This is the only difference in the two responses.

Includes Identifier object and, detailed in tables below, Product, Price, and TermsAndConditionsFull objects. May include DepositPolicy object.


Identifier

Defines which supplier system returned that specific room rate (offer). Properties:

authority: Indicates which supplier returned the lowest available rate for that property. Acceptable values are:

  • TVPT: Travelport
  • BKNG: Booking.com

value: Reference offer ID value.


Traveler

Traveler details. See below.


TravelerProduct

Reference numbers to link travelers to a specific offer. See below.


Receipt

Top level object for confirmation details. See below.


ReservationComment

Top level object for remarks stored in the PNR. See below.


Accounting

Top level object for Accounting remarks. See below.











Example response

                            {
 "ReservationResponse": {
  "Reservation": {
   "@type": "ReservationDetail",
   "Offer": [
    {
     "@type": "Offer",
     "id": "O1",
     "Identifier": {
      "value": "6269ddc1-a017-40cb-bce6-140d5e74e104:cc3280205f5ae9a9b7944c1002c88b33",
      "authority": "TVPT"
     },
     "Product": [
      {
       "@type": "ProductHospitality",
       "Quantity": 1,
       "bookingCode": "T00AABT",
       "guests": 1,
       "adaCompliant": "No",
       "propertyName": "SpringHill Suites by Marriott Grand Rapids Airport Southeast",
       "associatedCityCode": "GRR",
       "associatedAirportCode": "GRR",
       "PropertyAddress": {
        "@type": "Address",
        "AddressLine": [
         "5250 28th St. SE"
        ],
        "City": "Grand Rapids",
        "StateProv": {
         "value": "MI",
         "name": "MI"
        },
        "Country": {
         "name": "US"
        },
        "PostalCode": "49512"
       },
       "Telephone": {
        "@type": "Telephone",
        "phoneNumber": "464-1130",
        "cityCode": "GRR"
       },
       "GuestCounts": {
        "GuestCount": [
         {
          "count": 1,
          "ageQualifyingCode": "10"
         }
        ]
       },
       "PropertyKey": {
        "@type": "PropertyKey",
        "chainCode": "XV",
        "propertyCode": "89550"
       },
       "TravelerContact": {
        "@type": "TravelerContact",
        "Email": {
         "value": "matt.singh@galileo.co.in"
        },
        "Telephone": {
         "@type": "Telephone",
         "countryAccessCode": "91",
         "areaCityCode": "011",
         "phoneNumber": "9891766469",
         "cityCode": "HDQ"
        }
       },
       "RoomType": {
        "@type": "RoomTypeDetail",
        "RoomCharacteristics": {
         "@type": "RoomCharacteristics",
         "typeCode": "3",
         "smokingAllowed": "No",
         "wifiIncluded": "No",
         "BedConfiguration": [
          {
           "quantity": 2,
           "bedType": "Queen Bed(s)",
           "size": "160 cm X 200 cm"
          }
         ],
         "accessibleRoom": "No"
        },
        "Description": {
         "value": "AAA Caa Hot Deals, Membership Card Required, Suite, 2 Queen"
        }
       },
       "DateRange": {
        "start": "2025-10-16",
        "end": "2025-10-17"
       }
      }
     ],
     "Price": {
      "@type": "PriceDetail",
      "CurrencyCode": {
       "value": "USD",
       "decimalPlace": 2
      },
      "Base": 121.5,
      "TotalTaxes": 21.87,
      "TotalPrice": 143.37,
      "PriceBreakdown": [
       {
        "@type": "PriceBreakdownHospitality",
        "Amount": {
         "@type": "Amount",
         "CurrencyCode": {
          "value": "USD",
          "decimalPlace": 2
         },
         "Base": 121.5,
         "Taxes": {
          "@type": "TaxesDetail",
          "TotalTaxes": 21.87,
          "Tax": [
           {
            "value": 21.87,
            "currencyCode": "USD",
            "taxCode": "08",
            "purpose": "Lodging tax",
            "description": "Lodging tax",
            "includedInBase": "No"
           }
          ]
         },
         "Total": 143.37
        },
        "Commission": {
         "@type": "Commission",
         "application": "Commissionable"
        },
        "roomPricingType": "Per stay",
        "Description": "Best Available Rate"
       },
       {
        "@type": "PriceBreakdownHospitality",
        "roomPricingType": "Per night",
        "NightlyRate": [
         {
          "@type": "NightlyRate",
          "startDate": "2025-10-16",
          "nights": 1,
          "Amount": {
           "@type": "Amount",
           "CurrencyCode": {
            "value": "USD",
            "decimalPlace": 2
           },
           "Base": 121.5,
           "Taxes": {
            "@type": "TaxesDetail",
            "TotalTaxes": 21.87,
            "Tax": [
             {
              "value": 21.87,
              "currencyCode": "USD",
              "taxCode": "08",
              "purpose": "Lodging tax",
              "description": "Lodging tax",
              "includedInBase": "No"
             }
            ]
           },
           "Total": 143.37
          }
         }
        ],
        "AverageNightlyRate": [
         {
          "value": 121.5,
          "code": "USD"
         }
        ]
       }
      ]
     },
     "TermsAndConditionsFull": [
      {
       "@type": "TermsAndConditionsFullHospitality",
       "CustomerLoyalty": [
        {
         "value": "1111111",
         "supplierType": "Hotel"
        },
        {
         "value": "222222",
         "programId": "IT",
         "supplierType": "Air"
        }
       ],
       "TextBlock": [
        {
         "@type": "TextBlock",
         "title": "Address",
         "TextFormatted": [
          {
           "value": "5250 28Th Street Se Grand Rapids Mi 49512"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Guarantee",
         "TextFormatted": [
          {
           "value": "ID Required Must Guarantee Late Arrival"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Cancellation",
         "TextFormatted": [
          {
           "value": "cancel: 143.37 usd cancel fee person room cancellation permitted up to 1 days before arrival."
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Room detail",
         "TextFormatted": [
          {
           "value": "Maximum Occupancy- 5 Guests"
          }
         ]
        },
         {
         "@type": "TextBlock",
         "title": "Rate description",
         "TextFormatted": [
          {
           "value": "T00Aabt: AAA Caa Hot Deals Membership Card Required Suite 2 Queen 2 Queen Mini Fridge Microwave 450 Square Feet/41 Square Metre Living/Sitting Area Wireless Internet Complimentary"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Rate amount",
         "TextFormatted": [
          {
           "value": "12150 Person Night Starting 16 Oct For 1 Night"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Number Nights",
         "TextFormatted": [
          {
           "value": "1"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Room rate",
         "TextFormatted": [
          {
           "value": "Taxes - Total Tax/Surch/Fee - 21.87 P/Stay Taxes: 21.87 Usd Commissionable Rate"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Phone",
         "TextFormatted": [
          {
           "value": "1-616-464-1130"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Total Amount",
         "TextFormatted": [
          {
           "value": "14337 Approx Total Include All Known Taxes/Fees"
          }
         ]
        },
        {
         "@type": "TextBlock",
         "title": "Room Hold Expiration Time",
         "TextFormatted": [
          {
           "value": "BOOKING HELD UNTIL 00:00 LOCAL HOTEL TIME ON ARRIVAL DATE"
          }
         ]
        }
       ],
       "Guarantee": [
        {
         "@type": "Guarantee",
         "guaranteeType": "GuaranteeRequired"
        }
       ],
       "CancelPenalty": [
        {
         "@type": "CancelPenalty",
         "Deadline": {
          "@type": "Deadline",
          "SpecificDate": {
           "start": "2025-09-16",
           "end": "2025-10-15"
          },
          "Time": "23:59:59"
         },
         "HotelPenalty": {
          "@type": "HotelPenaltyPercent",
          "appliesTo": "Amount",
          "Percent": 0
         },
         "Refundable": "Yes"
        },
        {
         "@type": "CancelPenalty",
         "Deadline": {
          "@type": "Deadline",
          "SpecificDate": {
           "start": "2025-10-16"
          }
         },
         "HotelPenalty": {
          "@type": "HotelPenaltyAmount",
          "Amount": [
           {
            "value": 143.37,
            "code": "USD"
           }
          ]
         },
         "Refundable": "No"
        }
       ],
       "Description": [
        "T00Aabt: AAA Caa Hot Deals Membership Card Required",
        "Suite 2 Queen",
        "2 Queen Mini Fridge",
        "Microwave 450 Square Feet/41 Square Metre Living/Sitting Area",
        "Wireless Internet Complimentary"
       ],
       "ProductRateCodeInfo": [
        {
         "RateCodeInfo": {
          "rateCategory": "Association"
         }
        }
       ],
       "RatePaymentInfo": "PostPay",
       "CustomerLoyaltyIDRequiredAtReservation": false,
       "RateQualificationIDRequiredAtCheckIn": true
      }
     ],
     "passiveOfferInd": false
    }
   ],
   "Traveler": [
    {
     "@type": "Traveler",
     "id": "T1",
     "PersonName": {
      "@type": "PersonName",
      "Given": "Bear",
      "Surname": "Das"
     },
     "Telephone": [
      {
       "@type": "Telephone",
       "countryAccessCode": "91",
       "areaCityCode": "011",
       "phoneNumber": "9891766469",
       "cityCode": "HDQ"
      }
     ],
     "Email": [
      {
       "value": "matt.singhnope.com"
      }
     ],
     "CustomerLoyalty": [
      {
       "value": "1111111",
       "supplierType": "Hotel"
      },
      {
       "value": "222222",
       "programId": "IT",
       "supplierType": "Air"
      }
     ]
    }
   ],
   "TravelerProduct": [
    {
     "@type": "TravelerProduct",
     "TravelerRef": "T1",
     "OfferRef": "O1"
    }
   ],
   "FormOfPayment": [
    {
     "@type": "FormOfPaymentPaymentCard",
     "id": "FOP1",
     "PaymentCard": {
      "@type": "PaymentCard",
      "expireDate": "1125",
      "CardCode": "VI",
      "CardHolderName": "Frank Sinatra",
      "CardNumber": {
       "@type": "CardNumber",
       "PlainText": "************1111"
      }
     }
    }
   ],
   "Payment": [
    {
     "@type": "Payment",
     "Amount": {
      "value": 143.37,
      "code": "USD"
     },
     "FormOfPaymentIdentifier": {
      "Identifier": {
       "value": "FOP1"
      }
     },
     "OfferIdentifier": [
      {
       "Identifier": {
        "value": "O1"
       }
      }
     ]
    }
   ],
   "Receipt": [
    {
     "@type": "ReceiptConfirmation",
     "OfferRef": [
      "O1"
     ],
     "Confirmation": {
      "@type": "ConfirmationHold",
      "Locator": {
       "value": "80073065",
       "locatorType": "Confirmation Number",
       "source": "XV",
       "sourceContext": "Supplier",
       "creationDate": "2025-09-16"
      },
      "OfferStatus": {
       "@type": "OfferStatusHospitality",
       "code": "HK",
       "Status": "Confirmed"
      }
     }
    },
    {
     "@type": "ReceiptConfirmation",
     "OfferRef": [
      "O1"
     ],
     "Confirmation": {
      "@type": "ConfirmationHold",
      "Locator": {
       "value": "96120603",
       "locatorType": "IATA Number",
       "sourceContext": "Agency",
       "creationDate": "2025-09-16"
      },
      "OfferStatus": {
       "@type": "OfferStatusHospitality",
       "Status": "Confirmed"
      }
     }
    },
    {
     "@type": "ReceiptConfirmation",
     "Confirmation": {
      "@type": "ConfirmationHold",
      "Locator": {
       "value": "D6VBHL",
       "locatorType": "PNR Locator",
       "sourceContext": "Travelport"
      },
      "OfferStatus": {
       "@type": "OfferStatusHospitality",
       "Status": "Confirmed"
      }
     }
    }
   ],
   "ReservationComment": [
    {
     "@type": "ReservationComment",
     "Comment": [
      {
       "value": "No charge to CC",
       "name": "Special Instruction"
      }
     ],
     "AppliesTo": [
      {
       "@type": "AppliesToOffer",
       "OfferIdentifier": [
        {
         "offerRef": "O1"
        }
       ]
      }
     ]
    },
    {
     "@type": "ReservationComment",
     "commentSource": "Supplier",
     "shareWith": "Agency",
     "Comment": [
      {
       "value": "CXL:PERMITTED UP TO 01 DAYS BEFORE ARRIVAL INVALID/CF-80073065",
       "name": "OSI REMARKS"
      }
     ],
     "AppliesTo": [
      {
       "@type": "AppliesToOffer",
       "OfferIdentifier": [
        {
         "offerRef": "O1"
        }
       ]
      }
     ]
    }
   ]
  },
  "traceId": "5ba67b95-a9b2-4d0b-b3a2-b075969e79f1"
 }
}
                        

Additional Example

For additional examples, download the developer toolkits and see Using Postman and Developer Toolkits.

The JSON Hotel APIs return reservation details in a standard format used for many API responses, including Create Reservation reference and full payloads, Add Reservation full and reference payloads, Retrieve Reservation, and so on. All reservation responses return the following:

each hotel room is its own segment with a unique offer ID (returned in Reservation/Offer/id)

  • All travelers on the reservation are listed in the Traveler object and have a unique traveler ID, such as T1, T2, and so on.

  • TravelerProduct links each offer (aka segment or room) to a specific traveler reference id that cross-references a traveler name in the Traveler object. If the number of rooms requested is equal to the number of traveler names in the request, each room is associated with a unique traveler. If the number of rooms requested is not equal to the number of Traveler names in the request, all rooms are associated with the first traveler name.

  • FormOfPayment returns the details of the FOP used for each offer, such as credit card name and number (masked)

  • Payment returns the amount paid and FOP used for each offer

  • Some objects, such as ReservationComment and TravelAgency, are returned only if this information was included in the booking.

  • Receipt returns confirmations, record locators, and other information for each offer.

The Receipt object is critical because you must provide these confirmations and/or record locators for subsequent requests to retrieve, modify, or cancel a booking. Bookings return three instances of Receipt with @type ReceiptConfirmation:

This example request sends several types of remarks.