directrate

Modes

Calendar — POST /calendar

One hotel × up to 60 forward check-in dates → the lowest cash, member and points per night.

Request

{ "chain": "choice", "hotel_code": "IL263", "start": "2026-11-10", "days": 7, "los": 1 }
Field Type Notes
chain, hotel_code as /shop
start YYYY-MM-DD first check-in date
days int 1–60 nights to price; default 30
los int 1–7 length of stay per night; default 1 — the native calendars price single nights
occupancy, currency, max_age as /shop; max_age is judged by the oldest night served from cache

Response

CalendarResponse: nights[], each { date, status, min_los, lowest { bar, member, bar_after_tax, member_after_tax }, lowest_points, currency, source, cache_age_sec }, plus the hotel and the window. lowest_points is the copay-free award for that night.

{ "nights": [
  { "date": "2026-11-10", "status": "available", "lowest": { "bar": 126.95, "member": 114.26 }, "lowest_points": 20000, "source": "live" },
  { "date": "2026-11-12", "status": "available", "lowest": { "bar": 119.6 }, "lowest_points": 12000, "source": "live" } ] }

Where the nights come from

Where the chain has a native date-range calendar — Marriott, Hilton, IHG, Choice, Radisson, I Prefer, Wyndham, Best Western — a los: 1 window is one or two upstream calls, so a night costs a fraction of a shop. Hyatt’s calendar carries availability and points but no cash and Meliá’s availability only: on those the open nights are shopped singly and the closed ones are not. Premier Inn has no calendar endpoint; its window is built from ≤9-night span prices, billed 0.1 a night like a native one. The OTAs have no calendar: a night is a shop.

Billing

Billed the shop weight per live night; cached nights 0.25×. On native-calendar chains a night through the calendar is 0.1 credit (0.25 on Wyndham) instead of the shop weight — a 30-night IHG window is 3 credits; a Hyatt window shops its open nights (no cash on its calendar); the same window on an OTA is 30. max_age=0 shops every night live.

Larger windows

For hotels × nights × lengths of stay at scale — up to 200 hotels × 366 nights — use POST /matrix, which answers from the cell store at the cache-hit rate and queues the rest as a job; see the API reference.