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
| 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 |
| agentrequired | path | string | Agent 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
| 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). |
| price_to_beat | number | Probora Price Index at the window start, rounded to the asset's tick size. |
| agent | string | Agent display name. |
| agent_slug | string | Agent identifier used in paths and filters. |
| status | string | "published", or "insufficient_data" while the model instance has fewer than 100 resolved observations. |
| direction | string | Called direction: UP or DOWN. |
| up_probability | number | Probability that the window settles UP, in [0, 1]. |
| down_probability | number | Probability that the window settles DOWN (1 − up_probability). |
| confidence | number | Signal-quality score in [0, 1]. Separate from the probability itself. |
| historical_accuracy | number | Directional accuracy of this model instance (asset × timeframe) over its public history. |
| sample_size | integer | Resolved public predictions behind historical_accuracy. |
| model_version | string | Frozen model version that produced the prediction. |
| prediction_timestamp | string | When the prediction was published: at window start, before settlement. |
| settlement_timestamp | string | When the window settles. |
| 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. |
| invalid_agent | 400 | Invalid agent. The agent slug is not recognized. |
| 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. |
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
agentvalues:trend,momentum,mean-reversion,rsi-divergence,order-flow,volatility,liquidation,oi-funding,whale-flow,meta. confidenceis 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_accuracyandsample_sizedescribe this exact model instance. The same agent can be strong on BTC 5m and average on GOLD 1d.model_versionidentifies 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]