Markets
Settlement
Source-level index quotes at start and settlement, and the deterministic resolution rule.
Overview
GET
/ v1/ markets/ {market_id}/ settlementDeveloper PreviewAll plansapi.probora.xyz
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
| market_idrequired | path | string | Deterministic market id: {asset}-{timeframe}-{YYYYMMDD}-{HHMM} (UTC window start).Example: btc-15m-20261114-2000 |
Request
# export PROBORA_API_KEY=prb_live_…
curl "https://api.probora.xyz/v1/markets/btc-15m-20261114-2000/settlement" \
-H "Authorization: Bearer $PROBORA_API_KEY"Response
200 OK, returned as application/json. Example:
Response · 200
{
"market_id": "btc-15m-20261114-2000",
"status": "SETTLED",
"price_to_beat": {
"value": 76230,
"timestamp": "2026-11-14T20:00:00.000Z",
"sources": [
{
"source": "binance",
"price": 76232
},
{
"source": "okx",
"price": 76228
},
{
"source": "coinbase",
"price": 76230
}
]
},
"settlement_price": {
"value": 76239,
"timestamp": "2026-11-14T20:15:00.000Z",
"sources": [
{
"source": "binance",
"price": 76239
},
{
"source": "okx",
"price": 76241
},
{
"source": "coinbase",
"price": 76237
}
]
},
"outcome": "UP",
"rule": "settlement > price_to_beat → UP; settlement < price_to_beat → DOWN; equal → FLAT",
"data_mode": "live"
}Response fields
| Field | Type | Description |
|---|---|---|
| market_id | string | Deterministic market id {asset}-{timeframe}-{YYYYMMDD}-{HHMM} (UTC window start). |
| status | string | Market status: SETTLED or VOID once resolved. |
| price_to_beat | object | Index value and source quotes at the window start. |
| settlement_price | object | Index value and source quotes at the window end. |
| outcome | string | UP, DOWN, FLAT (exact tie) or VOID (index quorum not met); null while live. |
| rule | string | Human-readable resolution rule applied to this market. |
| data_mode | string | "live" for real price sources, "demo" for the simulated network. The two are never mixed. |
Errors
Errors use the standard error envelope. Codes this endpoint can return:
| Code | Status | Meaning |
|---|---|---|
| unauthorized | 401 | Unauthorized. The API key is missing, malformed or revoked. |
| not_found | 404 | Not found. The market or resource does not exist. |
| not_settled | 409 | Not settled. The market has not settled yet; settlement data is unavailable. |
| 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. |
Resolution rule
- At the window start, Probora collects a quote from every index source and drops quotes older than 5 seconds.
- Quotes deviating more than 50 bps from the provisional median are excluded as outliers.
- If at least 2 sources remain, the median (rounded to the asset's tick size) becomes the Price To Beat.
- The same procedure at the window end produces the Settlement Price.
- Both prices are compared in whole ticks: higher settles
UP, lower settlesDOWN, and an exact tie settlesFLAT. - If quorum is not met at either instant the market is
VOID. FLAT and VOID are never converted into UP or DOWN.
Before the window ends this endpoint returns 409 not_settled. Full details are on the methodology page.
Questions or feedback on the API? [email protected]