Markets
Market History
Settled windows with Price To Beat, Settlement Price and outcome.
Overview
GET
/ v1/ markets/ {asset}/ {timeframe}/ historyDeveloper PreviewPro plan and aboveapi.probora.xyz
Paginated history of predictions published before settlement, with outcomes, settlement prices and model versions. Nothing is deleted, nothing is rewritten.
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
| assetrequired | path | string | Asset symbol. One of BTC, ETH, SOL, XRP, DOGE, HYPE, BNB, GOLD, SILVER, OIL.Example: BTC |
| timeframerequired | path | string | Window length. One of 5m, 15m, 1h, 4h, 1d.Example: 15m |
| from | query | ISO-8601 | Only include windows starting at or after this instant.Example: 2026-11-01T00:00:00Z |
| to | query | ISO-8601 | Only include windows starting before this instant. |
| limit | query | integer | Page size, 1–500. Defaults to 100.Example: 100 |
| cursor | query | string | Opaque pagination cursor returned as next_cursor. |
Request
# export PROBORA_API_KEY=prb_live_…
curl "https://api.probora.xyz/v1/markets/BTC/15m/history?limit=1" \
-H "Authorization: Bearer $PROBORA_API_KEY"Response
200 OK, returned as application/json. Example:
Response · 200
{
"data": [
{
"market_id": "btc-15m-20261114-1945",
"start_time": "2026-11-14T19:45:00.000Z",
"end_time": "2026-11-14T20:00:00.000Z",
"price_to_beat": 76188.12,
"settlement_price": 76230,
"outcome": "UP"
}
],
"next_cursor": "eyJ0IjoiMjAyNi0xMS0xNFQxOTo0NTowMFoifQ",
"data_mode": "live"
}Response fields
| Field | Type | Description |
|---|---|---|
| data | array | Page of results, newest first. |
| next_cursor | string | Opaque cursor for the next page; null when there are no more results. |
| data_mode | string | "live" for real price sources, "demo" for the simulated network. The two are never mixed. |
Fields of each item in data
| Field | Type | Description |
|---|---|---|
| market_id | string | Deterministic market id {asset}-{timeframe}-{YYYYMMDD}-{HHMM} (UTC window start). |
| start_time | string | Window start (UTC). |
| end_time | string | Window end, which is the settlement instant (UTC). |
| price_to_beat | number | Probora Price Index at the window start, rounded to the asset's tick size. |
| settlement_price | number | Probora Price Index at the window end; null until settled. |
| outcome | string | UP, DOWN, FLAT (exact tie) or VOID (index quorum not met); null while live. |
Errors
Errors use the standard error envelope. Codes this endpoint can return:
| Code | Status | Meaning |
|---|---|---|
| invalid_request | 400 | Invalid request. A parameter is missing or malformed. |
| invalid_asset | 400 | Invalid asset. The asset symbol is not supported. |
| invalid_timeframe | 400 | Invalid timeframe. The timeframe is not one of 5m, 15m, 1h, 4h, 1d. |
| unauthorized | 401 | Unauthorized. The API key is missing, malformed or revoked. |
| plan_required | 403 | Plan required. Your plan does not include this endpoint or history depth. |
| rate_limited | 429 | Rate limited. Too many requests. Retry after the time in the Retry-After header. |
| internal_error | 500 | Internal error. Something went wrong on our side. The request id helps us investigate. |
Notes
- Every window ever opened appears in history, including
FLAToutcomes (exact ties) andVOIDwindows. - Pagination works exactly like historical predictions: newest first, cursor-based, immutable.
- Need the source quotes behind a specific window? Use the settlement endpoint with its market id.
Questions or feedback on the API? [email protected]