mmflow Open API · v1
Every market, one schema
Hyperliquid · Binance · OKX · Bybit · Aster · Lighter · Deribit · Coinbase + 20 more venues — unified into a single read-only public API. Keys optional. Anonymous: ~60 req/min per IP (edge-cache shared). With a free key: 300 req/min/key once enforcement turns on (see /profile/api-keys).
Base URL
https://mmflow.ai/api/v1OpenAPI spec
/api/v1/openapiTypeScript SDK
/docs/api/sdkPython SDK
/docs/api/pythonMCP server
/docs/api/mcpCookbook
/docs/api/cookbookStatus
/docs/api/statusAuth
Optional keys/api/v1/perps/oiCross-venue open interest snapshot
Query params
coins(string)— Comma-separated coin tickers (e.g. BTC,ETH,SOL). Omit for full universe.venues(string)— Comma-separated venue codes from {hl, bybit, okx, binance, bitmex, deribit, gateio}. Default: hl. Multi-venue adds ~500ms latency. Deriv venues (bitmex/deribit/gateio) report USD OI only (oiContracts=0) and default to BTC,ETH when no coins are given.Try it
Example response
{
"data": [
{ "coin": "BTC", "venue": "binance", "oiUsd": 9821030410.2, "oiContracts": 152801.4, "fetchedAt": 1730000000000 },
{ "coin": "BTC", "venue": "bybit", "oiUsd": 4291832104.8, "oiContracts": 66801.2, "fetchedAt": 1730000000000 },
{ "coin": "BTC", "venue": "hyperliquid", "oiUsd": 1294823041.2, "oiContracts": 19582.3, "fetchedAt": 1730000000000 },
{ "coin": "BTC", "venue": "okx", "oiUsd": 3812401084.5, "oiContracts": 59281.0, "fetchedAt": 1730000000000 }
],
"meta": { "fetchedAt": 1730000000000, "source": "hyperliquid:metaAndAssetCtxs+bybit:tickers+okx:open-interest+binance:openInterest" }
}/api/v1/perps/fundingCross-venue funding rates
Query params
coins(string)— Comma-separated coin tickers.venues(string)— Comma-separated venue codes from {hl, binance, bybit, bitmex, deribit, gateio}. Default: hl. Each row carries periodHours (HL=1h; Binance/Bybit/BitMEX/Deribit/Gate.io=8h).Try it
Example response
{
"data": [
{ "coin": "BTC", "venue": "binance", "rate": 0.0000832, "periodHours": 8, "fetchedAt": 1730000000000 },
{ "coin": "BTC", "venue": "bybit", "rate": 0.0000721, "periodHours": 8, "fetchedAt": 1730000000000 },
{ "coin": "BTC", "venue": "hyperliquid", "rate": 0.0000125, "periodHours": 1, "fetchedAt": 1730000000000 }
],
"meta": { "fetchedAt": 1730000000000, "source": "hyperliquid:metaAndAssetCtxs+binance:premiumIndex+bybit:tickers" }
}/api/v1/perps/oi/historyHL OI historical time series
Query params
coin(string, required)— Coin ticker (e.g. BTC).sinceMs(number)— Only return points with t >= sinceMs. Default: full retention.Example response
{
"data": {
"coin": "BTC",
"venue": "hyperliquid",
"points": [
{ "t": 1747000000000, "v": 19582.3 },
{ "t": 1747000600000, "v": 19601.1 },
{ "t": 1747001200000, "v": 19594.8 }
],
"cadenceMs": 600000,
"retention": "~7d rolling",
"enabled": true,
"fetchedAt": 1747001800000
},
"meta": { "fetchedAt": 1747001800000, "source": "mmflow:kv-archive:oi-hl-snapshots" }
}/api/v1/perps/funding/historyCross-venue funding rate history per coin
Query params
coin(string, required)— Coin ticker.sinceMs(number)— Only return points with ts >= sinceMs. Default: full retention.Example response
{
"data": {
"coin": "BTC",
"points": [
{ "ts": 1747000000000, "byVenue": { "hl": 0.0000125, "binance": 0.0000832, "bybit": 0.0000721 } },
{ "ts": 1747000600000, "byVenue": { "hl": 0.0000118, "binance": 0.0000801, "bybit": 0.0000698 } }
],
"cadenceMs": 600000,
"retention": "~7d rolling",
"enabled": true,
"fetchedAt": 1747001800000
},
"meta": { "fetchedAt": 1747001800000, "source": "mmflow:kv-archive:funding-cross-venue" }
}/api/v1/options/chainDeribit option chain (BTC / ETH / SOL / XRP)
Query params
underlying(BTC|ETH|SOL|XRP, required)— Required. Underlying currency.Example response
{
"data": [
{
"instrument": "BTC-27DEC26-65000-C",
"underlying": "BTC",
"strike": 65000,
"expiryMs": 1798502400000,
"type": "C",
"oi": 218.4,
"volume24h": 4.2,
"markIv": 47.83,
"markPrice": 0.0451,
"underlyingPrice": 64320.5
}
],
"meta": { "fetchedAt": 1730000000000, "source": "deribit:get_book_summary_by_currency" }
}/api/v1/options/gexDealer Gamma Exposure surface
Query params
underlying(BTC|ETH|SOL|XRP, required)— Required. Underlying currency.Example response
{
"data": {
"underlying": "BTC",
"spot": 64320.5,
"totalGex": 412384210.5,
"callWall": { "strike": 70000, "gex": 184382100.2 },
"putWall": { "strike": 60000, "gex": -94284100.0 },
"gammaFlip": 62800.0,
"strikes": [
{ "strike": 60000, "callOi": 45.2, "putOi": 124.5, "gex": -94284100.0 },
{ "strike": 70000, "callOi": 218.4, "putOi": 12.3, "gex": 184382100.2 }
],
"fetchedAt": 1730000000000
},
"meta": { "fetchedAt": 1730000000000, "source": "deribit:get_book_summary_by_currency" }
}/api/v1/options/skewIV smile per expiry + ATM term structure
Query params
underlying(BTC|ETH|SOL|XRP, required)— Required. Underlying currency.Example response
{
"data": {
"underlying": "BTC",
"smileByExpiry": {
"27DEC26": [
{ "strike": 60000, "iv": 0.58, "type": "P", "moneyness": 0.93 },
{ "strike": 65000, "iv": 0.48, "type": "C", "moneyness": 1.01 }
]
},
"termStructure": [
{ "expiryMs": 1798502400000, "expiryLabel": "27DEC26", "dteDays": 42, "atmIv": 0.49 }
],
"fetchedAt": 1730000000000
},
"meta": { "fetchedAt": 1730000000000, "source": "deribit:get_book_summary_by_currency" }
}/api/v1/perps/positioningNet long/short positioning across Binance + OKX
Query params
coins(string)— Comma-separated coin tickers.period(15m|1h|4h)— Sampling period (default 1h).Example response
{
"data": [
{ "coin": "BTC", "venue": "binance", "view": "global", "longFraction": 0.58, "longShortRatio": 1.38, "fetchedAt": 1730000000000 },
{ "coin": "BTC", "venue": "binance", "view": "top", "longFraction": 0.51, "longShortRatio": 1.04, "fetchedAt": 1730000000000 },
{ "coin": "BTC", "venue": "okx", "view": "top", "longFraction": 0.46, "longShortRatio": 0.85, "fetchedAt": 1730000000000 }
],
"meta": { "fetchedAt": 1730000000000, "source": "binance+okx:longShortRatio" }
}/api/v1/perps/whalesHL whale tape — recent prints over a notional threshold
Query params
minUsd(number)— Min notional USD (default 100000).coin(string)— Filter to a single coin.sinceMs(number)— Only prints with ts >= sinceMs.limit(number)— Max prints (default 200, max 1000).Example response
{
"data": [
{ "coin": "BTC", "side": "buy", "notionalUsd": 1281042.5, "price": 64320.2, "ts": 1730000000000, "venue": "hyperliquid" },
{ "coin": "HYPE", "side": "sell", "notionalUsd": 420180.0, "price": 28.41, "ts": 1729999895000, "venue": "hyperliquid" }
],
"meta": { "fetchedAt": 1730000000000, "source": "hyperliquid:whale-tape" }
}/api/v1/perps/liquidations24h cross-venue liquidation totals per coin
Query params
coins(string)— Comma-separated coin filter.Example response
{
"data": [
{ "coin": "BTC", "long24hUsd": 18402100, "short24hUsd": 9281400, "max24hUsd": 4250000, "venues": ["okx"], "fetchedAt": 1730000000000 }
],
"meta": { "fetchedAt": 1730000000000, "source": "okx:public/liquidation-orders" }
}/api/v1/onchain/etf-flowsSpot ETF daily net flows (BTC / ETH)
Query params
asset(bitcoin|ethereum)— Default bitcoin.Example response
{
"data": {
"asset": "bitcoin",
"tickers": ["IBIT","FBTC","BITB","ARKB","BTCO","EZBC","BRRR","HODL","BTCW","GBTC","BTC"],
"rows": [
{ "dateLabel": "16 May 2026", "dateMs": 1747353600000, "values": { "IBIT": 281.4, "FBTC": 142.8 }, "total": 562.4 }
],
"latestTotalUsdm": 562.4,
"cumulativeUsdm": 38421.5,
"fetchedAt": 1747400000000
},
"meta": { "fetchedAt": 1747400000000, "source": "farside:etf-flow-all-data" }
}/api/v1/onchain/treasuriesPublic-company crypto treasury holdings
Query params
asset(bitcoin|ethereum)— Default bitcoin.Example response
{
"data": {
"asset": "bitcoin",
"totalHoldings": 1543210,
"totalValueUsd": 99284105100,
"marketCapDominance": 7.81,
"companies": [
{ "name": "MicroStrategy", "symbol": "MSTR.US", "country": "US", "totalHoldings": 244800, "totalEntryValueUsd": 9450000000, "totalCurrentValueUsd": 15750000000, "percentageOfTotalSupply": 1.166 }
],
"fetchedAt": 1747400000000
},
"meta": { "fetchedAt": 1747400000000, "source": "coingecko:public_treasury" }
}/api/v1/onchain/valuationBTC on-chain valuation metrics (MVRV-Z, NUPL, Puell, Reserve Risk, Realized Cap)
Example response
{
"data": {
"asset": "bitcoin",
"mvrvZScore": 2.41,
"nupl": 0.58,
"puellMultiple": 1.28,
"reserveRisk": 0.0042,
"realizedCap": 581200000000,
"asOfDate": "2026-05-17",
"fetchedAt": 1747400000000
},
"meta": { "fetchedAt": 1747400000000, "source": "bitcoin-data.com" }
}/api/v1/markets/spotCross-venue spot ticker (Coinbase + Binance + Bitfinex + Kraken + Gate.io)
Query params
coins(string)— Comma-separated coin tickers (default BTC,ETH,SOL, max 20).Example response
{
"data": [
{ "coin": "BTC", "venue": "binance", "price": 64310.5, "bid": 64310.4, "ask": 64310.6, "volume24h": 28412.1, "change24hPct": 1.42, "fetchedAt": 1747400000000 },
{ "coin": "BTC", "venue": "bitfinex", "price": 64312.0, "bid": 64311.0, "ask": 64313.5, "volume24h": 412.2, "change24hPct": 1.39, "fetchedAt": 1747400000000 },
{ "coin": "BTC", "venue": "coinbase", "price": 64315.2, "bid": 64314.9, "ask": 64315.5, "volume24h": 1842.3, "change24hPct": 1.41, "fetchedAt": 1747400000000 },
{ "coin": "BTC", "venue": "gateio", "price": 64311.7, "bid": 64311.2, "ask": 64312.1, "volume24h": 921.4, "change24hPct": 1.40, "fetchedAt": 1747400000000 },
{ "coin": "BTC", "venue": "kraken", "price": 64309.8, "bid": 64309.0, "ask": 64310.6, "volume24h": 384.5, "change24hPct": 1.38, "fetchedAt": 1747400000000 }
],
"meta": { "fetchedAt": 1747400000000, "source": "coinbase+binance+bitfinex+kraken+gateio" }
}/api/v1/flows/venue-spreadsVenue price pressure versus global median
Query params
coins(string)— Comma-separated coin tickers (default BTC,ETH,SOL).Example response
{
"data": [
{
"coin": "BTC",
"globalMedianUsd": 64311.7,
"rows": [
{ "venue": "coinbase", "priceUsd": 64315.2, "basisBps": 0.54, "bid": 64314.9, "ask": 64315.5, "volume24h": 1842.3, "change24hPct": 1.41, "stale": false, "fetchedAt": 1747400000000 }
],
"strongestPremiumVenue": "coinbase",
"strongestDiscountVenue": "kraken",
"fetchedAt": 1747400000000
}
],
"meta": { "fetchedAt": 1747400000000, "source": "flows:venue-spreads:coinbase+binance+bitfinex+kraken+gateio", "partial": false, "sources": [] }
}/api/v1/flows/kimchiKorean retail premium from Upbit KRW markets
Query params
coin(string)— Coin ticker (default BTC).Example response
{
"data": {
"coin": "BTC",
"region": "KR",
"localVenue": "upbit",
"localPair": "KRW-BTC",
"localPriceKrw": 104970000,
"usdKrw": 1507.06,
"localPriceUsd": 69651.3,
"globalMedianUsd": 68420.4,
"premiumPct": 1.8,
"premiumBps": 180.0,
"bidAskPressure": null,
"interpretation": "premium",
"fetchedAt": 1747400000000
},
"meta": { "fetchedAt": 1747400000000, "source": "flows:kimchi:upbit+frankfurter", "partial": false, "sources": [] }
}/api/v1/flows/etfETF daily flow plus Coinbase proxy
Query params
asset(bitcoin|ethereum)— Default bitcoin.Example response
{
"data": {
"asset": "bitcoin",
"daily": { "latestTotalUsdm": 412.0, "cumulativeUsdm": 38421.5, "latestDateMs": 1747353600000, "source": "farside" },
"coinbaseProxy": {
"coinbasePremiumBps": 8.4,
"coinbaseVolumeShare": 0.18,
"coinbaseTapeDeltaUsd5m": 840000,
"coinbaseNetTradeUsd5m": 840000,
"confidence": "medium",
"label": "Coinbase proxy-only venue pressure read; not ETF attribution"
},
"fetchedAt": 1747400000000
},
"meta": { "fetchedAt": 1747400000000, "source": "flows:etf-proxy:farside+coinbase", "partial": false, "sources": [] }
}/api/v1/flows/signalsTrader-readable flow signals
Query params
coins(string)— Comma-separated coin tickers.Example response
{
"data": [
{
"id": "BTC:spot-led-demand:1747400000000",
"coin": "BTC",
"layer": "composite",
"severity": "hot",
"title": "Spot-led demand with Korea confirmation",
"message": "Coinbase premium, Korea premium, and HL micro flow are all positive.",
"confidence": "high",
"ts": 1747400000000
}
],
"meta": { "fetchedAt": 1747400000000, "source": "flows:signals", "partial": false, "sources": [] }
}/api/v1/flows/summaryFlow Pulse dashboard summary
Query params
coins(string)— Comma-separated coin tickers (default BTC,ETH,SOL).Example response
{
"data": {
"coins": ["BTC", "ETH", "SOL"],
"rows": [
{ "coin": "BTC", "coverage": { "globalSpot": "full", "kimchi": "live", "etfProxy": "live", "hlMicro": "live" }, "flowPressureScore": 68, "headline": "Coinbase +8.4 bps · Kimchi +2.10% · ETF +$412M · HL +$38.0M · positive flow pressure" }
],
"signals": [],
"fetchedAt": 1747400000000
},
"meta": { "fetchedAt": 1747400000000, "source": "flows:summary", "partial": false, "sources": [] }
}/api/v1/flows/historyRedis-backed Flow history series
Query params
coin(string, required)— Coin ticker.metric(flowPressureScore|coinbasePremiumBps|kimchiPremiumBps|etfLatestTotalUsdm|coinbaseTapeDeltaUsd5m|hlMicroNetUsd5m|venueSpreadDispersionBps|sourcePartial, required)— Canonical Flow history metric.interval(1m)— Default 1m.sinceMs(number)— Only return points with t >= sinceMs.Example response
{
"data": {
"coin": "BTC",
"metric": "flowPressureScore",
"interval": "1m",
"points": [
{
"t": 1747400000000,
"v": 68,
"partial": false,
"stale": false,
"source": "flows:summary",
"sources": [],
"coverage": { "globalSpot": "full", "kimchi": "live", "etfProxy": "live", "hlMicro": "live" }
}
],
"retention": "7d rolling",
"enabled": true,
"fetchedAt": 1747400060000
},
"meta": { "fetchedAt": 1747400060000, "source": "flows:history", "partial": false, "sources": [] }
}/api/v1/marketsVenue catalog + per-venue market discovery
Query params
exchange(string)— Venue id or alias (e.g. polymarket, hyperliquid, gateio, BINANCE_FUTURES). Omit for the full venue catalog.pageSize(number)— Markets per page (default 50, max 500).page(number)— Zero-based page index.Example response
{
"data": {
"venues": [
{ "id": "binance", "name": "Binance", "kind": "cex", "status": "live", "capabilities": { "oi": true, "funding": true, "spot": true, "liquidations": true, "options": false, "predictions": false }, "dataSource": "Binance Futures public REST + forceOrder WebSocket" },
{ "id": "cme", "name": "CME", "kind": "tradfi", "status": "planned", "capabilities": { "oi": false, "funding": false, "spot": false, "liquidations": false, "options": false, "predictions": false }, "dataSource": "CME Market Data Platform (licensed) — integration planned" }
],
"exchange": "polymarket",
"markets": [
{ "exchange": "polymarket", "symbol": "0xabc…", "coin": null, "kind": "prediction", "label": "Will BTC close above $100k in 2025?" }
],
"page": 0, "pageSize": 20, "total": 1
},
"meta": { "fetchedAt": 1747400000000, "source": "polymarket:markets" }
}/api/v1/pointsGeneric cross-venue aggregation (type × exchanges × groupBy)
Query params
type(string, required)— OI_AGG | FUNDING_AGG | SPOT (live). Advanced types (TRADE_SIDE_AGNOSTIC_AGG, TPO_AGG, BLOCK_BOOK_SNAPSHOT_AGG) return 501 (roadmap).exchange(string, required)— Repeatable. Venue id or alias (e.g. binance, BINANCE_FUTURES, OKEX_SWAP).coin(string)— Repeatable; or use coins=BTC,ETH.transform.groupBy.type(string)— GROUP_BY_TYPE_SUM folds across exchanges per coin (USD-normalized for OI). Default GROUP_BY_TYPE_NONE.Try it
Example response
{
"data": {
"type": "OI_AGG",
"exchanges": ["binance", "bybit"],
"groupBy": "GROUP_BY_TYPE_SUM",
"rows": [
{ "type": "OI_AGG", "coin": "BTC", "exchange": "AGG", "value": 14112862515.0, "unit": "USD", "byExchange": { "binance": 9821030410.2, "bybit": 4291832104.8 }, "fetchedAt": 1747400000000 }
]
},
"meta": { "fetchedAt": 1747400000000, "source": "points:oi_agg" }
}/api/v1/streams/whalesLive whale tape stream (Server-Sent Events, text/event-stream)
Query params
minUsd(number)— Min notional USD (default 100000).coin(string)— Filter to a single coin.Example response
event: whale
id: 1747400000123
data: { "coin": "BTC", "side": "buy", "notionalUsd": 1281042.5, "price": 64320.2, "ts": 1747400000123, "venue": "hyperliquid" }
event: heartbeat
data: { "ts": 1747400015000 }
event: bye
data: { "reason": "max-duration" }/api/v1/streams/tradesLive HL print stream for one coin (SSE)
Query params
coin(string, required)— HL universe ticker (e.g. BTC).minUsd(number)— Min notional USD filter (default 0).Example response
event: trade
id: 1747400000123
data: { "coin": "BTC", "side": "buy", "price": 64320.2, "size": 1.85, "notionalUsd": 118992.4, "ts": 1747400000123, "venue": "hyperliquid" }
event: heartbeat
data: { "ts": 1747400015000 }/api/v1/streams/fundingLive HL funding-rate changes (SSE)
Query params
coins(string)— Comma-separated tickers (default: full HL universe).minDeltaBps(number)— Min |delta| in bps to emit (default 0.5).Example response
event: funding
id: 1747400000123
data: { "coin": "BTC", "rate": 0.0000182, "periodHours": 1, "prevRate": 0.0000125, "delta": 0.0000057, "ts": 1747400000123, "venue": "hyperliquid" }
event: heartbeat
data: { "ts": 1747400030000 }Roadmap
Next endpoint landing in a subsequent PR: API-key issuance + per-key quota (currently the public surface is open with edge-cache rate-limiting only).
All responses follow the envelope { data, meta: { fetchedAt, source } }. Errors return { error, data: [], meta } with a 5xx status. CORS is open. Cache headers are set per endpoint (30s–60s typically). For real-time feeds use the SSE streams under /api/v1/streams/* with the browser EventSource API.