Skip to main content

Endpoint

POST /api/search
Alternative TGX-shaped endpoint:
POST /api/search/tgx

Authentication

  • Required header: api-key: <partner-api-key>
  • Required body field: settings.access.code

Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
api-keyYesPartner API key
connection-codeOptionalAuto-filled from settings.access.code
session-idOptionalAuto-generated if missing

Request Body

Top-level fields

FieldTypeRequiredNotes
searchCriteriaobjectYesSearch input details
settingsobjectYesConnection access + business rules
filtersobjectNoOptional filtering controls
distributionContextobjectNoOptional distribution metadata
listingbooleanNoDefault false
requestFromPortalbooleanNoDefault false

searchCriteria fields

FieldTypeRequiredNotes
destinations.accommodations[]arrayYesDestination list (at least one accommodation code)
destinations.accommodations[].typestringNoDefault Hotel
destinations.accommodations[].codestringYesAccommodation ID
occupancies[]arrayYesRoom occupancies
occupancies[].occupancyIdnumberNoOptional reference ID
occupancies[].paxes[]arrayYesGuests in occupancy
occupancies[].paxes[].agenumberYesGuest age
occupancies[].paxes[].nationalitystringNoISO country code
geo.latnumberNoGeo search latitude
geo.lngnumberNoGeo search longitude
geo.radiusKmnumberNoGeo search radius in km
markets[]string[]NoMarket codes
checkInstringYesYYYY-MM-DD
checkOutstringYesYYYY-MM-DD
languagestringNoLanguage code
currencystringNoCurrency code
nationalitystringNoNationality code

settings fields

FieldTypeRequiredNotes
access.codenumberYesPartner connection code
access.userstringNoReserved
access.passwordstringNoReserved
access.apiKeystringNoReserved
access.urlsobjectNoReserved (book/search/quote/generic)
access.parametersobjectNoReserved key-value map
businessRules.optionsQuotanumberNo>=1
businessRules.businessRuleTypestringNoCHEAPEST or DEFAULT
supplierstringNoReserved
platformstringNoReserved
clientstringNoReserved
timeoutstringNoUpstream timeout hint
includeProviderTransactionsbooleanNoReserved

filters fields

FieldTypeRequiredNotes
status.includes[]string[]NoInclude statuses
status.excludes[]string[]NoExclude statuses
rateRuleFilter.includes[]string[]NoInclude rate rules
rateRuleFilter.excludes[]string[]NoExclude rate rules
rateRuleFilter.includeEmptyRateRulesOptionsbooleanNoInclude options with empty rate rules

distributionContext fields (top-level)

FieldTypeRequiredNotes
customerobjectNoDevice/user/location context
salesChannelstringNoWEB / APP / OFFLINE
distributionModestringNoCUSTOMER / REDISTRIBUTION
supportedVisibilityTypes[]string[]NoPUBLIC / PACKAGE / OPAQUE_PROPERTY
Full shared object details: /api-reference/models/common-objects.

Example Request

{
  "searchCriteria": {
    "destinations": {
      "accommodations": [
        { "type": "Hotel", "code": "6475503709317edd78e1dbd9" }
      ]
    },
    "occupancies": [
      {
        "occupancyId": 1,
        "paxes": [
          { "age": 30, "nationality": "US" },
          { "age": 28, "nationality": "US" }
        ]
      }
    ],
    "checkIn": "2026-03-01",
    "checkOut": "2026-03-03",
    "language": "EN",
    "currency": "USD",
    "nationality": "US"
  },
  "settings": {
    "access": { "code": 10001 },
    "businessRules": { "businessRuleType": "DEFAULT", "optionsQuota": 10 }
  }
}

Success Response

POST /api/search returns flattened options per accommodation (current default implementation):
{
  "data": {
    "accommodations": [
      {
        "accommodationCode": "6475503709317edd78e1dbd9",
        "accommodationName": "Comfort Inn & Suites",
        "accommodationType": "Hotel",
        "location": {
          "country": "US",
          "longitude": -81.90058,
          "latitude": 41.41568
        },
        "options": [
          {
            "id": "177f8ec3-6d98-4a2f-8567-5c45eddb0ead",
            "boardCode": "RO",
            "boardName": "Room Only",
            "isRefundable": true,
            "rate": {
              "currency": "USD",
              "baseRate": 120.0,
              "taxesAndFees": 18.5,
              "chargeTotal": 138.5
            },
            "cancelPolicy": {
              "refundable": true,
              "cancelPenalties": [
                {
                  "penaltyType": "IMPORT",
                  "currency": "USD",
                  "deadline": "2026-02-28T23:59:59Z",
                  "value": 50
                }
              ]
            },
            "rooms": [
              {
                "occupancyRefId": 1,
                "code": "DBL",
                "description": "Double Room",
                "rate": {
                  "currency": "USD",
                  "baseRate": 120.0,
                  "taxesAndFees": 18.5,
                  "chargeTotal": 138.5
                }
              }
            ]
          }
        ]
      }
    ],
    "requestId": "req_search_64f5..._1739260000000_83915",
    "responseTime": 132
  },
  "message": "success"
}

Response Field Map

FieldTypeNotes
data.accommodations[]arrayAccommodation list
data.accommodations[].accommodationCodestringAccommodation ID
data.accommodations[].accommodationNamestringAccommodation name
data.accommodations[].accommodationTypestringUsually Hotel
data.accommodations[].locationobjectCountry/geo info
data.accommodations[].options[]arrayAvailable options
data.accommodations[].options[].idstringOption reference (optionId) for quote
data.accommodations[].options[].boardCodestringBoard code
data.accommodations[].options[].boardNamestringBoard label
data.accommodations[].options[].isRefundablebooleanRefundability flag
data.accommodations[].options[].rateobjectOption-level price block
data.accommodations[].options[].cancelPolicyobjectCancellation policy
data.accommodations[].options[].rooms[]arrayRoom-level details
data.requestIdstringTrace ID
data.responseTimenumberMilliseconds
messagestringAlways success for success

Rate Limit Headers

/search includes:
  • X-RateLimit-Limit
  • X-RateLimit-Remaining
  • X-RateLimit-Reset
  • Retry-After when limited (429)

Common Errors

  • 400 Invalid connection code
  • 400 No connection
  • 401 API key is required
  • 401 Invalid API key
  • 401 Connection not found
  • 401 Connection access denied
  • 429 Rate limit exceeded