Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.pageonetravel.com/llms.txt

Use this file to discover all available pages before exploring further.

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[]arrayConditionalRequired only when selector is destinations.accommodations; size 1..1000
destinations.accommodations[].typestringNoDefault Hotel
destinations.accommodations[].codestringConditionalRequired when selector is destinations.accommodations
occupancies[]arrayYesRoom occupancies
occupancies[].occupancyIdnumberNoOptional reference ID
occupancies[].paxes[]arrayYesGuests in occupancy
occupancies[].paxes[].agenumberYesGuest age
occupancies[].paxes[].nationalitystringNoISO country code
geo.latnumberConditionalRequired only when selector is geo
geo.lngnumberConditionalRequired only when selector is geo
geo.radiusKmnumberNoOptional for geo selector, range 0.1..60, default 20
geo.limitnumberNoOptional for geo selector, range 1..1000, default 1000
accommodationNamestringConditionalRequired only when selector is accommodationName; length 2..200
markets[]string[]NoMarket codes
checkInstringYesYYYY-MM-DD
checkOutstringYesYYYY-MM-DD
languagestringNoLanguage code
currencystringNoCurrency code
nationalitystringNoNationality code

Selector rule (mutually exclusive)

Exactly one selector must be present in searchCriteria:
  • destinations.accommodations[]
  • geo.lat + geo.lng (with optional geo.radiusKm, geo.limit)
  • accommodationName
If no selector is provided, or multiple selectors are combined, the API returns 400.

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; per-accommodation cap, only applied for DEFAULT
businessRules.businessRuleTypestringNoCHEAPEST or DEFAULT; defaults to DEFAULT when omitted
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 }
  }
}

Example Request (Geo selector)

{
  "searchCriteria": {
    "geo": {
      "lat": 40.7128,
      "lng": -74.006,
      "radiusKm": 20,
      "limit": 1000
    },
    "occupancies": [
      {
        "occupancyId": 1,
        "paxes": [
          { "age": 30 }
        ]
      }
    ],
    "checkIn": "2026-03-01",
    "checkOut": "2026-03-03",
    "language": "EN",
    "currency": "USD"
  },
  "settings": {
    "access": { "code": 10001 }
  }
}

Example Request (Accommodation name selector)

{
  "searchCriteria": {
    "accommodationName": "Hilton Times Square",
    "occupancies": [
      {
        "occupancyId": 1,
        "paxes": [
          { "age": 30 }
        ]
      }
    ],
    "checkIn": "2026-03-01",
    "checkOut": "2026-03-03",
    "language": "EN",
    "currency": "USD"
  },
  "settings": {
    "access": { "code": 10001 }
  }
}

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)

Business Rules Behavior

businessRules are applied per accommodation:
  • businessRuleType = CHEAPEST: returns 1 cheapest option per accommodation; optionsQuota is ignored.
  • businessRuleType = DEFAULT: returns all options per accommodation; if optionsQuota is provided, returns cheapest N options per accommodation.
  • businessRuleType omitted: treated as DEFAULT.
Behavior matrix:
InputEffect
businessRuleType=CHEAPEST, optionsQuota=10Same as CHEAPEST only: 1 option per accommodation
businessRuleType=CHEAPEST only1 cheapest option per accommodation
businessRuleType=DEFAULT, optionsQuota=10Up to 10 cheapest options per accommodation
businessRuleType=DEFAULT onlyAll options per accommodation
optionsQuota=10 onlyTreated as DEFAULT + quota, up to 10 cheapest options per accommodation
both omittedTreated as DEFAULT without quota

Common Errors

  • 400 Exactly one selector is required: destinations.accommodations, geo(lat/lng), or accommodationName
  • 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