Get prices as of X hours ago
GET/v1/data/prices/latest-asof
Returns prices at an effective cutoff time computed as asOf − hoursAgo.
Plain-text reference — GET /v1/data/prices/latest-asof
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
hoursAgo | query | number | yes | Non-negative number of hours in the past |
asOf | query | string | no | ISO date anchor; defaults to now |
assetGroups | query | string[] | no | Asset group keys (repeatable) |
Response 200
| Field | Type | Description |
|---|---|---|
success | True | |
data | object | |
data.asOf | string | Timestamp the data was measured at. |
data.count | integer | Number of entries in items. |
data.items | object | Map of asset_group → priceUsd |
data.debug | object | |
data.debug.rows | object[] | |
actions | null |
Example response
{
"success": true,
"data": {
"asOf": "2026-01-01T00:00:00Z",
"count": 1,
"items": {
"USDC": 1.0001,
"WBTC": 67432.12
},
"debug": {
"rows": [
{}
]
}
}
}
Request
Responses
- 200
- 400
- 429
- 500
- 502
Prices at the effective cutoff time
Validation error
Rate limited. Unauthenticated callers share a per-IP budget; send an x-api-key header to lift it. Retry with exponential backoff.
Unexpected server error. Safe to retry with backoff.
An upstream data source or protocol origin failed (error.code is ORIGIN_FAILED). error.details carries the per-origin status. This is also what a missing or malformed required parameter currently returns, rather than a 400.