Skip to content

Create Reservation (Full Payload) or Sync Hotel Reservation

Request

Use the Create Reservation Full Payload request to book a room by sending complete stay details and the booking code from the Availability response, along with traveler, form of payment, and payment information.
Please note: Availability results are stored in cache for 30 minutes. If the offers expire before you create a reservation, you must send a new request before booking. The Create Reservation Full Payload response uses the same format as the reference payload response. The only difference is that the Reference Payload response returns Reservation/id, which is the offer ID sent in that request. The full payload response does not return this information.
Note for Multi-room sell requests: when making a reservation, Travelport attempts to sell the number of rooms requested; however, 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 is 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.

Note for query parameters: Hotel APIs that create a new reservation or add to an existing one verify the reservation request with the guarantee type and price returned in preceding workflow steps. If there is any difference, the API does not yet create the reservation but instead returns an error to notify about the change.

  • To accept the change, send the request a second time with the applicable query parameter/s (acceptPriceChangeInd and/or acceptGuaranteeChangeInd). Do not send either of these query parameters in the initial request.

  • If you do not want to proceed with the booking because of the changes, you are not required to send a second booking request with the false value(s). You can simply let these offers expire.

Use the Sync Reservation request to synchronize a Booking.com hotel reservation to a Travelport PNR whenever specific sell failures occur. The Sync Reservation request is a scaled down re-try of a previous Create or Add Reservation request that adds to the original sell request the Traveler email address and the Booking.com booking information. The Sync message attempts to add the reservation information into a Travelport reservation as a standard aggregator segment but without re-selling the segment in the aggregator system. Booking.com requires the traveler email address in a hotel sell request. If the sell completes in the Booking.com system, the traveler receives a confirmation email containing information needed to synchronize the Travelport booking if the user receives one of two specific error messages on the original sell attempt. The Sync Reservation response returns all available data for the reservation using the same structure as the Create Reservation response.

Security
bearerAuth
Query
acceptPriceChangeIndboolean

Send with true to accept any difference in the current sell price from the total price returned in an earlier response. Default is false; terminates the sell process without booking. Create Reservation only.

Example:acceptPriceChangeInd=true
acceptGuaranteeChangeIndboolean

Send with true to accept any difference in the guarantee type from the guarantee type returned in an earlier response. (The guarantee types checked for differences are guarantee required, deposit required, prepay required.) Default is false; terminates the sell process without booking. Create Reservation only.

Example:acceptGuaranteeChangeInd=true
maximumPriceIncreasenumber, (float)

When acceptPriceChangeInd parameter is set to true you can use this maximumPriceIncrease parameter to specify a percentage threshold where a price change is acceptable. If the total price increase between the Sell and the Avail/Rules request is over this threshold the sell will be stopped and an error returned.

Example:maximumPriceIncrease=1.5
applyStrictReservationCommentValidationIndboolean

If true, the user expects that the sell request will be failed if any of the requested reservation comments fail. If indicator is not sent the service will default to false.

roomPerTravelerIndboolean

If true, the multi-room request will be sold as a separate reservation per traveler. If indicator is not sent the service will create a single reservation for all travelers. Default is false.

Headers
TraceIdstring, [ 10 .. 89 ] characters(^[a-zA-Z-0-9_]*[-]?[+]?$)

Used in hospitality workflows to provide a Unique transaction or tracking id for a single request and response.

Example:TraceID_123456789
XAUTH_TRAVELPORT_ACCESSGROUPstring, = 36 characters([a-zA-Z-0-9-_]*)

Identifies the Travelport access group with which the caller is associated

Example:19Y88702-C27A-4E5D-829A-89D7016688B1
TVP-PCC-Corestring^[a-zA-Z\d]{3,4}_\w{2}$

Allows user to pass PCC instead of Access Group ID

Example:DU7_1G
TVP-Correlation-Idstring, (uuid)

Identifier used to correlate hotel API invocations across a multi-call business flows.

Example:382c74c3-721d-4f34-80e5-57657b6cbc27
Bodyapplication/jsonrequired
ReservationDetailobject(ReservationDetail)
curl -i -X POST \
  'https://api.pp.travelport.net/11/hotel/book/reservations?acceptPriceChangeInd=true&acceptGuaranteeChangeInd=true&maximumPriceIncrease=1.5&applyStrictReservationCommentValidationInd=true&roomPerTravelerInd=true' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'TVP-Correlation-Id: 382c74c3-721d-4f34-80e5-57657b6cbc27' \
  -H 'TVP-PCC-Core: DU7_1G' \
  -H 'TraceId: TraceID_123456789' \
  -H 'XAUTH_TRAVELPORT_ACCESSGROUP: 19Y88702-C27A-4E5D-829A-89D7016688B1' \
  -d '{
    "ReservationDetail": {
      "@type": "Reservation",
      "Offer": [
        {
          "@type": "Offer",
          "id": "62b3ced3-92f7-47b3-adb1-03588c5dc5a7:190000fa-366c-4ffd-a4d1-59d17177c774",
          "Product": [
            {
              "@type": "ProductHospitality",
              "bookingCode": "APB174",
              "Quantity": 1,
              "guests": 1,
              "PropertyKey": {
                "@type": "PropertyKey",
                "propertyCode": "2772",
                "chainCode": "HH"
              },
              "DateRange": {
                "start": "2026-12-01",
                "end": "2026-12-02"
              }
            }
          ],
          "Price": {
            "@type": "PriceDetail",
            "CurrencyCode": {
              "value": "EUR"
            },
            "Base": 600,
            "TotalTaxes": 150,
            "TotalPrice": 750
          }
        }
      ],
      "Payment": [
        {
          "@type": "Payment",
          "Amount": {
            "code": "USD",
            "value": 308.43
          }
        }
      ],
      "FormOfPayment": [
        {
          "@type": "FormOfPaymentPaymentCard",
          "PaymentCard": {
            "@type": "PaymentCardDetail",
            "expireDate": "0825",
            "CardType": "Credit",
            "CardCode": "VI",
            "CardHolderName": "Frank Sinatra",
            "CardNumber": {
              "@type": "CardNumber",
              "PlainText": "XXXXXXXXXXX"
            },
            "SeriesCode": {
              "@type": "SeriesCode",
              "PlainText": "XXX"
            },
            "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"
              }
            ]
          }
        }
      ],
      "Traveler": [
        {
          "@type": "Traveler",
          "PersonName": {
            "@type": "PersonNameDetail",
            "Given": "Jon",
            "Surname": "Smith"
          },
          "Telephone": [
            {
              "@type": "TelephoneDetail",
              "countryAccessCode": "91",
              "areaCityCode": "011",
              "phoneNumber": "9891766469",
              "cityCode": "DL"
            }
          ],
          "Email": [
            {
              "value": "smith@example.com"
            }
          ]
        }
      ]
    }
  }'

Responses

OK - Successful Response - 200

Bodyapplication/json
ReservationResponseobject(ReservationResponse)

The response of a Create Reservation (Reference or Full Payload), Sync Reservation, Modify/Add Reservation, Create/Modify Passive Reservation, Retrieve Reservation, or Cancel Reservation endpoint.
The structure detailed here is the same for all of these API responses. For Post-Commit Workbench Create and Workbench Retrieve the response is structured the same, plus a workbench identifier.
The information returned in the Reservation Retrieve response varies depending on the information that has been added to the reservation at the time of retrieve, whether the reservation has been ticketed, and whether the reservation was created using the Travelport TripServices APIs or another program.

Please note the requests for Workbench Commit (Create Reservation), Post-Commit Workbench Create, and Workbench Retrieve do not support the query parameters available in Reservation Retrieve and do not return the following:

  • any document override, accounting, historical, and DOCI remarks
  • any custom rules
  • brand attributes
  • baggage dimension and fee details
  • fare rules
  • ATPCO RouteHappy flight amenities

For Two-step Commit: In the initial booking workflow, or when adding an offer to an existing reservation, or during an exchange, you can send enableTwoStepCommitInd=true to enable a two-step commit process that returns a warning if specific error scenarios occur. See Two-step Commit in the Guides for more information. If a Two-step Commit is triggered, the booking is not created and the first commit response returns objects that may not return in a typical commit response payload. The payload varies based on the warning that triggered the Two-step Commit, and may include additional objects if seats or other ancillaries were added to the workbench. Because the booking was not committed, Result/status is 'Not Processed'. A descriptive error or warning is returned in Result/Error/Message or Result/Warning/Message. The response to a second commit that creates a booking uses the same structure as a Reservation Retrieve response.

Response
{ "ReservationResponse": { "@type": "response", "transactionId": "49f58f5f-c443-43b4-9f5d-be405fd00a01", "traceId": "TraceID_123456", "correlationId": "49f58f5f-c443-43b4-9f5d-be405fd00a01", "reservationStatus": "Success", "Result": { "@type": "Result", "status": "Complete", "Error": [ … ], "Warning": [ … ] }, "Identifier": { "value": "A0656EFF-FAF4-456F-B061-0161008D7C4E", "authority": "TVPT" }, "NextSteps": { "baseURI": "www.travelport.com", "id": "5", "NextStep": [ … ] }, "ReferenceList": [ null ], "CurrencyRateConversion": [ { … } ], "Pagination": { "@type": "Pagination", "page": 1, "pageSize": 20, "totalPages": 5, "totalItems": 100 } } }