The Research Agent is served by a FastAPI backend. These are the production endpoints that power the dashboards — the same ones you can call directly.
Base URL: https://semianalysis-dashboard-9803.onrender.com A stable, versioned public API with per-customer keys is on the roadmap — contact support@zentradings.com for B2B access.

Market data

GET /api/stock-history

OHLCV price history for a symbol.

GET /api/stock-bias

Directional bias signal for a symbol. Cached; pass force=true to recompute.

GET /api/option-summary

Nearest-expiry ATM implied volatility and implied move (US-listed options, live). Returns {"available": false} when no options exist for the symbol.

GET /api/option-contracts

Option chain for the order modal, from Alpaca reference data. Without expiration, returns {"symbol", "expirations"}. With expiration, returns the tradable {strike, symbol} contracts for that expiration and type.

Research

GET /api/dashboard/{dashboard_id}

The full sector dashboard payload: vendors grouped by supply-chain role, each with inline ground truth, the reasoning thesis, bias, and option strategies. Registered dashboards are energy, wfe, foundry, memory, and networking (also listed live at /health). Unknown dashboard IDs return 404.

POST /api/refresh-ground-truth?dashboard=<id>

Rebuild the primary-filing ground-truth cache (SEC/DART/TWSE) for one dashboard. Returns the vendor count and per-status breakdown, e.g. {"dashboard": "networking", "vendorCount": 24, "statuses": {"ok": 22, "pending": 2}}.

POST /api/refresh-reasoning?dashboard=<id>

Regenerate and cache the company theses for one dashboard. Requires the reasoning provider to be configured (W&B Inference, with OpenRouter fallback) — otherwise 503. Returns {"dashboard", "thesesGenerated"}.

POST /api/refresh-option-strategies?dashboard=<id>

Regenerate and cache the option strategies for one dashboard, independently of the theses. Returns {"dashboard", "strategiesGenerated"}.

Execution

Order execution routes to the caller’s own brokerage — per-user Alpaca keys can be sent with each request, falling back to shared server credentials.

GET /api/broker-status

Whether execution is wired up, and to which Alpaca environment: {"enabled": true, "paper": true}.

POST /api/orders

Submit an equity or option order to Alpaca.
symbol accepts OCC option symbols (e.g. AAPL260116C00150000) up to 21 chars. type is market or limit (limitPrice required for limits). Without any credentials the endpoint returns 503.

GET /api/binance/status / POST /api/binance/order

USDⓈ-M futures orders for tokenized TradFi perpetuals on a Binance-compatible venue. Each order sets the symbol’s leverage first, then submits:
leverage accepts whole numbers — the dashboard UI offers 1-20×. Requires BINANCE_API_KEY / BINANCE_SECRET_KEY on the server.

POST /api/report

Account snapshot, positions, and portfolio history for the export report. Body: { "period": "1M", "timeframe": "1D" } plus optional Alpaca credentials.

Health

GET /health

Service liveness plus the list of registered dashboards: {"status": "ok", "dashboards": [...]}.