directrate

Modes

Comp set — POST /compset

Up to 25 hotels of one chain × one stay → the lowest rate per hotel, in one call.

Request

{ "chain": "choice", "hotel_codes": ["IL263", "IL264", "IL265"], "checkin": "2026-11-10", "los": 1, "rates": "lowest" }
Field Type Notes
hotel_codes 1–25 codes one chain per call
rates lowest | member lowest (default): the lowest public rate, plus the member rate where the chain returns it for free. member: guarantees the lowest member rate too
checkin, los, occupancy, currency, max_age as /shop

Response

CompsetResponse.hotels[]: { code, name, status, min_los, lowest { bar, member, bar_after_tax, member_after_tax }, lowest_points, currency }. lowest.bar is always the lowest public rate; member-only rates appear under lowest.member and never collapse into bar. Every rate plan of one hotel is /shop’s job.

Native batch or fan-out

Marriott, Choice, Meliá, Radisson, Wyndham and Best Western have a native multi-hotel endpoint, so a 25-hotel comp set is about one upstream call. The others are a paced fan-out, bounded per chain so a burst never trips the source. Either way you are billed per hotel returned, not per call we made.

Billing

Billed per hotel returned at the chain’s compset rate (/chains compset_hotel_credits: 0.25 on the 1-credit chains and the OTAs, 0.5 on Radisson, Best Western and Wyndham; hotels served from cache 0.25×; error/not_found free), minimum 1 credit per call. rates: "member" adds credits per hotel only where it needs extra upstream calls (/chains compset_extras: Radisson +2.5, Wyndham +5.5, Best Western +0.5).

A 10-hotel Marriott comp set: 2.5 credits. A 3-hotel one: 1 credit, the minimum.

Award comp set

POST /compset/award — same request — returns lowest_points, lowest_points_cash, cash_copay, lowest_cash, cpp and certs per hotel; chains without award points return empty rows at 0 credit.