---
title: "Hub Samples"
method: POST
path: "/agent-hotels/destinations/hub-samples"
tags: ["agent-hotels"]
---

# Hub Samples

`POST /agent-hotels/destinations/hub-samples`

## 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/agent-hotels/destinations/hub-samples`
- Auth: none declared

The best recent stay of every published place, for the destinations hub.

One catalog read for the whole hub instead of one per city: until Oct
2026 the hub fanned out 845 reads an hour against the shared limit of 300
a minute, so two thirds were refused and most of the hub went unpriced. A
read of the shared price ledger; it never starts supplier pricing. Cached
an hour, the hub's own cadence, and the ids are sorted so the same hub
always makes the same cache entry.

## Request body

- HotelHubSamplesRequest: The hub's one read: which published places, how far back, how many each.
  - `destinations` string[], required
  - `max_age_days` integer
  - `per_destination` integer

## Response `200`

Successful Response

- HotelHubSamples: The best recent stay of every published place; one read of the rate ledger. The hotel destinations hub shows one line per city: its biggest recent saving, else its cheapest recent stay. Until Oct 2026 it read every city's samples one by one, 845 catalog reads an hour against a limit shared with real traffic of 300 a minute, so two thirds were refused and most of the hub went unpriced. Each entry carries the place's biggest savings and its cheapest stays per night, future check-ins only, so the page can still choose when it drops a row it cannot show. A place with no public comparison in the window has no entry. Photos are not read; the hub shows none. Nothing here starts a supplier search.
  - `destinations` HotelHubSamplesEntry[]
    - `destination` HotelCatalogDestination, required
      - `id` string, required
      - `name` string, required
      - `country` string, required
      - `parent_id` string, nullable
      - `has_areas` boolean
      - `scope` string, nullable
      - `aliases` string[]
      - `hotel_count` integer, nullable
    - `samples` HotelStaySample[]
      - `hotel` HotelStaySampleHotel, required
        - `id` integer, required
        - `name` string, required
        - `city` string, nullable
        - `country` string, nullable
        - `stars` number, nullable
        - `chain` string, nullable
        - `photo` string, nullable
      - `stay` HotelStaySampleStay, required
        - `check_in` string, date, required
        - `check_out` string, date, required
        - `nights` integer, required
        - `adults` integer, required
        - `rooms` integer, required
      - `axel` HotelStaySampleAxel, required
        - `total` number, required
        - `currency` string
        - `nightly` number, nullable
        - `fees_at_property` number, nullable
        - `room_name` string, nullable
        - `is_refundable` boolean, nullable
        - `source` string, required
        - `observed_at` string, date-time, required
      - `public` HotelStaySamplePublic
        - `total` number, required
        - `source` string, required
        - `observed_at` string, date-time, required
      - `saving` HotelStaySampleSaving
        - `amount` number, required
        - `percent` number, required
  - `observed_window_days` integer, required
  - `generated_at` string, date-time, required

## Other responses

- `422`: Validation Error

## Changes

> 103 revisions in range; 1 not diffed.

- **2026-10-27** `c1ee1778803e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/agent-hotels/destinations/hub-samples/post.md)

---

[API](https://skmtc.dev/helloaxel/apis/client-api-gateway.md) - [All operations](https://skmtc.dev/helloaxel/apis/client-api-gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/helloaxel/apis/client-api-gateway/revisions/2d3c427963a4?raw)
