Skip to content
PROBORA

Predictions

Individual Agent

One specialist agent's frozen prediction for the live window of a market.

Overview

GET/v1/predictions/{asset}/{timeframe}/{agent}
Developer PreviewAll plansapi.probora.xyz

Query any of the nine specialist agents for any asset and timeframe. Every response includes direction, UP/DOWN probabilities, confidence, model version and the instance's public track record.

Parameters

ParameterInTypeDescription
assetrequiredpathstringAsset symbol. One of BTC, ETH, SOL, XRP, DOGE, HYPE, BNB, GOLD, SILVER, OIL.Example: BTC
timeframerequiredpathstringWindow length. One of 5m, 15m, 1h, 4h, 1d.Example: 15m
agentrequiredpathstringAgent slug: trend, momentum, mean-reversion, rsi-divergence, order-flow, volatility, liquidation, oi-funding, whale-flow or meta.Example: order-flow

Request

# export PROBORA_API_KEY=prb_live_…
curl "https://api.probora.xyz/v1/predictions/BTC/15m/order-flow" \
  -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",
  "price_to_beat": 76230,
  "agent": "Order Flow",
  "agent_slug": "order-flow",
  "status": "published",
  "direction": "UP",
  "up_probability": 0.682,
  "down_probability": 0.318,
  "confidence": 0.84,
  "historical_accuracy": 0.638,
  "sample_size": 48291,
  "model_version": "orderflow-btc15-v12",
  "prediction_timestamp": "2026-11-14T20:00:00.412Z",
  "settlement_timestamp": "2026-11-14T20:15:00.000Z",
  "data_mode": "live"
}

Response fields

FieldTypeDescription
assetstringAsset symbol, e.g. BTC.
timeframestringWindow length: 5m, 15m, 1h, 4h or 1d.
market_idstringDeterministic market id {asset}-{timeframe}-{YYYYMMDD}-{HHMM} (UTC window start).
price_to_beatnumberProbora Price Index at the window start, rounded to the asset's tick size.
agentstringAgent display name.
agent_slugstringAgent identifier used in paths and filters.
statusstring"published", or "insufficient_data" while the model instance has fewer than 100 resolved observations.
directionstringCalled direction: UP or DOWN.
up_probabilitynumberProbability that the window settles UP, in [0, 1].
down_probabilitynumberProbability that the window settles DOWN (1 − up_probability).
confidencenumberSignal-quality score in [0, 1]. Separate from the probability itself.
historical_accuracynumberDirectional accuracy of this model instance (asset × timeframe) over its public history.
sample_sizeintegerResolved public predictions behind historical_accuracy.
model_versionstringFrozen model version that produced the prediction.
prediction_timestampstringWhen the prediction was published: at window start, before settlement.
settlement_timestampstringWhen the window settles.
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
invalid_asset400Invalid asset. The asset symbol is not supported.
invalid_timeframe400Invalid timeframe. The timeframe is not one of 5m, 15m, 1h, 4h, 1d.
invalid_agent400Invalid agent. The agent slug is not recognized.
unauthorized401Unauthorized. The API key is missing, malformed or revoked.
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.

Insufficient Data

Every model instance (agent × asset × timeframe) learns from market #1, but may only publish once it has resolved at least 100 observations. Until then the endpoint still returns 200 OK, with status: "insufficient_data", the current observation count and null prediction fields:

Response · 200 (insufficient data)
{
  "asset": "HYPE",
  "timeframe": "1d",
  "market_id": "hype-1d-20261114-0000",
  "agent": "Trend",
  "agent_slug": "trend",
  "status": "insufficient_data",
  "observations": 25,
  "required": 100,
  "direction": null,
  "up_probability": null,
  "down_probability": null,
  "confidence": null,
  "model_version": null,
  "data_mode": "live"
}
Training observations are never retroactively converted into public predictions. Public history starts at the first window the instance published before settlement.

Notes

  • Valid agent values: trend, momentum, mean-reversion, rsi-divergence, order-flow, volatility, liquidation, oi-funding, whale-flow, meta.
  • confidence is a separate signal-quality score; it is not the probability. A 58% call can carry high confidence when the agent's inputs are clean and complete.
  • historical_accuracy and sample_size describe this exact model instance. The same agent can be strong on BTC 5m and average on GOLD 1d.
  • model_version identifies the frozen model that produced the prediction. Versions change only through retraining that passes out-of-sample validation.
  • On the Free plan predictions are delayed by 15 minutes.

Questions or feedback on the API? [email protected]