hotel-search

Query hotels within a session.

post/hotel-search/sessions/{session_id}/query

Request

  • Base URL: https://api.helloaxel.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.helloaxel.com/hotel-search/sessions/{session_id}/query
  • Auth: HTTP bearer

Path parameters

session_idstring uuid required

Request body

read_onlyboolean
exact_pricesboolean
pricing_limitinteger
pricing_total_limitinteger nullable
compare_pricesboolean
zoom_levelinteger nullable

Density hint for clustering. When provided, the server groups nearby hotels into clusters at a resolution derived from this value. When absent, no clustering — returns a flat ranked list.

cluster_thresholdinteger nullable

Minimum hotels in an H3 cell to form a cluster (default 9). Hotels in cells with fewer are returned as individual pins.

sort'relevance' | 'price' | 'star_rating' | 'review_score' | 'distance'

How to order hotel results in the list/map view.

Example request

{
  "filters": {
    "amenities": [
      "wifi",
      "pool"
    ],
    "max_price_per_night": {
      "amount": 30000,
      "currency": "USD"
    },
    "max_star_rating": 4,
    "min_price_per_night": {
      "amount": 10000,
      "currency": "USD"
    },
    "min_review_score": 7.5,
    "min_star_rating": 3,
    "refundable_only": false
  }
}

Response

Successful Response

pricing_started_atstring date-time nullable
query_idstring required
payment_requirement'pay_now' nullable

Backend-required payment timing. pay_now requires full payment at booking; null preserves ordinary rate rules.

session_idstring uuid required
check_instring date required
check_outstring date required
nightsinteger required
criteria_hashstring required
total_in_areainteger required
pricing_status'pending' | 'in_progress' | 'complete' required

Tracks where we are in the live pricing lifecycle for a query.

Client polls the query endpoint and checks this to know when to stop.

hotels_pricedinteger
hotels_unavailableinteger
pricing_pool_sizeinteger
pricing_requested_countinteger
hotels_with_compare_priceinteger
retry_after_msinteger nullable
unavailable_hotel_idsinteger[]
unmatched_hotel_idsinteger[]

No rate matching the active breakfast requirement was returned; not a sold-out claim

Example response

{
  "guests": {
    "rooms": [
      {
        "adults": 2,
        "children": [
          {
            "age": 5
          }
        ]
      }
    ]
  },
  "filters": {
    "amenities": [
      "wifi",
      "pool"
    ],
    "max_price_per_night": {
      "amount": 30000,
      "currency": "USD"
    },
    "max_star_rating": 4,
    "min_price_per_night": {
      "amount": 10000,
      "currency": "USD"
    },
    "min_review_score": 7.5,
    "min_star_rating": 3,
    "refundable_only": false
  },
  "criteria": {
    "guests": {
      "rooms": [
        {
          "adults": 2,
          "children": [
            {
              "age": 5
            }
          ]
        }
      ]
    }
  }
}

Changes

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the optional property to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status