Predictions
Consensus
Base Consensus (how many eligible specialists call UP versus DOWN), side by side with Meta.
Overview
GET
/ v1/ consensus/ {asset}/ {timeframe}Developer PreviewAll plansapi.probora.xyz
Base Consensus counts how many eligible specialists call UP versus DOWN. Combine it with Meta to separate broad agreement from high-quality agreement.
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 |
Request
# export PROBORA_API_KEY=prb_live_…
curl "https://api.probora.xyz/v1/consensus/BTC/15m" \
-H "Authorization: Bearer $PROBORA_API_KEY"Response
200 OK, returned as application/json. Example:
Response · 200
{
"asset": "BTC",
"timeframe": "15m",
"market_id": "btc-15m-20261114-2000",
"specialists_up": 7,
"specialists_down": 2,
"specialists_eligible": 9,
"base_consensus": "UP",
"agreement": 0.778,
"mean_up_probability": 0.604,
"meta": {
"direction": "UP",
"up_probability": 0.671,
"confidence": 0.79
},
"data_mode": "live"
}Response fields
| Field | Type | Description |
|---|---|---|
| asset | string | Asset symbol, e.g. BTC. |
| timeframe | string | Window length: 5m, 15m, 1h, 4h or 1d. |
| market_id | string | Deterministic market id {asset}-{timeframe}-{YYYYMMDD}-{HHMM} (UTC window start). |
| specialists_up | integer | Eligible specialists calling UP. |
| specialists_down | integer | Eligible specialists calling DOWN. |
| specialists_eligible | integer | Specialists that published an eligible prediction for this window. |
| base_consensus | string | Majority direction of eligible specialists: UP, DOWN or SPLIT. |
| agreement | number | Share of eligible specialists agreeing with the majority. |
| mean_up_probability | number | Simple average of the eligible specialists' UP probabilities. |
| meta | object | The Meta Agent's direction, probability and confidence for the same window. |
| 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 |
|---|---|---|
| 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. |
| 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. |
How consensus is computed
Base Consensus is a transparent count with no weighting and no learning:
- Take every specialist that published an eligible prediction for the window.
- Count UP and DOWN calls:
specialists_upandspecialists_down. base_consensusis the majority direction. A tie is reported asSPLITand never rounded to a direction.agreement = max(up, down) / eligible. For example 7 / 9 UP gives an agreement of 0.778.
Specialists that are collecting data or unavailable for the market are excluded from both counts. Compare consensus with Meta to separate broad agreement from high-quality agreement.
Questions or feedback on the API? [email protected]