GET /v1/rates/historical
Returns historical OHLCV candle data for a single pair with cursor-based pagination.
Authentication
Requires an API key. See Authentication.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
pair | string | Yes | Pair identifier (e.g., BTCNGN). |
start | string | Yes | Start date YYYY-MM-DD (inclusive). |
end | string | Yes | End date YYYY-MM-DD (inclusive). |
interval | string | No | 5m, 1h, or 1d. Default: 1h. |
limit | integer | No | Max candles per page. Default/max depends on tier. |
cursor | string | No | Pagination cursor from previous response's meta.next_cursor. |
Tier limits
| Tier | Max limit | Intervals | History |
|---|---|---|---|
| Free | 500 | 1h, 1d | Last 30 days |
| Builder | 2,500 | 5m, 1h, 1d | Full |
| Professional | 5,000 | 5m, 1h, 1d | Full |
| Enterprise | 10,000 | 5m, 1h, 1d | Full |
Response
curl "https://api.moxiemetrx.com/v1/rates/historical?pair=BTCNGN&start=2026-04-02&end=2026-04-03&interval=1h&limit=2" \
-H "X-API-Key: your_key"
{
"pair": "BTCNGN",
"interval": "1h",
"start": "2026-04-02",
"end": "2026-04-03",
"data": [
{
"time": "2026-04-02T00:00:00+00:00",
"pair": "BTCNGN",
"open": 94400037.0,
"high": 95655881.0,
"low": 93909641.90,
"close": 95480686.0,
"vwap": null,
"total_volume": 0.0,
"verification": {
"status": "verified",
"data_quality": "high",
"confidence": 0.95,
"divergence_pct": 0.6412,
"synthetic_price": 93909641.90,
"sources_count": 6
}
}
],
"meta": {
"request_id": "...",
"row_count": 2,
"has_more": true,
"next_cursor": "2026-04-02T01:00:00+00:00",
"limit": 2,
"limit_max": 2500
}
}
Verification fields by tier
| Field | Free | Builder+ |
|---|---|---|
verification.status | Yes | Yes |
verification.data_quality | Yes | Yes |
verification.confidence | -- | Yes |
verification.divergence_pct | -- | Yes |
verification.synthetic_price | -- | Yes |
verification.sources_count | -- | Yes |
Pagination
Uses cursor-based pagination via meta.next_cursor.
- Make the first request without
cursor. - If
meta.has_moreistrue, passmeta.next_cursorascursoron the next request. - Repeat until
has_moreisfalse.
The data array contains candles keyed by time, ordered chronologically. Each candle includes pair, open, high, low, close, vwap, total_volume, and a verification object.
Errors
| Status | Code | Cause |
|---|---|---|
400 | validation_error | Invalid interval, bad date format, end before start, limit out of range |
403 | interval_not_available | Requested interval not available on your tier (e.g., 5m on Free) |
403 | history_limit_exceeded | Start date older than tier's history window (Free: 30 days) |
429 | rate_limit_exceeded | Rate limit exceeded |