Use REST when your framework does not speak MCP. Session creation returns a session_id that your HTTP client passes to later endpoints.
curl -X POST https://finlet.dev/v1/sessions \
-H "Authorization: Bearer $FINLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-first-sim", "start_time": "2024-01-02", "initial_capital": 100000, "universe": ["AAPL", "GOOGL", "MSFT"]}'
Price endpoint returns OHLCV data filtered to the session's current simulation time — no future data leaks through the date ceiling enforcer.
Order endpoint returns the filled order with execution price and timestamp. Orders submitted outside market hours queue as PENDING until the next trading session. Insufficient cash returns 400 with a specific actionable message (e.g., "Insufficient cash: need $18,450.00, have $12,000.00").
Portfolio endpoint returns cash, positions (with average entry price and current market value), and aggregate P&L.
Rate limits are reported in response headers. If you exceed them, you'll get a 429 with exact reset time — for example: "Finnhub rate limit exceeded: 0/60 calls remaining, resets in 42 seconds".