{"openapi":"3.1.0","info":{"title":"mmflow Open API","version":"1.0.0","description":"Unified derivatives + spot + prediction-market data across Hyperliquid, Binance, Bybit, OKX, BitMEX, Gate.io, Deribit, Lighter, Aster (perps OI/funding/liquidations); Deribit (options); Coinbase, Binance, Bitfinex, Kraken, Gate.io (spot); Polymarket (prediction markets); plus DefiLlama (TVL) and on-chain valuation. CME is registered as a planned venue (requires licensed market data). All endpoints are read-only and public. See /api/v1/markets for the live venue catalog + capabilities. Anonymous rate-limit: 60 requests per minute per IP. Keyed rate-limit: 300 req/min free, 3000 req/min pro.","contact":{"name":"mmflow","url":"https://www.mmflow.ai"},"license":{"name":"Free","url":"https://www.mmflow.ai/docs/api"}},"servers":[{"url":"https://www.mmflow.ai/api/v1"}],"x-websocket":{"url":"wss://ws.mmflow.ai/v1","description":"Live protocol: connect, authenticate with an apiKey, subscribe to (channel, symbol) pairs, and receive JSON `data` frames. Auto-reconnect with subscription replay is built into the official SDKs.","status":"live","auth":{"type":"apiKey","frame":{"op":"auth","apiKey":"<key>"},"options":{"format":"Optional `format: \"msgpack\"` on the auth frame switches every subsequent server frame to binary msgpack encoding (same object shapes). JSON is the default."}},"limits":{"free":{"socketsPerKey":3,"subscriptionsPerSocket":20,"subscribeOpsPerMinute":60},"pro":{"socketsPerKey":20,"subscriptionsPerSocket":200,"subscribeOpsPerMinute":600}},"clientFrames":{"subscribe":{"op":"subscribe","channel":"<channel>","symbol":"<symbol>","id":1},"unsubscribe":{"op":"unsubscribe","channel":"<channel>","symbol":"<symbol>","id":1},"subscribeOrderbookDelta":{"op":"subscribe","channel":"orderbook","symbol":"<symbol>","id":1,"mode":"delta"},"build":{"op":"build","coin":"<symbol>","kind":"tick | volume | pnf | range | trend_reversal | delta | time","params":{"trendTicks":250,"revTicks":155},"days":7,"id":1}},"serverFrames":{"ack":{"type":"ack","id":1,"channel":"<channel>","symbol":"<symbol>"},"data":{"type":"data","channel":"<channel>","symbol":"<symbol>","seq":0,"ts":0,"payload":{}},"heartbeat":{"type":"heartbeat","ts":0},"error":{"type":"error","code":"<code>","message":"<text>"},"buildAccepted":{"type":"build:accepted","id":1,"jobId":"<id>","cacheKey":"rot:res:<hash>","cached":false},"buildProgress":{"type":"build:progress","id":1,"pct":0.42,"trades":0,"totalTrades":0,"bars":0},"buildDone":{"type":"build:done","id":1,"resultKey":"rot:res:<hash>","stats":{},"cached":false},"buildError":{"type":"build:error","id":1,"code":"build_failed","message":"<text>"}},"errorCodes":["unauthorized","rate_limited","bad_request","unknown_channel","unknown_symbol","internal"],"channels":[{"name":"trades","description":"Per-trade prints: { price, size, side, ts, tid? }."},{"name":"orderbook","description":"L2 book updates: { bids, asks, ts }. With subscribe mode:\"delta\", payloads become {kind:\"snapshot\"|\"delta\"} — a keyframe on join and every 30s, otherwise changed-levels [price, size, count] triples where size 0 removes the level."},{"name":"candles","description":"OHLCV bar updates for a symbol/interval."},{"name":"liquidations","description":"Large-trade inferred liquidation-style events: { side, price, size, notionalUsd, inferred }."},{"name":"funding","description":"Funding-rate updates."},{"name":"openInterest","description":"Open-interest updates."},{"name":"markPrice","description":"Mark / index price updates."},{"name":"footprint","description":"Per-bar buy/sell volume-at-price."},{"name":"venueSpread","description":"Flow venue-spread snapshot for a symbol."},{"name":"kimchi","description":"Korean retail premium snapshot for a symbol."},{"name":"etfProxy","description":"ETF daily flow plus Coinbase proxy-only venue pressure for BTC/ETH."},{"name":"flowSignals","description":"Trader-readable flow signals."},{"name":"flowTape","description":"Recent flow tape events."}]},"paths":{"/perps/rotations/build":{"post":{"summary":"Submit a Non-Time Rotation build","description":"Aggregate up to 7 days of recorded ticks into rotation bars (kinds: time, tick, volume, pnf, range, delta, trend_reversal). Builds run server-side with progress at /perps/rotations/job; identical specs within a 5-minute window return cached. When recorder history is unavailable the response is a `degraded` build over the ~1k most recent trades. Body: { coin, kind, params?, days?, tick?, degraded? }.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/{ jobId, cacheKey, cached, degraded }"}}}]}}}}}}},"/perps/rotations/job":{"get":{"summary":"Rotation build progress","description":"Poll a build job: { status: queued|running|done|error, pct, trades, totalTrades, bars, resultKey?, error?, stats? }. Jobs expire 1h after completion.","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RotationJob"}}}]}}}}}}},"/perps/rotations/result":{"get":{"summary":"Fetch a finished rotation build","description":"format=packed (default) streams the gzipped MMB1 binary pack (decode with @mmflow/rotations decodeResultPack after gunzip — bars + resumable builder state + stats). format=json returns decoded bars, refused above ~4MB. Results live ~24h.","parameters":[{"name":"key","in":"query","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","schema":{"type":"string","enum":["packed","json"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RotationBuildResult | binary"}}}]}}}}}}},"/perps/trades/history":{"get":{"summary":"Recorded tick history (rolling ~7 days)","description":"The packed trade chunks behind rotation builds. format=packed returns up to 20 base64(gzip(MMR1)) chunk members per page (decode with @mmflow/rotations decodeTradeChunk); format=json decodes up to 3 chunks server-side into raw trades. Page forward with meta.nextStart until null. Cache 30s.","parameters":[{"name":"coin","in":"query","schema":{"type":"string"}},{"name":"start","in":"query","schema":{"type":"integer"},"description":"Window start (ms). Default now−24h."},{"name":"end","in":"query","schema":{"type":"integer"},"description":"Window end (ms). Default now."},{"name":"format","in":"query","schema":{"type":"string","enum":["packed","json"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TradeChunkPage | RawTrade"}}}}]}}}}}}},"/perps/oi":{"get":{"summary":"Cross-venue open interest snapshot","description":"Latest OI per (coin × venue). Default venues=hl (HL-only, sub-100ms). Pass venues=hl,bybit,okx,binance,bitmex,deribit,gateio to fan out — adds ~500ms latency. The deriv venues (bitmex, deribit, gateio) report USD open interest only (oiContracts=0) and default to BTC,ETH when no coins are given. Cache 30s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"},"description":"Comma-separated coin tickers (e.g. BTC,ETH,SOL)."},{"name":"venues","in":"query","schema":{"type":"string"},"description":"Comma-separated venue codes from {hl, bybit, okx, binance, bitmex, deribit, gateio}. Default: hl."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OiSnap"}}}}]}}}}}}},"/perps/funding":{"get":{"summary":"Cross-venue funding rates","description":"Latest funding rate per (coin × venue). Default venues=hl (HL-only). Pass venues=hl,binance,bybit,bitmex,deribit,gateio to fan out. Each row carries periodHours (HL=1h; Binance/Bybit/BitMEX/Deribit/Gate.io=8h). The deriv venues (bitmex, deribit, gateio) default to BTC,ETH when no coins are given. Cache 30s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"}},{"name":"venues","in":"query","schema":{"type":"string"},"description":"Comma-separated venue codes from {hl, binance, bybit, bitmex, deribit, gateio}. Default: hl."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingSnap"}}}}]}}}}}}},"/perps/oi/history":{"get":{"summary":"HL OI historical time series","description":"Per-coin open interest time series from the mmflow KV archive (cron writes every ~10min, ~7 day retention). Cache 60s.","parameters":[{"name":"coin","in":"query","required":true,"schema":{"type":"string"},"description":"Coin ticker (e.g. BTC)."},{"name":"sinceMs","in":"query","schema":{"type":"integer"},"description":"Only return points with t >= sinceMs. Default: full retention."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OiHistorySeries"}}}]}}}}}}},"/perps/funding/history":{"get":{"summary":"Cross-venue funding historical time series","description":"Per-coin funding rate time series across HL + Binance + Bybit + OKX from the mmflow KV archive (cron writes every ~10min, ~7 day retention). Each point carries a byVenue map. Cache 60s.","parameters":[{"name":"coin","in":"query","required":true,"schema":{"type":"string"},"description":"Coin ticker (e.g. BTC)."},{"name":"sinceMs","in":"query","schema":{"type":"integer"},"description":"Only return points with ts >= sinceMs. Default: full retention."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FundingHistorySeries"}}}]}}}}}}},"/perps/positioning":{"get":{"summary":"Net long/short positioning","description":"Binance retail + Binance top + OKX top long-fractions per coin. Mirror of /api/positioning. Cache 60s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"}},{"name":"period","in":"query","schema":{"type":"string","enum":["15m","1h","4h"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PositioningSnap"}}}}]}}}}}}},"/perps/whales":{"get":{"summary":"HL whale tape (recent large prints)","description":"Recent prints > $threshold notional on Hyperliquid. Default threshold $100k. Cache 10s.","parameters":[{"name":"minUsd","in":"query","schema":{"type":"number"},"description":"Min notional USD threshold (default 100000)."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WhaleTick"}}}}]}}}}}}},"/perps/liquidations":{"get":{"summary":"24h cross-venue liquidations","description":"24h long/short liquidation totals per coin across OKX + Coinalyze + HL inferred. Cache 60s.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LiquidationSnap"}}}}]}}}}}}},"/options/chain":{"get":{"summary":"Deribit option chain","description":"Active option chain per underlying. Cache 60s.","parameters":[{"name":"underlying","in":"query","required":true,"schema":{"type":"string","enum":["BTC","ETH","SOL","XRP"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OptionChainRow"}}}}]}}}}}}},"/options/gex":{"get":{"summary":"Dealer gamma exposure (GEX) by strike","description":"Per-strike dealer gamma + call wall + put wall + gamma flip. Computed from /options/chain via Black-Scholes (r=0). Cache 60s.","parameters":[{"name":"underlying","in":"query","required":true,"schema":{"type":"string","enum":["BTC","ETH","SOL","XRP"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GexSummary"}}}]}}}}}}},"/options/skew":{"get":{"summary":"IV smile + ATM term structure","description":"Per-expiry strike-vs-IV smile and DTE-vs-ATM-IV term structure. Cache 60s.","parameters":[{"name":"underlying","in":"query","required":true,"schema":{"type":"string","enum":["BTC","ETH","SOL","XRP"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SkewSummary"}}}]}}}}}}},"/onchain/etf-flows":{"get":{"summary":"Spot ETF daily net flows (BTC / ETH)","description":"Last-30-day net flows in USDm per ETF ticker, sourced from Farside. Cache 1h.","parameters":[{"name":"asset","in":"query","schema":{"type":"string","enum":["bitcoin","ethereum"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EtfFlowsSnap"}}}]}}}}}}},"/onchain/treasuries":{"get":{"summary":"Public-company crypto treasuries","description":"Companies holding BTC/ETH on balance sheet, with holdings + USD value. Source: CoinGecko. Cache 30min.","parameters":[{"name":"asset","in":"query","schema":{"type":"string","enum":["bitcoin","ethereum"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TreasurySnap"}}}]}}}}}}},"/onchain/valuation":{"get":{"summary":"BTC on-chain valuation metrics","description":"MVRV Z-Score, NUPL, Puell Multiple, Reserve Risk, Realized Cap. Source: bitcoin-data.com. Cache 30min.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ValuationSnap"}}}]}}}}}}},"/flows/venue-spreads":{"get":{"summary":"Cross-venue spot pressure","description":"Basis in bps for Coinbase, Binance, Bitfinex, Kraken, and Gate.io against the per-coin global median. Cache 10s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"},"description":"Comma-separated coin tickers (default BTC,ETH,SOL)."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/FlowApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VenueSpreadSnap"}}}}]}}}}}}},"/flows/kimchi":{"get":{"summary":"Korean retail premium","description":"Upbit KRW market price converted with Frankfurter v2 reference USD/KRW and compared with the global spot median. Cache 10s.","parameters":[{"name":"coin","in":"query","schema":{"type":"string"},"description":"Coin ticker (default BTC)."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/FlowApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/KimchiPremiumSnap"}}}]}}}}}}},"/flows/etf":{"get":{"summary":"ETF daily flow plus Coinbase proxy","description":"Farside daily ETF flow plus Coinbase venue pressure fields. Coinbase fields are labelled as proxy-only data, not attribution. Cache 60s.","parameters":[{"name":"asset","in":"query","schema":{"type":"string","enum":["bitcoin","ethereum"]},"description":"Asset (default bitcoin)."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/FlowApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EtfFlowProxySnap"}}}]}}}}}}},"/flows/signals":{"get":{"summary":"Trader-readable flow signals","description":"Composite flow events built from venue spread, Kimchi premium, ETF proxy, and HL micro flow. Cache 10s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/FlowApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FlowSignal"}}}}]}}}}}}},"/flows/summary":{"get":{"summary":"Flows dashboard summary","description":"Flow Pulse rows with explicit source coverage and visible score components. Defaults to BTC,ETH,SOL. Cache 10s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/FlowApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FlowSummarySnap"}}}]}}}}}}},"/flows/history":{"get":{"summary":"Redis-backed Flow history series","description":"Canonical Flow metric time series archived from /flows/summary. Returns enabled=false with empty points when Redis is unavailable. Cache 60s.","parameters":[{"name":"coin","in":"query","required":true,"schema":{"type":"string"},"description":"Coin ticker (for example BTC)."},{"name":"metric","in":"query","required":true,"schema":{"type":"string","enum":["flowPressureScore","coinbasePremiumBps","kimchiPremiumBps","etfLatestTotalUsdm","coinbaseTapeDeltaUsd5m","hlMicroNetUsd5m","venueSpreadDispersionBps","sourcePartial"]},"description":"Flow history metric key."},{"name":"interval","in":"query","schema":{"type":"string","enum":["1m"]},"description":"Series interval (default 1m)."},{"name":"sinceMs","in":"query","schema":{"type":"number"},"description":"Only return points with t >= sinceMs."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/FlowApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FlowHistorySeries"}}}]}}}}}}},"/markets/spot":{"get":{"summary":"Cross-venue spot ticker","description":"Coinbase + Binance + Bitfinex + Kraken spot ticks per coin. Cache 10s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"},"description":"Comma-separated coin tickers (default BTC,ETH,SOL)."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpotTick"}}}}]}}}}}}},"/markets":{"get":{"summary":"Venue catalog + per-venue market discovery","description":"With no params, returns the catalog of every integrated venue with capability flags + status (CME is listed as planned — requires licensed data). With ?exchange=, returns that venue's instruments, paged. Cache 30s.","parameters":[{"name":"exchange","in":"query","schema":{"type":"string"},"description":"Venue id or alias (e.g. polymarket, hyperliquid, gateio, BINANCE_FUTURES). Omit for the catalog."},{"name":"pageSize","in":"query","schema":{"type":"integer"},"description":"Markets per page (default 50, max 500)."},{"name":"page","in":"query","schema":{"type":"integer"},"description":"Zero-based page index."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MarketsResponse"}}}]}}}}}}},"/points":{"get":{"summary":"Generic cross-venue aggregation (type × exchanges × groupBy)","description":"Unified query surface. type=OI_AGG | FUNDING_AGG | SPOT are live and delegate to the purpose-built endpoints; advanced types (TRADE_SIDE_AGNOSTIC_AGG, TPO_AGG, BLOCK_BOOK_SNAPSHOT_AGG) return 501 (roadmap). transform.groupBy.type=GROUP_BY_TYPE_SUM folds across exchanges per coin. Cache 20s.","parameters":[{"name":"type","in":"query","required":true,"schema":{"type":"string","enum":["OI_AGG","FUNDING_AGG","SPOT"]}},{"name":"exchange","in":"query","required":true,"schema":{"type":"string"},"description":"Repeatable. Venue id or alias."},{"name":"coin","in":"query","schema":{"type":"string"},"description":"Repeatable; or use coins=BTC,ETH."},{"name":"transform.groupBy.type","in":"query","schema":{"type":"string","enum":["GROUP_BY_TYPE_NONE","GROUP_BY_TYPE_SUM"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PointsResponse"}}}]}}}}}}},"/polymarket/events":{"get":{"summary":"Top Polymarket events by liquidity","description":"Active Polymarket binary markets ranked by liquidity × time-to-close. Cache 30s.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PolymarketEvent"}}}}]}}}}}}},"/polymarket/orderbook":{"get":{"summary":"Polymarket CLOB orderbook snapshot","description":"Full bid/ask ladder + best bid/ask + spread + depth for a Polymarket CLOB token. Cache 5s.","parameters":[{"name":"tokenId","in":"query","required":true,"schema":{"type":"string"},"description":"CLOB token id (numeric). Get from /polymarket/events."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OpenApiResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PolymarketBookSnap"}}}]}}}}}}},"/streams/whales":{"get":{"summary":"Live whale tape stream (Server-Sent Events)","description":"SSE stream of HL whale prints over a notional threshold. Each event is a single WhaleTick. Heartbeat every 15s. Reconnect with Last-Event-ID for resume.","parameters":[{"name":"minUsd","in":"query","schema":{"type":"number"},"description":"Min notional USD (default 100000)."},{"name":"coin","in":"query","schema":{"type":"string"},"description":"Filter to a single coin."}],"responses":{"200":{"description":"OK (text/event-stream)","content":{"text/event-stream":{}}}}}},"/streams/trades":{"get":{"summary":"Live HL trade stream for one coin (SSE)","description":"SSE stream of HL prints for a single coin. Each event is one TradeTick. Heartbeat every 15s. Optional minUsd filter to drop small noise. Last-Event-ID resume.","parameters":[{"name":"coin","in":"query","required":true,"schema":{"type":"string"},"description":"Coin ticker (HL universe symbol, e.g. BTC)."},{"name":"minUsd","in":"query","schema":{"type":"number"},"description":"Min notional USD (default 0 — all prints)."}],"responses":{"200":{"description":"OK (text/event-stream)","content":{"text/event-stream":{}}}}}},"/streams/funding":{"get":{"summary":"Live HL funding-rate changes (SSE)","description":"SSE stream of HL funding rate updates. Emits one FundingChange when a coin's rate moves vs the previous tick (delta filter). Polls metaAndAssetCtxs every 30s.","parameters":[{"name":"coins","in":"query","schema":{"type":"string"},"description":"Comma-separated coin tickers to subscribe (default: full HL universe)."},{"name":"minDeltaBps","in":"query","schema":{"type":"number"},"description":"Min absolute funding delta (in bps) to emit — filters noise. Default 0.5."}],"responses":{"200":{"description":"OK (text/event-stream)","content":{"text/event-stream":{}}}}}}},"components":{"schemas":{"OiSnap":{"type":"object","description":"mmflow OiSnap record. See /docs/api for example response.","additionalProperties":true},"FundingSnap":{"type":"object","description":"mmflow FundingSnap record. See /docs/api for example response.","additionalProperties":true},"PositioningSnap":{"type":"object","description":"mmflow PositioningSnap record. See /docs/api for example response.","additionalProperties":true},"WhaleTick":{"type":"object","description":"mmflow WhaleTick record. See /docs/api for example response.","additionalProperties":true},"LiquidationSnap":{"type":"object","description":"mmflow LiquidationSnap record. See /docs/api for example response.","additionalProperties":true},"OptionChainRow":{"type":"object","description":"mmflow OptionChainRow record. See /docs/api for example response.","additionalProperties":true},"GexSummary":{"type":"object","description":"mmflow GexSummary record. See /docs/api for example response.","additionalProperties":true},"SkewSummary":{"type":"object","description":"mmflow SkewSummary record. See /docs/api for example response.","additionalProperties":true},"EtfFlowsSnap":{"type":"object","description":"mmflow EtfFlowsSnap record. See /docs/api for example response.","additionalProperties":true},"TreasurySnap":{"type":"object","description":"mmflow TreasurySnap record. See /docs/api for example response.","additionalProperties":true},"ValuationSnap":{"type":"object","description":"mmflow ValuationSnap record. See /docs/api for example response.","additionalProperties":true},"SpotTick":{"type":"object","description":"mmflow SpotTick record. See /docs/api for example response.","additionalProperties":true},"FlowSourceHealth":{"type":"object","description":"mmflow FlowSourceHealth record. See /docs/api for example response.","additionalProperties":true},"FlowMeta":{"type":"object","description":"mmflow FlowMeta record. See /docs/api for example response.","additionalProperties":true},"FlowApiResponse":{"type":"object","description":"mmflow FlowApiResponse record. See /docs/api for example response.","additionalProperties":true},"VenueSpreadSnap":{"type":"object","description":"mmflow VenueSpreadSnap record. See /docs/api for example response.","additionalProperties":true},"KimchiPremiumSnap":{"type":"object","description":"mmflow KimchiPremiumSnap record. See /docs/api for example response.","additionalProperties":true},"EtfFlowProxySnap":{"type":"object","description":"mmflow EtfFlowProxySnap record. See /docs/api for example response.","additionalProperties":true},"FlowSignal":{"type":"object","description":"mmflow FlowSignal record. See /docs/api for example response.","additionalProperties":true},"FlowSummarySnap":{"type":"object","description":"mmflow FlowSummarySnap record. See /docs/api for example response.","additionalProperties":true},"FlowHistoryPoint":{"type":"object","description":"mmflow FlowHistoryPoint record. See /docs/api for example response.","additionalProperties":true},"FlowHistorySeries":{"type":"object","description":"mmflow FlowHistorySeries record. See /docs/api for example response.","additionalProperties":true},"MarketsResponse":{"type":"object","description":"mmflow MarketsResponse record. See /docs/api for example response.","additionalProperties":true},"MarketInfo":{"type":"object","description":"mmflow MarketInfo record. See /docs/api for example response.","additionalProperties":true},"VenueCatalogEntry":{"type":"object","description":"mmflow VenueCatalogEntry record. See /docs/api for example response.","additionalProperties":true},"PointsResponse":{"type":"object","description":"mmflow PointsResponse record. See /docs/api for example response.","additionalProperties":true},"PointsRow":{"type":"object","description":"mmflow PointsRow record. See /docs/api for example response.","additionalProperties":true},"PolymarketEvent":{"type":"object","description":"mmflow PolymarketEvent record. See /docs/api for example response.","additionalProperties":true},"PolymarketBookSnap":{"type":"object","description":"mmflow PolymarketBookSnap record. See /docs/api for example response.","additionalProperties":true},"OiHistorySeries":{"type":"object","description":"mmflow OiHistorySeries record. See /docs/api for example response.","additionalProperties":true},"FundingHistorySeries":{"type":"object","description":"mmflow FundingHistorySeries record. See /docs/api for example response.","additionalProperties":true},"TradeTick":{"type":"object","description":"mmflow TradeTick record. See /docs/api for example response.","additionalProperties":true},"FundingChange":{"type":"object","description":"mmflow FundingChange record. See /docs/api for example response.","additionalProperties":true},"OpenApiResponse":{"type":"object","required":["data","meta"],"properties":{"data":{},"meta":{"type":"object","required":["fetchedAt","source"],"properties":{"fetchedAt":{"type":"number"},"source":{"type":"string"}}}}}}}}