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/rates/{id}GET
Get rate with contributing sources
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
Response
200 · Rate details
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.
description?stringnull
Free-text description of the rate. Omitted for rates created without one.
methodology?string
How the rate blends its source market prices into a single value: volume_weighted_average, simple_average, or median.
sources?object[]
The source markets behind the latest computed rate value, with the normalized weights that value used, ordered by descending weight. Markets the calculation dropped (resolved or zero-weight legs) do not appear, and the list is empty until the rate has been computed at least once.
Show item properties
market_id?string
display_ticker?string
Human-readable market label — Polymarket market slug when present, else the raw ticker.
platform?string
weight?number
latest_price?numbernull
question?stringnull
end_date?string,null (date-time)
is_active?booleannull
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.
price_change_1d?numbernull
Absolute change in points on the 0-100 scale (not a percent) from the previous daily close to latest_price. The baseline is the last completed daily close before the current day in US Eastern time, not a rolling 24-hour window.
price_change_7d?numbernull
Absolute change in points on the 0-100 scale (not a percent) from the daily close seven days before the current day in US Eastern time to latest_price. Null when the rate has no daily close that far back.
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. Returned by GET /api/v1/public/rates/{id}; omitted on GET /api/v1/rates/{id}.
previous_close_7d?numbernull
The rate value at the daily close seven days before the current day in US Eastern time, the baseline price_change_7d is measured against. Returned by GET /api/v1/public/rates/{id}; omitted on GET /api/v1/rates/{id}.
stats?object | null
Trailing returns and risk statistics computed from the rate's daily close series over roughly the trailing 400 days. Returned by GET /api/v1/public/rates/{id} only; always omitted on GET /api/v1/rates/{id}.
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.
404 · Rate not found
error?string
Stable, machine-readable code identifying the failure; branch on this rather than on message. One of bad_request, unauthorized, forbidden, not_found, conflict, service_unavailable, upstream_error, service_error, or internal_error.
message?string
Human-readable explanation, safe to show to a user. For client errors it names the specific problem; for server-side failures it is a generic notice and the underlying detail is deliberately withheld.
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/<id>" \ -H "Authorization: Bearer <token>"
Response example
{ "rate_id": "adj_bluh", "name": "Democratic House", "description": "Rolling rate from contract chain 'bluh_chain'", "methodology": "simple_average", "sources": [ { "market_id": "kalshi:CONTROLH-2026-D", "display_ticker": "CONTROLH-2026-D", "platform": "kalshi", "weight": 1, "question": "Will Democrats win the House in 2026?", "latest_price": 77.5, "end_date": "2027-02-01T15:00:00Z", "is_active": true } ], "latest_price": 77.5, "spread": 0 }