Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.
/api/v1/ratesGET
Get all reference rates with current prices
Authorization
bearerAuth *Bearer <token>
Clerk session JWT, or an API key (the ak_ prefix), sent as a Bearer token or an ?api_key= query parameter. Each endpoint requires the read scope for its resource (e.g. org:rates:read for rates). Token in: header
Query Parameters
start?string (date-time)
end?string (date-time)
page?integer
Default: 1
per_page?integer
Default: 100Max: 500
Response
200 · List of rates
data?object[]
Show item properties
rate_id?string
Stable identifier for the reference rate (for example adj_redp). Use it as the {id} path parameter on the rate detail and price endpoints.
name?string
Full display name of the reference rate.
methodology?string
How the rate blends its source market prices into a single value: volume_weighted_average, simple_average, or median.
sources_count?integer
Number of source markets configured for this rate. For a rolling rate this can differ from the number of entries in sources, which lists only the markets behind the latest computed value.
latest_price?numbernull
Most recent rate value on the 0-100 scale, where 52.4 means 52.4 percent. Omitted when the rate has no computed value yet.
spread?numbernull
Dispersion across the rate's source markets at the latest computed value: the highest source price minus the lowest, in points on the 0-100 scale. This is a measure of source disagreement, not a bid/ask spread.
previous_close_1d?numbernull
The rate value at the previous daily close, meaning the last completed daily close before the current day in US Eastern time, not a rolling 24-hour window.
sources?object[]
Source markets feeding the rate. Returned by GET /api/v1/public/rates so clients can resolve a market's rates in one call; absent on the authenticated paginated list.
Show item properties
market_id?string
Identifier of the source market, prefixed with its venue (for example kalshi:KXPRESPARTY-2028-R). Use it to look the market up on the markets endpoints.
display_ticker?string
Human-readable market label — Polymarket market slug when present, else the raw ticker.
platform?string
Venue the source market trades on, lowercase: kalshi or polymarket. Identical on both tiers.
weight?number
This market's share of the rate value at the latest computed value, as a fraction. Weights across sources are normalized to sum to 1, so a two-market equal blend reads 0.5 each and a rolling rate part-way through a roll shows fractional shares.
question?stringnull
The source market's question text. Omitted when no question is available for the market.
latest_price?numbernull
The source market's price as it entered the latest computed rate value, on the 0-100 scale. This is the price the rate actually used, which can lag the market's current price.
end_date?string,null (date-time)
When the source market's contract expires or settles. Omitted when the market has no end date.
is_active?booleannull
Whether the source market's contract is still open, derived from end_date at read time. A source with no end date is open-ended and reports true. Identical on both tiers.
meta?object
Show properties
total?integer
Total number of records matching the request across every page, not just the number returned in this one.
page?integer
The 1-based page number this response covers.
per_page?integer
Maximum number of items on a page. The last page may hold fewer.
total_pages?integer
Number of pages available at this per_page. It is at least 1, even when nothing matched.
has_next?boolean
True when a page exists after this one.
has_prev?boolean
True when this is not the first page.
403 · The organization has no paid plan, so the realtime read scopes are refused. Distinct from a 429, which means a plan's budget ran out: nothing here resets on a timer, and the request succeeds only once the organization holds a plan.
error *string
Human-readable reason the request was refused.
status *integer
HTTP status code, repeated in the body.
upgrade_url?string (uri)
Page listing the plans and their request allowances, for buying access. Absent when no plan is available for purchase.
429 · The paid organization's minute or UTC-day request budget is exhausted.
error *"rate_limited"
Always rate_limited. Branch on this to detect a throttled request.
limit *"rpm" | "daily"
Which limit was hit: rpm for the per-minute cap or daily for the daily one.
message *string
Human-readable explanation naming the limit that was exceeded.
upgrade_url?string (uri)
Page listing the plans and their request allowances, for buying a larger budget. Absent when no plan is available for purchase.
Request example
curl -X GET "https://api.adjacent.markets/api/v1/rates" \ -H "Authorization: Bearer <token>"
Response example
{ "data": [ { "rate_id": "adj_bluh", "name": "Democratic House", "methodology": "simple_average", "sources_count": 1, "latest_price": 77.5, "spread": 0 }, { "rate_id": "adj_blup", "name": "Adjacent Democratic President", "methodology": "simple_average", "sources_count": 2, "latest_price": 58.5, "spread": 0 } ], "meta": { "total": 6, "page": 1, "per_page": 20, "total_pages": 1, "has_next": false, "has_prev": false } }