Skip to content
PROBORA

Markets

Settlement

Source-level index quotes at start and settlement, and the deterministic resolution rule.

Overview

GET/v1/markets/{market_id}/settlement
Developer PreviewAll plansapi.probora.xyz

Parameters

ParameterInTypeDescription
market_idrequiredpathstringDeterministic 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

FieldTypeDescription
market_idstringDeterministic market id {asset}-{timeframe}-{YYYYMMDD}-{HHMM} (UTC window start).
statusstringMarket status: SETTLED or VOID once resolved.
price_to_beatobjectIndex value and source quotes at the window start.
settlement_priceobjectIndex value and source quotes at the window end.
outcomestringUP, DOWN, FLAT (exact tie) or VOID (index quorum not met); null while live.
rulestringHuman-readable resolution rule applied to this market.
data_modestring"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:

CodeStatusMeaning
unauthorized401Unauthorized. The API key is missing, malformed or revoked.
not_found404Not found. The market or resource does not exist.
not_settled409Not settled. The market has not settled yet; settlement data is unavailable.
rate_limited429Rate limited. Too many requests. Retry after the time in the Retry-After header.
internal_error500Internal error. Something went wrong on our side. The request id helps us investigate.

Resolution rule

  1. At the window start, Probora collects a quote from every index source and drops quotes older than 5 seconds.
  2. Quotes deviating more than 50 bps from the provisional median are excluded as outliers.
  3. If at least 2 sources remain, the median (rounded to the asset's tick size) becomes the Price To Beat.
  4. The same procedure at the window end produces the Settlement Price.
  5. Both prices are compared in whole ticks: higher settles UP, lower settles DOWN, and an exact tie settles FLAT.
  6. 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]