Your first call
Every data query goes through GET /v1/points. Authenticate with your API key in the
X-Kiyotaka-Key header. Here's BTC candles from Binance Futures:
curl "https://api.kiyotaka.ai/v1/points ?type=TRADE_SIDE_AGNOSTIC_AGG &exchange=BINANCE_FUTURES &rawSymbol=BTCUSDT &interval=HOUR &from=1774800000 &period=3600" \ -H "X-Kiyotaka-Key: YOUR_API_KEY"
Same endpoint, same shape, for every data type. Change type and you get funding rates,
liquidations, orderbook heatmaps, or volume profiles instead of candles.
Cross-exchange volume aggregation
This is where it gets interesting. Sum BTC volume across Binance, Bybit, and OKX in a single call -- USD-normalized so values are comparable:
curl "https://api.kiyotaka.ai/v1/points ?type=TRADE_SIDE_AGNOSTIC_AGG &exchange=BINANCE_FUTURES &exchange=BYBIT &exchange=OKEX_SWAP &coin=BTC &interval=HOUR &from=1774800000 &period=86400 &transform.groupBy.type=GROUP_BY_TYPE_SUM &transform.normalize.quote=USD" \ -H "X-Kiyotaka-Key: YOUR_API_KEY"
One response, one schema. No stitching together 3 different exchange APIs with 3 different symbol formats.
Orderbook heatmap
Pull a 4K-resolution orderbook heatmap -- 1,000 price levels of bid/ask depth, updated every minute:
curl "https://api.kiyotaka.ai/v1/points ?type=BLOCK_BOOK_SNAPSHOT_AGG &exchange=BINANCE_FUTURES &rawSymbol=BTCUSDT &interval=MINUTE &period=1140 &blockSize=5 &maxDepth=1000 &sortDirection=SORT_DIRECTION_DESC" \ -H "X-Kiyotaka-Key: YOUR_API_KEY"
Each snapshot returns alternating [price, volume] pairs for bids and asks. Feed it directly
into a heatmap renderer.
Real-time trade stream
Open a WebSocket and stream every BTC trade on Binance Futures as it happens:
// 1. Connect wss://ap-sin3.ws.api.kiyotaka.ai/nonbook/ws?encoding=json // 2. Authenticate { "method": "public/authenticate", "params": { "token": "YOUR_API_KEY" } } // 3. Subscribe { "jsonrpc": "2.0", "id": 0, "method": "public/subscribe", "params": { "channels": [{ "type": "TRADE", "exchange": "BINANCE_FUTURES", "symbol": "BTCUSDT", "category": "*" }], "compression": "brotli", "version": "v2" } } // 4. Receive { "points": [{ "series": { "type": "TRADE", "side": "BUY", "coin": "BTC", ... }, "trade": { "price": 90003, "amount": 0.002, ... } }] }
Liquidation heatmap
See where liquidations are clustered by price level -- useful for identifying stop-hunt zones and liquidation cascades:
curl "https://api.kiyotaka.ai/v1/points ?type=HYPERLIQUID_LIQUIDATION_AGG &coin=BTC &interval=HOUR &from=1774800000 &period=3600 &transform.normalize.quote=USD" \ -H "X-Kiyotaka-Key: YOUR_API_KEY"
Returns alternating [price, liquidationVolume] pairs showing exactly where positions are
getting blown up.
Market Profile (TPO)
A Kiyotaka exclusive -- no other crypto API offers Time Price Opportunity data. Get a full day's Market Profile with Point of Control and Value Area:
curl "https://api.kiyotaka.ai/v1/points ?type=TPO_AGG &exchange=BINANCE_FUTURES &rawSymbol=BTCUSDT &interval=DAY &from=1774800000 &period=86400 &tpoSession=TPO_SESSION_DAILY &tpoBlockSizeMinutes=30" \ -H "X-Kiyotaka-Key: YOUR_API_KEY"
Each price level comes with time block IDs and buy/sell volume -- everything you need to render a classic Market Profile chart.
The pattern
Every example above uses the same endpoint (/v1/points), the same auth header, and the same
response shape. The only thing that changes is the type parameter. That's the whole idea -- one
API for everything.
Change type to... | And you get |
|---|---|
TRADE_SIDE_AGNOSTIC_AGG | OHLCV candles |
OPEN_INTEREST_AGG | Open interest across exchanges |
FUNDING_RATE_AGG | Funding rates with predicted values |
LIQUIDATION_AGG | Liquidation volume by side |
VOLUME_PROFILE_AGG | Volume at each price level |
TPO_AGG | Market Profile / Time Price Opportunity |
BLOCK_BOOK_SNAPSHOT_AGG | 4K orderbook depth heatmap |
HYPERLIQUID_LIQUIDATION_AGG | Liquidation heatmap by price |