Crypto trading bot data API
Feed a crypto trading bot funding rates, open interest, liquidations, order books, options and candles from one REST and WebSocket API with one key.
A bot needs clean inputs from many places: candles from one venue, funding from another, liquidations from a third, options from somewhere else. Each has its own keys, limits and formats. f1ow gives you all of them behind one REST API and one WebSocket, with one key and consistent JSON.
Building blocks for strategies
| Signal | Tool | REST |
|---|---|---|
| OHLCV, spot or perp | Candles | GET /v1/market/candles/{symbol} |
| Months of paged history (price, OI, funding, liquidations) | Bulk History | GET /v1/market/history/{symbol} |
| Funding, with a 1-year percentile | Funding | GET /v1/derivatives/funding/{symbol} |
| Open interest and its baseline | Open Interest | GET /v1/derivatives/open-interest/{symbol} |
| OI × taker flow: new longs vs short covering | Perp Flow | GET /v1/derivatives/flow/{symbol} |
| Liquidation history and cascades | Liquidation History | GET /v1/derivatives/liquidations/{symbol} |
| Order-book depth, imbalance and fill cost | Order Book | GET /v1/flow/orderbook/{symbol} |
| Evidence-graded price levels | Perp Price Levels | GET /v1/flow/levels/{symbol} |
| Indicators across timeframes | Technicals | GET /v1/technicals/{symbol} |
| Options IV, skew and odds | Implied Volatility, Options-Implied Odds | GET /v1/options/... |
Every tool page has the full parameter list, the request in cURL, TypeScript and Python, and a real response.
Backtest, then go live
Pull history with market_history, which takes up to 1,000 rows per call. Pass nextEndMs back as end to page backwards. Funding and OI history go back years at daily resolution:
import os, requests
H = {"Authorization": f"Bearer {os.environ['F1OW_API_KEY']}"}
rows, end = [], None
while len(rows) < 3000:
params = {"metric": "funding", "interval": "1d", "limit": 1000, **({"end": end} if end else {})}
page = requests.get("https://mcp.f1ow.com/v1/market/history/BTC", headers=H, params=params).json()
rows = page["rows"] + rows # each page is oldest-first; earlier pages come next
end = page.get("nextEndMs")
if not end:
breakThe field names in the response are documented on the tool page and typed in the OpenAPI spec.
Push instead of poll
Polling every symbol every minute wastes calls. Subscribe over WebSocket instead. The server re-runs the tool and pushes only when the result changes, and only pushes are metered.
{ "jsonrpc": "2.0", "id": 1, "method": "subscriptions/subscribe",
"params": { "name": "derivatives_open_interest", "arguments": { "symbol": "BTC" }, "intervalSeconds": 60 } }Read-only by design
f1ow never trades. Your bot keeps its own exchange keys and order logic; f1ow is the market-data and research layer. Snapshots carry generatedAt and coverage notes, so check freshness before acting.
Get a key for your bot
Sign in, get an API key and make your first call in under a minute. No card required.
For agents: this page as Markdown · all docs
AI crypto trading assistant
Turn Claude or ChatGPT into a crypto trading research assistant with live market regime, positioning, liquidations, options and trade-plan checks — no code.
Market data for AI agents
Give an autonomous AI agent a crypto market-data toolset — MCP tools with JSON schemas, reports written for LLMs, x402 pay-per-call and machine-readable discovery.