API Reference
AI & Decisions
Start and stop AI trading sessions, read live session status, and query the decision audit trail.
Session control
/api/ai-trading/startStart an AI trading session for the authenticated user. The session runs with a snapshot of your current settings (what the Pre-Flight Review shows).
/api/ai-trading/pausePause new entries. Open positions remain actively managed.
/api/ai-trading/resumeResume a paused session.
/api/ai-trading/stopEnd the session. Protective exits on open positions keep running.
Status
/api/ai-trading/statusCombined view of your session and the global AI service.
{
"is_running": true,
"service_online": true,
"cycle_count": 48213,
"uptime_formatted": "3d 2h",
"active_symbols": ["BTC/USD", "ETH/USD", "SOL/USD"],
"user_signals_received": 1240,
"user_signals_acted": 18,
"user_trades_executed": 18,
"user_session_uptime_formatted": "6h 12m",
"config_summary": {
"min_ensemble_agreement": 3,
"confidence_threshold": 0.75
}
}cycle_count and active_symbols describe the shared AI service (it runs 24/7 for everyone); the user_* fields are specific to your session.
/api/ai-trading/signalsRecent AI signals relevant to your session.
Decisions
The same audit trail as the Decisions page. Platform decisions are global telemetry; your personal outcomes are layered on top.
/api/v1/decisionsList recent AI decisions, most recent first, with filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
symbol | string | optional | Filter by asset symbol |
action | string | optional | BUY, SELL, or HOLD |
outcome | string | optional | emitted, blocked, skipped, or errored |
since | datetime | optional | Inclusive lower bound (ISO-8601) |
until | datetime | optional | Exclusive upper bound (ISO-8601) |
limit | int | optional | 1–200, default 50 |
offset | int | optional | Skip N results, default 0 |
/api/v1/decisions/{decision_id}Full detail for one decision: action, confidence, price context, and engine votes.
/api/v1/decisions/{decision_id}/explainThe plain-language explanation of a decision — the same text shown in the app's decision drawer.
Counts are filter-aware
The list response includes a total computed against the same filters, so "showing 50 of 1,283" style UIs can be built directly from one call.