API Documentation
Programmatic access to every recorded market event, outcome metric and live stream. Available on the PRO plan — generate your key under Account → API keys.
Authentication
All endpoints require your API key as a bearer token. Keys are created per-account.
curl -H "Authorization: Bearer <YOUR_API_KEY>" \
https://your-radar-host/api/v1/signals?limit=50&minscore=70
REST Endpoints
/api/v1/signals
Filtered signal/event history. Query params: limit, minscore, type, timeframe, age (minutes).
/api/v1/performance/scores
Outcome distribution grouped by radar-score band.
/api/v1/performance/timeframes
Outcome metrics per timeframe (5m/15m/1h/4h).
/api/v1/performance/signal-types
Outcome metrics per signal type.
/api/v1/performance/regimes
Outcome metrics bucketed by market regime.
/api/v1/performance/daily
Daily aggregate performance series.
Response Structure
GET /api/v1/signals
{
"total": 2284,
"count": 2,
"signals": [
{
"id": 3871,
"symbol": "SUPERUSDT",
"type": "4H_BULLISH_BREAKOUT",
"badge": "🟢 4H BULLISH BREAK",
"timeframe": "4h",
"direction": "LONG",
"status": "TARGET_HIT",
"price": 0.1302,
"entry_price": 0.1140,
"stop_price": 0.1096,
"target_price": 0.1238,
"target_pct": 4.55,
"support": 0.1096,
"resistance": 0.1140,
"volume_24h": 13600000,
"volume_surge_mult": 11.3,
"conviction_score": 82,
"summary": "Macro 4h Bullish Breakout above swing high …",
"created_at": "2026-08-24T14:29:59+05:30",
"outcome": {
"signal_id": 3871,
"mfe_percent": 6.41,
"mae_percent": -1.12,
"realized_percent": 4.53,
"realized_r": 1.49,
"time_to_target_sec": 840,
"time_to_stop_sec": 0,
"evaluated_at": "2026-08-24T18:33:25Z"
}
}
]
}
- status: ACTIVE · TARGET_HIT · STOP_HIT · EXPIRED · INVALIDATED
- outcome: omitted (null) while a signal is still ACTIVE/unresolved
- realized_r is net of nothing — gross R; apply your own cost model
GET /api/v1/performance/* (all five endpoints share one envelope)
{
"total": 1842,
"metrics": {
"total": 1842, "measured": 1701,
"target_hit": 1101, "stop_hit": 402, "expired": 198, "invalidated": 0,
"win_rate": 64.7, "loss_rate": 23.6,
"avg_r": 0.42, "median_r": 0.31, "total_r": 714.6,
"profit_factor": 2.18,
"avg_mfe": 6.4, "avg_mae": -2.1
},
"groups": [
{ "label": "<50", "metrics": { "…": "same metrics shape" } },
{ "label": "90-100", "metrics": { "…": "same metrics shape" } }
]
}
Grouping differs per endpoint: score buckets (/performance/scores), timeframe (/performance/timeframes), signal type (/performance/signal-types), market regime (/performance/regimes) or calendar day (/performance/daily). Errors return {"error": "…"} with an appropriate HTTP status.
WebSocket Stream
wss://your-radar-host/ws/v1/signals Authorization: Bearer <YOUR_API_KEY> (header or ?key= query param)
Pushes JSON events as they are detected: signal.detected · signal.target_hit · signal.stop_hit · signal.expired · signal.updated
Rate Limits
- Burst and daily quotas are set per API key by plan tier.
- Exceeded limits return HTTP 429 with a retry window.
- Abuse triggers automatic key suspension.