For quants & researchers
A clean public API across every venue we cover.
Twenty-plus endpoints, one consistent schema. Cross-venue funding and OI, historical time-series, options chain, on-chain valuation — all JSON, no auth for the read tier, two single-file SDKs (TS + Python) you can vendor.
Monday-morning workflow
- 1
Live health check next to each endpoint. /docs/api
- 2
Mirror APIs across both languages; same response shapes. /docs/api/sdk
- 3
Multi-venue, aligned to a common schema. /docs/api
- 4
Deribit chain, normalized to delta + DTE. /options/skew
- 5
Notebook + bot recipes already labeled. /docs/api/cookbook
- 6
Self-serve, per-key usage stats. /profile/api-keys
Pages built for you
OpenAPI 3.1 surface with every endpoint, parameter, and example response.
/docs/api
Single-file TS + Python clients. Vendor them or `npm i @mmflow/sdk`.
/docs/api/sdk
End-to-end notebooks: whale Discord bot, funding-arb backtester, gamma-flip Slack ping.
/docs/api/cookbook
Skew, GEX, OI by strike, term structure — BTC, ETH, SOL, XRP from Deribit.
/options
Time-series across HL / Binance / Bybit / OKX for systematic basis trades.
/docs/api
Multi-anchor VWAPs (session / week / month / quarter) with bands as endpoints.
/orderflow/vwap
Issue, revoke, monitor keys. Per-key usage and rate-limit dashboards.
/profile/api-keys
Live uptime probe across every public endpoint. Refreshes every 30s.
/docs/api/status
Real code
Daily OI z-score regime classifier (Python SDK)
from mmflow import client
import numpy as np
oi = client.perps.oi_history(coin="BTC", days=180)
series = np.array([x["oi"] for x in oi["points"]])
z = (series[-1] - series.mean()) / series.std()
regime = "compressed" if abs(z) < 0.5 else "stretched" if z > 1.5 else "extended"
print(f"BTC OI z={z:.2f} → {regime}")Funding-arb signal (TypeScript SDK)
import { mmflow } from "@mmflow/sdk";
const f = await mmflow.perps.funding({ coin: "BTC" });
const spread = f.venues.hyperliquid.rate - f.venues.binance.rate;
// >5bp spread = arb candidate. Long the cheap side, short the rich side.
if (Math.abs(spread) > 0.0005) {
console.log({ side: spread > 0 ? "short HL / long BN" : "long HL / short BN", bps: (spread * 10_000).toFixed(2) });
}Read the API docs.
OpenAPI 3.1 surface · TS + Python SDKs · cookbook · status page.