directrate

Modes

Stay — POST /stay

A 2–14 night stay shopped as one, each night priced alone, and whether a split booking is cheaper — or even allowed.

Request

{ "chain": "choice", "hotel_code": "IL263", "checkin": "2026-11-10", "los": 3 }

los is 2 to 14. occupancy, currency and max_age as /shop.

Response

StayResponse:

  • stay — the los-night shop: status, min_los, lowest (nightly figures, averaged where the chain prices nights differently), lowest_points, rates, source.
  • nights[] — each night priced on its own, as /calendar at los: 1, with min_los where the chain states one.
  • totals — stay_bar (stay × los, native basis) against nightly_bar (the nights added up; null when any night lacks a public rate), the same for member and after tax.
  • split — bookable (every night available alone with no minimum stay above 1), blocked_nights[] with the reason, cheaper (stay / nightly / equal), saving (positive when night-by-night wins), saving_pct.
  • credits { stay, nights }.
{ "totals": { "stay_bar": 317.04, "nightly_bar": 373, "stay_member": 285.33, "nightly_member": 354.35 },
  "split": { "bookable": true, "blocked_nights": [], "cheaper": "stay", "saving": -55.96, "saving_pct": -17.65 },
  "credits": { "stay": 1, "nights": 0.3 } }

A hotel with a minimum stay on Saturday will not sell Friday alone; that night appears in blocked_nights and bookable is false.

Billing

Billed as the two calls would be: the shop weight (cached 0.25×) plus the calendar nights (0.1 per night on native-calendar chains, the shop weight per live night elsewhere), under one usage line stay. The example above cost 1.3 credits.

A caveat on Hilton

Hilton’s native calendar reports the member plan as its cash lowest, so nights[] on Hilton carry the member rate and totals.nightly_bar is null; compare on nightly_member.