curl --request GET \
--url https://api.rook.pm/v1/price-history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rook.pm/v1/price-history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rook.pm/v1/price-history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"items": [
{
"listing_id": "lst_pm_fed_dec_2026_cut_yes",
"field": "MIDPOINT",
"price": "0.40",
"quote_currency": "USDC",
"observed_at": "2026-10-19T11:58:00Z",
"source_timestamp": "2026-10-19T11:58:00Z",
"sampling_method": "LAST_OBSERVATION_PER_INTERVAL",
"carried_forward": false,
"status": "AVAILABLE"
},
{
"listing_id": "lst_pm_fed_dec_2026_cut_yes",
"field": "MIDPOINT",
"price": "0.41",
"quote_currency": "USDC",
"observed_at": "2026-10-19T11:59:00Z",
"source_timestamp": "2026-10-19T11:59:00Z",
"sampling_method": "LAST_OBSERVATION_PER_INTERVAL",
"carried_forward": false,
"status": "AVAILABLE"
}
],
"next_page_token": null,
"snapshot_id": "snap_rates_20261019_120000",
"as_of": "2026-10-19T12:00:00Z"
}Get price history
Retrieve recorded bid, ask, midpoint or last-trade prices for selected Rook listing_ids in a UTC time window. Supply start_time, end_time and field; sampling_interval optionally requests a supported sampling cadence.
Items identify the listing, field, price, observation/source times, sampling method and whether a value was carried forward. Gaps remain explicit and missing observations do not become fabricated candles. Follow next_page_token with the same filters and time range to continue the snapshot. For transaction records rather than sampled prices, use /trades.
curl --request GET \
--url https://api.rook.pm/v1/price-history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rook.pm/v1/price-history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rook.pm/v1/price-history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"items": [
{
"listing_id": "lst_pm_fed_dec_2026_cut_yes",
"field": "MIDPOINT",
"price": "0.40",
"quote_currency": "USDC",
"observed_at": "2026-10-19T11:58:00Z",
"source_timestamp": "2026-10-19T11:58:00Z",
"sampling_method": "LAST_OBSERVATION_PER_INTERVAL",
"carried_forward": false,
"status": "AVAILABLE"
},
{
"listing_id": "lst_pm_fed_dec_2026_cut_yes",
"field": "MIDPOINT",
"price": "0.41",
"quote_currency": "USDC",
"observed_at": "2026-10-19T11:59:00Z",
"source_timestamp": "2026-10-19T11:59:00Z",
"sampling_method": "LAST_OBSERVATION_PER_INTERVAL",
"carried_forward": false,
"status": "AVAILABLE"
}
],
"next_page_token": null,
"snapshot_id": "snap_rates_20261019_120000",
"as_of": "2026-10-19T12:00:00Z"
}Authorizations
Proposed server-to-server API key. No client request HMAC signing scheme is specified.
Headers
Caller correlation reference; not an idempotency guarantee.
Query Parameters
Rook listing IDs from /markets or /markets:resolve. Select the venue and outcome side explicitly; repeat the query parameter for multiple listings.
1Opaque text identifier. Preserve its exact value.
1UTC start of the requested observation/execution window. Must precede end_time when both are supplied.
UTC end of the requested observation/execution window. Must follow start_time when both are supplied.
Price observation to retrieve: BID, ASK, MIDPOINT or LAST_TRADE, oriented to the selected listing outcome.
BID, ASK, MIDPOINT, LAST_TRADE Supported sampling cadence, such as 1m. The response reports its sampling and carry-forward method; consult coverage for available intervals.
Requested maximum items; service caps disclosed by coverage. Oversize requests fail explicitly.
x >= 1Opaque continuation; reuse the same filters/order. Cursor pins the original snapshot.