Contents

Exchange on-chain flows

On-chain exchange flows: inflow, outflow and net (in − out) per exchange and asset over a window, from every scanned transfer into or out of the exchange’s own proof-of-reserves addresses (all sizes on Ethereum, Arbitrum and Base; large transactions on Bitcoin).

GET/api/v1/exchange-flowsEvery key

Description

Internal moves between two addresses of one exchange are left out. coverageFrom = first hour with data (earlier flows are unknown, not zero).

Who can call it

Available with every key and keyless (X-Blockmetric-Access: public). Keys of Free accounts get free-tier data (real-time feeds, 30 days of history, heatmap over time for every coin over the last 24 hours, liquidation levels now for every coin, the same as the free web plan); Pro and Desk keys the data of their plan; API Dev / API Pro raise the limits.

No key
24 h
Free
30 days
Pro
365 days
Desk
1095 days
API Dev
365 days
API Pro
1095 days

History window per plan. Limits: Authentication & limits.

Parameters

Parameters of /exchange-flows
ParameterDescription
hoursintegerWindow in hours, default 24, clamped to 1–2160 and to the plan history.1–2160 · default 24
exchangestringOnly this exchange, e.g. Binance (optional).
assetstringOnly this asset family, e.g. BTC, ETH, USDT, USDC (optional).

Response fields

Every success is { data, meta }; these are the fields of data. meta is the same on every endpoint.

Response fields of /exchange-flows
FieldDescription
windowHoursintegerWindow in hours.
sincestring (ISO 8601)Start of the window (full hour).
rows[]array of objectsThe rows of this view.
rows[].exchangestringExchange name (as labelled from its own proof-of-reserves addresses).
rows[].assetstringAsset symbol (stablecoins, ETH, BTC …).
rows[].chains[]array of stringChains involved.
rows[].inUsdnumberInflow (USD).
rows[].outUsdnumberOutflow (USD).
rows[].netUsdnumberIn − out (USD).
rows[].inAmountnumberUnits of the asset that flowed in (priced and unpriced).
rows[].outAmountnumberUnits of the asset that flowed out.
rows[].inCountintegerTransfers in.
rows[].outCountintegerTransfers out.
rows[].unpricedInCountintegerTransfers in without a fresh price (not in any USD figure).
rows[].unpricedOutCountintegerTransfers out without a fresh price.
rows[].unpricedInAmountnumberUnits of the unpriced inflows.
rows[].unpricedOutAmountnumberUnits of the unpriced outflows.
byExchange[]array of objectsTotals per exchange over all assets (priced transfers only).
byExchange[].exchangestringExchange name (as labelled from its own proof-of-reserves addresses).
byExchange[].inUsdnumberInflow (USD).
byExchange[].outUsdnumberOutflow (USD).
byExchange[].netUsdnumberIn − out (USD).
coverageFromstring (ISO 8601) · nullableFirst hour with data.
updatedAtstring (ISO 8601) · nullableLatest hour with data.

Errors

Code snippets in these docs are licensed under MIT-0: copy them into your own code without attribution. The SDKs, CLI and MCP server will be, once published, Apache-2.0; the name Blockmetric is not licensed (forks must be renamed). Data from the API is governed by the API terms; third-party exchange data by the exchange’s terms.

LiveHyperliquid markets 11sOperationalHyperliquid positions & whales 3sOperationalLiquidation heatmap & levels 8sOperationalLighter markets & liquidations 4sOperationalLighter positions & heatmap 7sOperationalLighter RH positions & heatmap 4sOperationalBinance markets 22sOperationalBybit markets 1mOperationalBinance liquidations 32sOperationalBybit liquidations 32sOperationaldYdX positions & heatmap 9sOperationalGMX positions & heatmap 3sOperationalLong/short & open interest history 46sOperationalOrder books & trade flow 6sOperationalOn-chain transfers 7sOperationalSecurity monitor 29sOperationalBlockmetric Sentiment 12mOperationalOfficial news 1mOperationalAlert delivery 3sOperational10:09:20 UTCData: Blockmetric Research · Binance · Bybit