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

Create Passive Reservation API Reference

POST

book/reservations/passive

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: Hotel APIs Guide, Hotel Workflow Diagram

Create Passive Reservation creates a new booking with a hotel segment booked outside the Travelport GDS, called a passive segment. This allows the booking to include complete travel details.

Passive hotel segments are confirmed with a status code of MK, which is returned in the response in Receipt/OfferStatus/code. A status code of AK is used for placeholder-only passive segments.

A passive hotel segment is any segment that is booked using anything other than the JSON APIs, or another product that uses the Travelport GDS. Passive segments are informational only. They do not result in a reservation or a change in inventory. Information on a passive segment is not received from or passed to the hotel supplier. Instead, passive segments provide a way to consolidate all booking information, including details from direct hotel bookings or even phone reservations. See the Passive Segments Guide for full details.

Request

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

Query Parameters

None.

Request Body

For an example of an associated terminal entry, refer to the Passive Hotel Guide.

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.

ReservationDetail*

Top level object for the request. Includes the Offer, Traveler, FormOfPayment, Payment, Receipt, and ReservationComment objects.


Offer*

Top level object for reservation details. Send with @type value Offer.

Only one Offer object is allowed, containing information for one hotel segment.

Includes Product, Price, and TermsAndConditionsFullobjects.


Product*

Details about the property, dates, and number of guests. Send with @type value ProductHospitality.

Includes PropertyAddress, guests, GuestCounts, PropertyKey, and DateRange objects.

Quantity : Integer. The number of rooms requested; 1-9 inclusive supported. If not provided, default quantity is 1. The terminal equivalent is MK1.

passiveBookingReasonCode* : String. Character representing the reason for creating a passive segment. Value is stored in /BC- parameter.

Supported values and meanings:

  • G: Group booking

  • H: Property not listed

  • I: Internet only rate

  • N: Multi-level rate not offered (negotiated/corporate rate)

  • P: Package or Tour rate not offered

  • R: Rate not offered

  • U: Property sold out

  • V: Government rate not offered

bookingCode*: String. Booking code returned in the provider system. Value is stored in /R- parameter.

propertyName* if PropertyKey not sent: String. Name of property. If not sending the property ID (PropertyKey/propertyCode), send both the full property address (Product/PropertyAddress) and propertyName.

If both propertyCode and the property address and name are sent, propertyCode takes precedence.

Value is stored in /N- parameter.

associatedCityCode: String. IATA city code associated with property.


PropertyAddress* if PropertyKey not sent.

Object for address details. @type is required.

If not sending the property ID (PropertyKey/propertyCode), send the PropertyAddress and property name (Product/propertyName).

If both propertyCode and the property address and name are sent, propertyCode takes precedence.

AddressLine* if PropertyKey not sent: Array of strings. Street address of the hotel property. Value is stored in the /W- parameter.

City* if PropertyKey not sent: String. City where property is located. Value is stored in the /W- parameter.

StateProv: Object for state or province.

value : String. State or province code where property is located. Value is stored in the /W- parameter.

Country: Object for country where property is located.

value: String. Country code where property is located. Value is stored in the /W- parameter.

PostalCode: String. Postal code where property is located. Value is stored in the /W- parameter.


guests

Integer. An attribute of Product. Total number of guests. Numeric values 1-9 inclusive supported. Default is 1. Values in GuestCounts supersede value in guests.

If only Product/guests is sent, adults are implied. It is recommended that you use GuestCounts for clarity and flexibility.

Value is stored in the /EX- parameter.


GuestCounts* if children are part of the request or if Product/guests is not included.

Top level object. Either Offer/Product/guests or Offer/Product/GuestCounts is required. Children can be specified only with GuestCounts.

It is recommended that you use GuestCounts for clarity and flexibility.

Includes GuestCount object.


GuestCount* if children are part of the request.

Array of qualifying codes and ages.

count* if children are part of the request: Integer. The number of guests in one AgeQualifyingCode.

If adult, value is stored in the /EX- parameter. If child, value is stored in the /EC- parameter.

ageQualifyingCode* if children are part of the request: String. Required only for children or if traveler age is relevant, such as for a senior discount.

Supported values and meanings:

  • 10: Traveler in this GuestCount is an adult

  • 8: Traveler in this GuestCount is a child

age* for the children in the request: Integer. Age of traveler. Required only when request includes a child in room.

To specify multiple children with different ages, send an elements for each age. If you send one element with multiple children, the age value applies to all children.


DateRange*

Reservation date range.

start*: String. Check-in date in YYYY-MM-DD format.

end*: String. Check-out date in YYYY-MM-DD format.


PropertyKey* if not sending property name and address.

Object for Travelport Property ID information.

chainCode: String. Two-character Travelport chain code to book.

propertyCode* if not sending property name and address: String. Travelport property code of the property within the hotel chain.

Send either the propertyCode or both the property address and property name to specify the hotel.

If both propertyCode and the property address (Product/PropertyAddress) and (Product/propertyName) name are sent, propertyCode takes precedence.

If the combination of chainCode and propertyCode cannot be found, the request will fail.

Value is stored in the /P- parameter.


Price*

Top level object for price information. Send with @type of Price or PriceDetail.

Includes CurrencyCode and PriceBreakdown objects.

TotalPrice*: Decimal number. Total price of room for the entire stay. Value is stored in the rate quote (/RQ-) parameter.

Base: Decimal number. Base price of room rate, not including taxes and/or fees.


CurrencyCode*

Top level object.

decimalPlace*: Integer. Number of decimal places for the currency code.

value*: String. Three-character currency code. Value is stored in the /RQ- parameter.


PriceBreakdown* if using commission.

Object describing breakdown components of the rate price. Includes Commission and Amount objects.

roomPricingType* if using commission: String. Describes the complete stay details.

Supported values:

  • Per stay

  • Per person

  • Per night

  • Per person per night

  • Per use


Commission

Object describing commission type (Percent or Amount) and value.

Application: String. Describes the presence of a commission. Supported value: Commissionable

Percent: Integer. Percent value of commission. Value is stored in /CM- parameter.


Amount

Object describing the currency amount of the commission.

value: Decimal number. Amount of commission. Value is stored in /CM- parameter.

code: String. Currency code of commission.


TermsAndConditionsFull

Object for the rules applied to this rate. Includes the ProductRateCodeInfo object.


ProductRateCodeInfo

Object for describing a rate descriptor Includes RateCodeInfo object.


RateCodeInfo

Object for describing a rate code associated with this rate

rateID: String. Used to represent a Corporate Discount number associated with this rate.

Value is stored in /CD- parameter.


Traveler object

Traveler*

Traveler details. Includes PersonName, Telephone, and Email objects.


PersonName*

Traveler details.

Travelport+ limits the combination of Given and Surname to 22 characters. Given name must have at least one character. PersonName values exceeding 22 characters are truncated in the response.

Given*: String. Traveler first name. Value is stored in /NM- parameter.

Surname*: String. Traveler last name. Value is stored in /NM- parameter.

Title: String. Salutation or honorific (e.g., Mr., Mrs., Ms., Miss, Dr.)


Telephone

Traveler telephone details. The schema does not require Telephone. However, some business rules may require telephone information.

countryAccessCode: String. Phone country code.

phoneNumber*  if sending Telephone: String. Phone number.

areaCityCode: String. Phone local area code.

cityCode: String. Phone city code.


Email

Traveler email address.

value: String. Traveler email address.


FormOfPayment object

FormOfPayment

Top level object for form of payment details. Includes PaymentCard object.


PaymentCard* if using FormOfPayment.

Form of payment details. Includes CardNumber and SeriesCode objects. Values is stored in the /G- parameter.

expireDate* if using FormOfPayment: String. Credit card expiration date in MMYY format.

CardType: String. Type of card. Supported values: 

  • Credit

  • Debit

  • Gift

CardCode* if using FormOfPayment: String. Two-character code for the type of credit card.

CardHolderName: String. Name on credit card.


CardNumber* if using FormOfPayment: Card number details.

PlainText* if using FormOfPayment: String. Credit card number.


SeriesCode

Security code of card.

PlainText: String. The credit card three- or four-digit CVV code


Payment object

Payment*

Top level object for payment details. The payment object is used to explicitly denote the amount expected to be charged for the hotel reservation in this style:

  • For Prepay Required rates, the full total amount is used. This amount will be charged to the credit card on this transaction. Indicators should be set as: depositInd = true; guaranteeInd = false.

  • For Deposit Required rates, the deposit amount is used. This amount will be charged to the credit card on this transaction. Indicators should be set as: depositInd = true; guaranteeInd = false.

  • For Guarantee Required rates, the full total amount is used. This amount is expected to be charged to the credit card at check in. Indicators should be set as: depositInd = false; guaranteeInd = true.

These indicators are for informational purposes only. No credit card is charged.

Includes Amount object.

id: String. Customer-assigned identifier for the payment.

PaymentRef: String. Customer-assigned name for the payment.

depositInd* : Boolean (true/false). If set to true, form of payment will be stored in /D- parameter.

This flag is for informational purposes only. No credit card is charged.

guaranteeInd* : Boolean (true/false). If set to true, form of payment will be stored in the /G- parameter.

This flag is for informational purposes only. No credit card is charged.

Amount

Amount of payment.

code: String. Currency code.

value: Decimal number. Amount to pay.


Receipt object

Receipt*

Top level object for confirmation details. Includes Confirmation object.


Confirmation*

Confirmation details. Includes ConfirmationStatus and Locator objects.


ConfirmationStatus

Status of confirmation.

Status: String. Status associated to the sold hotel segment. Supported value: Confirmed


Locator*: The supplier confirmation number.

locatorType*: String. Supported value: Confirmation Number.

source: String. Content source. Supplier chain code.

sourceContext*: String. Supported value: Supplier.

value*: String. The supplier confirmation number from the booking system.


Optional objects - Comment

ReservationComment

Optional top level object used for special instruction remarks. Values are stored in the /SI- parameter. Information sent is a request only and is not guaranteed. Includes Comment object.

commentSource* : String. Originator of comment. Supported values:

  • Agency

  • Supplier

  • Traveler

shareWith* : String. Designates visibility of remark. Supported values: 

  • Agency

  • Supplier

  • Traveler


Comment* 

Array of name/value pairs.

name* : String. Type of remark.

  • Special instruction remarks: SI

  • Value is stored in the /SI- parameter.

value* : String. Remark text. Limits:

Special instruction remarks: 50-character limit

 

Example request body

{
 "ReservationDetail": {
  "Offer": [
   {
    "@type": "Offer",
    "Product": [
     {
      "@type": "ProductHospitality",
      "Quantity": 1,
      "passiveBookingReasonCode": "G",
      "bookingCode": "AAA1234567",
      "propertyName": "Hilton Denver",
      "PropertyAddress": {
       "AddressLine": [
        "1001 A Havana street"
       ],
       "City": "Denver",
       "StateProv": {
        "value": "CO"
       },
       "Country": {
        "value": "US"
       },
       "PostalCode": "84188"
      },
      "GuestCounts": {
       "@type": "GuestCounts",
       "GuestCount": [
        {
         "ageQualifyingCode": "10",
         "count": 2,
         "@type": "GuestCount"
        },
        {
         "ageQualifyingCode": "8",
         "count": 1,
         "age": 4,
         "@type": "GuestCount"
        },
        {
         "ageQualifyingCode": "8",
         "count": 1,
         "age": 6,
         "@type": "GuestCount"
        }
       ]
      },
      "DateRange": {
       "start": "2026-01-10",
       "end": "2026-01-11"
      }
     }
    ],
    "Price": {
     "@type": "PriceDetail",
     "CurrencyCode": {
      "value": "USD",
      "decimalPlace": 2
     },
     "TotalPrice": 200.55,
     "Base": 190.3,
     "PriceBreakdown": [
      {
       "type": "PriceBreakdownHospitality",
       "roomPricingType": "Per stay",
       "Commission": {
        "@type": "CommissionPercent",
        "application": "Commissionable",
        "Percent": 10
       }
      }
     ]
    },
    "TermsAndConditionsFull": [
     {
      "type": "TermsAndConditionsFullHospitality",
      "ProductRateCodeInfo": [
       {
        "RateCodeInfo": {
         "rateID": "8888444"
        }
       }
      ]
     }
    ]
   }
  ],
  "Traveler": [
   {
    "@type": "Traveler",
    "PersonName": {
     "@type": "PersonName",
     "Given": "Smart",
     "Surname": "Traveler",
     "Title": "Mr"
    },
    "Telephone": [
     {
      "@type": "TelephoneDetail",
      "countryAccessCode": "91",
      "areaCityCode": "011",
      "phoneNumber": "9891766469",
      "cityCode": "DL"
     }
    ],
    "Email": [
     {
      "value": "traveler@mail.com"
     }
    ]
   }
  ],
  "FormOfPayment": [
   {
    "@type": "FormOfPaymentPaymentCard",
    "PaymentCard": {
     "@type": "PaymentCardDetail",
     "expireDate": "0826",
     "CardCode": "VI",
     "CardNumber": {
      "@type": "CardNumber",
      "PlainText": "4111111111111111"
     }
    }
   }
  ],
  "Payment": [
   {
    "@type": "Payment",
    "Amount": {
     "code": "KRW",
     "value": 844.97
    },
    "guaranteeInd": false,
    "depositInd": true
   }
  ],
  "Receipt": [
   {
    "@type": "ReceiptConfirmation",
    "Confirmation": {
     "@type": "ConfirmationHold",
     "Locator": {
      "value": "1111AAA",
      "locatorType": "Confirmation Number",
      "sourceContext": "Supplier"
     }
    }
   }
  ]
 }
} 

Response

The responses for the Create and Modify Passive Reservation are the same, returning the details sent in the request.

Response Body

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.


Offer

Top level object for offer details. Properties:

id: System-generated offer identifier

Includes Identifier object and, detailed below, Product, Price, and TermsAndConditionsFull objects.


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 value is:

  • TVPT: Travelport

value: Reference offer ID value.


Traveler

Traveler details. See details below.


TravelerProduct

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


Receipt

Top level object for confirmation details. See details below.


ReservationComment

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










 

Example

{
 "ReservationResponse": {
  "Reservation": {
   "@type": "ReservationDetail",
   "Offer": [
    {
     "@type": "Offer",
     "id": "O1",
     "Identifier": {
      "value": "87f801b8-25ab-4100-bb38-0dfff019e589",
      "authority": "TVPT"
     },
     "Product": [
      {
       "@type": "ProductHospitality",
       "Quantity": 1,
       "bookingCode": "AAA1234567",
       "passiveBookingReasonCode": "G",
       "guests": 4,
       "propertyName": "Hilton Denver",
       "associatedCityCode": "HDQ",
       "PropertyAddress": {
        "@type": "Address",
        "AddressLine": [
         "1001 A Havana street"
        ],
        "City": "Denver",
        "StateProv": {
         "value": "CO"
        },
        "Country": {
         "value": "US"
        },
        "PostalCode": "84188"
       },
       "GuestCounts": {
        "GuestCount": [
         {
          "age": 4,
          "count": 1,
          "ageQualifyingCode": "8"
         },
         {
          "age": 6,
          "count": 1,
          "ageQualifyingCode": "8"
         },
         {
          "count": 2,
          "ageQualifyingCode": "10"
         }
        ]
       },
       "PropertyKey": {
        "@type": "PropertyKey"
       },
       "TravelerContact": {
        "@type": "TravelerContact",
        "Email": {
         "value": "traveler@mail.com"
        },
        "Telephone": {
         "@type": "Telephone",
         "countryAccessCode": "91",
         "areaCityCode": "011",
         "phoneNumber": "9891766469",
         "cityCode": "DL"
        }
       },
       "DateRange": {
        "start": "2026-01-10",
        "end": "2026-01-11"
       }
      }
     ],
     "Price": {
      "@type": "PriceDetail",
      "CurrencyCode": {
       "value": "USD",
       "decimalPlace": 2
      },
      "Base": 190.3,
      "TotalPrice": 200.55,
      "PriceBreakdown": [
       {
        "@type": "PriceBreakdownHospitality",
        "Amount": {
         "@type": "Amount",
         "CurrencyCode": {
          "value": "USD",
          "decimalPlace": 2
         },
         "Base": 190.3,
         "Total": 200.55
        },
        "Commission": {
         "@type": "CommissionPercent",
         "application": "Commissionable",
         "Percent": 10
        },
        "roomPricingType": "Per stay"
       }
      ]
     },
     "TermsAndConditionsFull": [
      {
       "@type": "TermsAndConditionsFullHospitality",
       "Guarantee": [
        {
         "@type": "Guarantee",
         "guaranteeType": "DepositRequired"
        }
       ],
       "ProductRateCodeInfo": [
        {
         "RateCodeInfo": {
          "rateID": "8888444"
         }
        }
       ]
      }
     ],
     "passiveOfferInd": true
    }
   ],
   "Traveler": [
    {
     "@type": "Traveler",
     "id": "T1",
     "PersonName": {
      "@type": "PersonName",
      "Given": "Smart",
      "Surname": "Traveler"
     },
     "Telephone": [
      {
       "@type": "Telephone",
       "countryAccessCode": "91",
       "areaCityCode": "011",
       "phoneNumber": "9891766469",
       "cityCode": "DL"
      }
     ],
     "Email": [
      {
       "value": "traveler@mail.com"
      }
     ]
    }
   ],
   "TravelerProduct": [
    {
     "@type": "TravelerProduct",
     "TravelerRef": "T1",
     "OfferRef": "O1"
    }
   ],
   "FormOfPayment": [
    {
     "@type": "FormOfPaymentPaymentCard",
     "id": "FOP1",
     "PaymentCard": {
      "@type": "PaymentCard",
      "expireDate": "0826",
      "CardCode": "VI",
      "CardNumber": {
       "@type": "CardNumber",
       "PlainText": "************1111"
      }
     }
    }
   ],
   "Payment": [
    {
     "@type": "Payment",
     "Amount": {
      "value": 844.97,
      "code": "KRW"
     },
     "FormOfPaymentIdentifier": {
      "Identifier": {
       "value": "FOP1"
      }
     },
     "OfferIdentifier": [
      {
       "Identifier": {
        "value": "O1"
       }
      }
     ]
    }
   ],
   "Receipt": [
    {
     "@type": "ReceiptConfirmation",
     "OfferRef": [
      "O1"
     ],
     "Confirmation": {
      "@type": "ConfirmationHold",
      "Locator": {
       "value": "1111AAA",
       "locatorType": "Confirmation Number",
       "sourceContext": "Supplier"
      },
      "OfferStatus": {
       "@type": "OfferStatusHospitality",
       "code": "MK",
       "Status": "Confirmed"
      }
     }
    },
    {
     "@type": "ReceiptConfirmation",
     "Confirmation": {
      "@type": "ConfirmationHold",
      "Locator": {
       "value": "D6VL3F",
       "locatorType": "PNR Locator",
       "sourceContext": "Travelport"
      },
      "OfferStatus": {
       "@type": "OfferStatusHospitality",
       "Status": "Confirmed"
      }
     }
    }
   ]
  },
  "traceId": "3a69daf6-1c0a-4367-ad85-1b5121e21a5e"
 }
}