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/public/rates/{id}/pricesGET
Delayed rate price series. Same two-granularity contract as the public index prices endpoint. Returns the {data, meta} envelope. This list is not paginated: it returns one response bounded by its own limit, so meta.total is the number of rows in this response rather than a count of everything that could match, and has_next is always false.
Query Parameters
interval?"1hour" | "1d"
Default: "1hour"
per_page?integer
Rows returned in this response (1-1000). This tier serves a fixed contract window that always fits a single response, so there is no page and meta.has_next is always false.
Default: 1000Min: 1Max: 1000
start?string
end?string
order?"asc" | "desc"
Default: "desc"
Response
200 · Price points
data *object[]
Show item properties
timestamp?string (date-time)
Start of the aggregation bucket this point covers, in UTC. Daily buckets are anchored to midnight US Eastern, so a 1d point's timestamp is 04:00 or 05:00 UTC depending on daylight saving.
price?number
Value of the series for this bucket: the last price recorded within it. Equals ohlc.close on the same point where OHLC is returned, and is the same statistic the previous_close_* baselines are measured against. The scale is 0-100 for market and rate series, and the index level (roughly 50-150) for index series.
price_raw?numbernull
Not currently reachable on any tier, and always absent. The unsmoothed value exists only on the un-bucketed series, but every accepted interval (and the default) maps to a bucketed one, so no request can return it.
volume?numbernull
Not currently populated on any price series, on any tier, and always absent. Reserved: use the market volume fields for traded volume.
ohlc?object | null
Open, high, low and close for the bucket, on the same 0-100 scale as price. Returned on the market and rate price series only (index series omit it), and on a daily series a gap-filled day repeats the previous day's values rather than reporting new trading.
spread?numbernull
Dispersion across the source markets behind a reference-rate value: the highest source price minus the lowest, in the same 0-100 points as price. Meaningful only on rate series, and currently not populated on any price-series response, so it is always absent.
sources?objectnull
Provenance for a reference-rate value: the blending method used, plus the per-source prices and weights behind it. Currently not populated on any price-series response, so it is always absent; use constituents for the per-source breakdown.
constituents?arraynull
The source markets behind a reference-rate value at this timestamp, each with its probability (0-100) and its weight renormalized to sum to 1 across the markets listed. Returned on the authenticated rate price series only, covering markets that were active at the timestamp and traded in that bucket; pass sources=false to omit it.
meta *object
400 · Invalid interval or bound
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.
Request example
curl -X GET "https://api.adjacent.markets/api/v1/public/rates/<id>/prices"
Response example
{ "data": [ { "timestamp": "2026-07-29T14:04:00Z", "price": 83.5 }, { "timestamp": "2026-07-28T04:00:00Z", "price": 83.5 } ], "meta": { "total": 2, "page": 1, "per_page": 2, "total_pages": 1, "has_next": false, "has_prev": false } }