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

Add Passive Reservation API Reference

Put

book/reservations/{AggregatorLocatorCode}/passive

For {AggregatorLocatorCode} send the locator code returned at booking or in Reservation Retrieve in Receipt/Confirmation/Locator/value.

Hotel bookings return multiple locator codes. Send the value from the instance of Receipt with Confirmation/Locator/locatorType=PNR Locator. See Locator Codes for details.

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, Hotel Availability API Reference

Use the Add Passive Reservation request to add a passive hotel booking segment to an existing reservation.

You can add either of two types of passive segments to an existing reservation: 

  • Sending full details of the room in the request adds a single hotel segment with a status of MK (confirmed passive) to the reservation.

  • Sending only dates in the request adds a placeholder segment to the reservation. You might want to add a placeholder if you do not have all booking details. Or, you can send only dates to add a dummy or retention segment, which can be used to keep the reservation details active in the system after travel is complete, up to the dates on the passive segment. Placeholder segments return a status of AK.

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 placeholder segment (AK status)

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

The request body and example below adds a passive placeholder segment to an existing PNR, which returns a status of AK.

The Travelport+ terminal entry equivalent to create a placeholder segment is:

HTL ZZ AK1 HDQ 10NOV-OUT15NOV

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 object.


Offer*

Top level object for offer details. Includes Product object.


Product*

Array. Send one instance with the dates for the segment. Includes ProductHospitality object.


ProductHospitality*

Dates for the placeholder segment. Properties:

start: Segment start date in YYYY-MM-DD format.

end: Segment start date in YYYY-MM-DD format.

Example adds placeholder segment

{
 "ReservationDetail": {
  "Offer": [
   {
    "@type": "Offer",
    "Product": [
     {
      "@type": "ProductHospitality",
      "DateRange": {
       "start": "2025-11-10",
       "end": "2025-11-15"
      }
     }
    ]
   }
  ]
 }
}

Request body for segment with booking details (MK status)

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

The example request sends the hotel details necessary to add a hotel confirmed passive segment (status = MK) to an existing PNR (e.g., PUT https://{{baseUrl}}/11/hotel/book/reservations/D6TP0R/passive).

The tables in this section break down the Add Passive Reservation request into its top level objects to separate the information in each.

 

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 of Offer.

Includes Product, Price, and TermsAndConditionsFull object.


Product*

Details about the property, dates, and number of guests.

Send with @type value ProductHospitality.

Includes PropertyAddress, GuestCounts, PropertyKey, and DateRange objects.

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

The terminal equivalent is MK1 for a confirmed passive segment.

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

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

propertyName* if PropertyKey not sent : String. Name of property. Value is stored in /N- parameter.

associatedCityCode : String. IATA city code associated with property.


PropertyAddress* if PropertyKey not sent

Object for address details.

AddressLine* if PropertyKey not sent : String. Street address. 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

Top level object.

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* if children are part of 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 using property name and address

Object for Travelport Property ID information.

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

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

chainCode* if not using property name and address : String. Two-character Travelport chain code to book.

propertyCode* if not using property name and address : String. Travelport property code of the property within the hotel chain. Value is stored in the /P- parameter.


Price*

Top level object for price information.

Includes CurrencyCode and PriceBreakdown objects.

TotalPrice* : Number. Total price of room rate. Value is stored in the /RQ- parameter.

Base : Number. Base price of room rate.


CurrencyCode*

Top level object.

decimalPlace* : Number. 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 : Describes the complete stay details. Accepted value: Per stay


Commission

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

Application : Describes the presence of a commission. Accepted value: Commissionable

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


Amount

Object describing the currency amount of the commission.

value : Integer. 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 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*

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

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*

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*

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 adds hotel passive segment

{
 "ReservationDetail": {
  "Offer": [
   {
    "@type": "Offer",
    "Product": [
     {
      "@type": "ProductHospitality",
      "Quantity": 1,
      "passiveBookingReasonCode": "G",
      "bookingCode": "ABC123",
      "GuestCounts": {
       "@type": "GuestCounts",
       "GuestCount": [
        {
         "ageQualifyingCode": "10",
         "count": 2,
         "@type": "GuestCount"
        },
        {
         "ageQualifyingCode": "8",
         "count": 1,
         "age": 4,
         "@type": "GuestCount"
        }
       ]
      },
      "PropertyKey": {
       "chainCode": "HT",
       "propertyCode": "F5829"
      },
      "DateRange": {
       "start": "2026-03-10",
       "end": "2026-03-11"
      }
     }
    ],
    "Price": {
     "@type": "PriceDetail",
     "CurrencyCode": {
      "value": "USD",
      "decimalPlace": 2
     },
     "TotalPrice": 256,
     "Base": 200
    }
   }
  ],
  "FormOfPayment": [
   {
    "@type": "FormOfPaymentPaymentCard",
    "PaymentCard": {
     "@type": "PaymentCardDetail",
     "expireDate": "1026",
     "CardCode": "VI",
     "CardNumber": {
      "@type": "CardNumber",
      "PlainText": "1234123412341234"
     }
    }
   }
  ],
  "Payment": [
   {
    "@type": "Payment",
    "Amount": {
     "code": "USD",
     "value": 256
    },
    "guaranteeInd": true,
    "depositInd": false
   }
  ],
  "Receipt": [
   {
    "@type": "ReceiptConfirmation",
    "Confirmation": {
     "@type": "ConfirmationHold",
     "confirmationStatus": {
      "@type": "OfferStatusHospitality",
      "Status": "Confirmed"
     },
     "Locator": {
      "value": "12344DJSH ",
      "locatorType": "Confirmation Number",
      "source": "HL",
      "sourceContext": "Supplier"
     }
    }
   }
  ]
 }
}

 


Response

The response for the Add Passive Reservation request is nearly identical to the response for the Create Passive Reservation request.

See the Create Passive Reservation API Reference for the response table and examples.

The response does not return details of the existing segment/s on the reservation, only the passive segment added. When adding a segment, the offer numbering for the passive segment starts after the offer numbers currently on the reservation. For example, if the reservation already has one offer with offer id O1, the passive segment is returned with offer id O2. You can send a Reservation Retrieve to retrieve full reservation details including all segments, both active and passive.

The example response shows the Add Passive Reservation response when adding a placeholder AK segment.

Example

{
 "ReservationResponse": {
  "Reservation": {
   "@type": "ReservationDetail",
   "Offer": [
    {
     "@type": "Offer",
     "id": "O2",
     "Identifier": {
      "value": "ffcd31d9-b8bf-44ec-ad07-b2e603917d4b",
      "authority": "TVPT"
     },
     "Product": [
      {
       "@type": "ProductHospitality",
       "Quantity": 1,
       "DateRange": {
        "start": "2026-06-11",
        "end": "2026-06-12"
       }
      }
     ],
     "TermsAndConditionsFull": [
      {
       "@type": "TermsAndConditionsFullHospitality",
       "TextBlock": [
        {
         "@type": "TextBlock",
         "title": "Passive supplementary text",
         "TextFormatted": [
          {
           "value": "/H-RETENTION/R-TVPT999/BC-U/TRAVELPORT FUTURES PROJECT"
          }
         ]
        }
       ]
      }
     ],
     "passiveOfferInd": true
    }
   ],
   "Receipt": [
    {
     "@type": "ReceiptConfirmation",
     "OfferRef": [
      "O2"
     ],
     "Confirmation": {
      "@type": "ConfirmationHold",
      "OfferStatus": {
       "@type": "OfferStatusHospitality",
       "code": "AK",
       "Status": "Confirmed"
      }
     }
    },
    {
     "@type": "ReceiptConfirmation",
     "Confirmation": {
      "@type": "ConfirmationHold",
      "Locator": {
       "value": "D6VBHL",
       "locatorType": "PNR Locator",
       "sourceContext": "Travelport"
      },
      "OfferStatus": {
       "@type": "OfferStatusHospitality",
       "Status": "Confirmed"
      }
     }
    }
   ]
  },
  "traceId": "98752813-b20d-415a-bba6-898387f831cf"
 }
}