参考

交互式 API 参考

API 的每个接口,均由其 OpenAPI 契约生成:参数及其默认值和上限,响应的每个字段及其类型和单位,以及在生产环境中捕获的真实响应。本页没有任何内容是手写的,因此不会与 API 脱节。

同一份契约,供你的工具使用:openapi.json(OpenAPI 3.1,适用于 SDK 生成器和 Swagger UI)、Postman 集合,以及 llms-full.txt——将整份参考汇于一个文本文件,供 AI 智能体使用。

#System

Health, per-feed freshness, the list of served symbols and what each symbol supports. /v1/health is the only route that needs no key.

GET /v1/health无需密钥

Service health. Liveness of the API and its database. No key needed, counted for nobody.

示例:请求与真实响应
curl "https://api.bytnode.com/v1/health"
{
  "status": "ok",
  "timestamp": 1790790231487,
  "database": "connected"
}

GET /v1/status

Freshness of every feed. One row per public feed with its age and staleness threshold (1.5 × the feed's expected interval). Use it to tell 'no event' from 'feed down'. Not counted in your quota.

响应的 12 个字段
data 字段类型单位说明
feeds_checkedinteger | nullcountPublic feeds checked.
feeds_staleinteger | nullcountFeeds older than their threshold.
feeds_in_errorinteger | nullcountFeeds that could not be checked.
max_age_secondsnumber | nullsecondsAge of the oldest feed.
feedsobject[]One row per public feed.
feeds[].feedstringFeed name.
feeds[].familystringData family the feed belongs to.
feeds[].age_secondsnumber | nullsecondsAge of the latest row of the feed.
feeds[].expected_interval_secondsinteger | nullsecondsMaximum legitimate age of the feed.
feeds[].threshold_secondsinteger | nullsecondsAge above which the feed is stale (1.5 × expected_interval_seconds).
feeds[].is_stalebooleanWhether the feed is stale.
feeds[].stale_venuesinteger | nullcountVenues lagging on this feed.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/status"
{
  "status": "ok",
  "timestamp": 1790790110622,
  "data": {
    "feeds_checked": 67,
    "feeds_stale": 0,
    "feeds_in_error": 0,
    "max_age_seconds": 150111.5,
    "feeds": [
      {
        "feed": "klines_futures_1m",
        "family": "prix-volume",
        "age_seconds": 111.2,
        "expected_interval_seconds": 120,
        "threshold_seconds": 180,
        "is_stale": false,
        "stale_venues": 0
      },
      {
        "feed": "klines_1m",
        "family": "prix-volume",
        "age_seconds": 111.2,
        "expected_interval_seconds": 180,
        "threshold_seconds": 270,
        "is_stale": false,
        "stale_venues": 0
      },
      {
        "feed": "klines_multi",
        "family": "prix-volume",
        "age_seconds": 411.2,
        "expected_interval_seconds": 660,
        "threshold_seconds": 990,
        "is_stale": false,
        "stale_venues": null
      }
    ]
  }
}

GET /v1/symbols

List the served trading pairs. The 22 served pairs: 20 USDT-margined perpetual markets (BTC, ETH, SOL, XRP, DOGE, BNB, TRX, SUI, HYPE, XLM, XMR, LINK, ADA, LTC, UNI, GRAM, AVAX, HBAR, NEAR, TAO) plus two spot-only stablecoin pairs (USDCUSDT, USDTUSDC).

响应的 3 个字段
data 字段类型单位说明
[].symbolstringTrading pair, e.g. BTCUSDT.
[].base_assetstringBase asset of the pair.
[].namestringName.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/symbols"
{
  "status": "ok",
  "timestamp": 1790790232799,
  "data_type": "symbols",
  "data": [
    {
      "symbol": "ADAUSDT",
      "base_asset": "ADA",
      "name": "Cardano"
    },
    {
      "symbol": "AVAXUSDT",
      "base_asset": "AVAX",
      "name": "Avalanche"
    },
    {
      "symbol": "BNBUSDT",
      "base_asset": "BNB",
      "name": "BNB"
    }
  ]
}

GET /v1/symbols/{symbol}/capabilities

What a symbol supports. Which raw feeds were active over the last 24 h, and which derived metrics are available, blocked (with the missing feeds) or not applicable (stablecoins have no futures).

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 15 个字段
data 字段类型单位说明
symbolstringTrading pair, e.g. BTCUSDT.
asset_classstringcrypto or stablecoin (spot only, no futures metrics).
feeds_active_last_24hobjectPer raw feed: whether it received data in the last 24 h.
feeds_active_last_24h.futures_klinesboolean
feeds_active_last_24h.spot_ticksboolean
feeds_active_last_24h.futures_ticksboolean
feeds_active_last_24h.oi_snapshotsboolean
feeds_active_last_24h.funding_ratesboolean
feeds_active_last_24h.liquidationsboolean
feeds_active_last_24h.trades_rawboolean
feeds_active_last_24h.klines_multiboolean
feeds_active_last_24h.spot_klinesboolean
feeds_active_last_24h.spot_klines_multiboolean
computed_metrics_availablestring[]Derived metrics available for the symbol.
computed_metrics_blockedobjectDerived metrics unavailable, with the missing feeds.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/symbols/BTCUSDT/capabilities"
{
  "status": "ok",
  "timestamp": 1790790233542,
  "data_type": "symbol_capabilities",
  "symbol": "BTCUSDT",
  "data": {
    "symbol": "BTCUSDT",
    "asset_class": "crypto",
    "feeds_active_last_24h": {
      "futures_klines": true,
      "spot_ticks": true,
      "futures_ticks": true,
      "oi_snapshots": true,
      "funding_rates": true,
      "liquidations": true,
      "trades_raw": true,
      "klines_multi": true,
      "spot_klines": true,
      "spot_klines_multi": true
    },
    "computed_metrics_available": [
      "basis",
      "buysell_ratio",
      "funding_cumulative_24h"
    ],
    "computed_metrics_blocked": {}
  }
}

#Snapshot

One request, up to 61 fields for one symbol: the fastest way to fill a dashboard or give an AI agent full market context. Each field is name=depth (funding_rate_8h=1, klines_1h=24, or true for depth 1); multi-timeframe fields are name@tf=depth (cvd@1h=24). Call it with only symbol to list the fields your plan includes.

GET /v1/snapshot

Many fields for one symbol in one request. Up to 61 fields for one symbol in a single call: prices, flow, derivatives, liquidations, macro, on-chain, options. Each query key is a field and its value a depth: funding_rate_8h=1 (or =true), klines_1h=24. Multi-timeframe fields take @tf: cvd@1h=24. Call it with only symbol to get available_fields (fields without a timeframe), available_multi_tf_fields, timeframes and max_depth. An empty field carries unavailable (not_applicable, no_api_key or no_data) so 'no measure' is never mistaken for 'nothing happened'. Response: data is an object keyed by field name, plus coverage (venues per multi-venue metric) and partial (true if a field failed).

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list. Alone, it returns the catalogue of the fields your plan includes.
basisinteger | true—Futures-spot basis (N latest minutes). Same content as /v1/basis. Value: depth N, or true for 1.
btc_feesinteger | true—Recommended Bitcoin fees. Same content as /v1/btc/fees. Value: depth N, or true for 1.
btc_mempoolinteger | true—Bitcoin mempool. Same content as /v1/btc/mempool. Value: depth N, or true for 1.
btc_mininginteger | true—Mining pool concentration. Same content as /v1/btc/mining. Value: depth N, or true for 1.
btc_networkinteger | true—Bitcoin network state. Same content as /v1/btc/network. Value: depth N, or true for 1.
buysell_ratiointeger | true—Buy/sell volume ratio. Same content as /v1/buysell/ratio. Value: depth N, or true for 1.
eth_defiinteger | true—Ethereum DeFi. Same content as /v1/eth/defi. Value: depth N, or true for 1.
eth_deflationinteger | true—ETH deflation. Same content as /v1/eth/deflation. Value: depth N, or true for 1.
eth_gasinteger | true—Ethereum gas. Same content as /v1/eth/gas. Value: depth N, or true for 1.
eth_gas_momentuminteger | true—Gas momentum. Same content as /v1/eth/gas-momentum. Value: depth N, or true for 1.
eth_ratiointeger | true—ETH/BTC ratio. Same content as /v1/eth/ratio. Value: depth N, or true for 1.
eth_squeezeinteger | true—ETH supply squeeze index. Same content as /v1/eth/squeeze. Value: depth N, or true for 1.
eth_stakinginteger | true—ETH staking. Same content as /v1/eth/staking. Value: depth N, or true for 1.
eth_supplyinteger | true—ETH supply and burn. Same content as /v1/eth/supply. Value: depth N, or true for 1.
fear_greedinteger | true—Crypto Fear & Greed Index. Same content as /v1/fear-greed. Value: depth N, or true for 1.
funding_cumulativeinteger | true—Funding summed over 24 h. Same content as /v1/funding/cumulative. Value: depth N, or true for 1.
funding_nextinteger | true—Next funding forecast. Same content as /v1/funding/next. Value: depth N, or true for 1.
funding_rate_8hinteger | true—Latest settled funding window. Same content as /v1/funding/rate. Value: depth N, or true for 1.
futures_ticksinteger | true—Individual futures trades (N trades), bounded by your plan's tick window. Same content as /v1/raw/futures-ticks. Value: depth N, or true for 1.
global_marketinteger | true—Total crypto market cap and dominance. Same content as /v1/global. Value: depth N, or true for 1.
heatmapinteger | true—Liquidation heatmap clusters. Same content as /v1/heatmap/clusters. Value: depth N, or true for 1.
klines_15minteger | true—15-minute OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1.
klines_1dinteger | true—Daily OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1.
klines_1hinteger | true—1-hour OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1.
klines_1minteger | true—1-minute OHLCV candles (N candles). Same content as /v1/raw/klines. Value: depth N, or true for 1.
klines_1winteger | true—Weekly OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1.
klines_30minteger | true—30-minute OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1.
klines_4hinteger | true—4-hour OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1.
klines_5minteger | true—5-minute OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1.
liq_cumulativeinteger | true—Liquidations long/short USD (N latest minutes). Same content as /v1/liquidations/cumulative. Value: depth N, or true for 1.
liq_ratiointeger | true—Big vs small liquidations. Same content as /v1/liquidations/ratio. Value: depth N, or true for 1.
liquidationsinteger | true—Individual liquidations over the last N minutes. Same content as /v1/raw/liquidations. Value: depth N, or true for 1.
macrointeger | true—Latest value of every FRED series. Same content as /v1/macro. Value: depth N, or true for 1.
macro_correlationsinteger | true—BTC correlation with DXY, S&P 500, gold, VIX. Same content as /v1/macro/correlations. Value: depth N, or true for 1.
macro_momentuminteger | true—Macro momentum score. Same content as /v1/macro/momentum. Value: depth N, or true for 1.
macro_riskinteger | true—Risk-on / risk-off score. Same content as /v1/macro/risk. Value: depth N, or true for 1.
net_liquidityinteger | true—US net liquidity. Same content as /v1/macro/net-liquidity. Value: depth N, or true for 1.
oi_deltainteger | true—Open interest change (N latest minutes). Same content as /v1/oi/delta. Value: depth N, or true for 1.
oi_historyinteger | true—Total open interest per minute (N minutes). Same content as /v1/raw/oi. Value: depth N, or true for 1.
oi_snapshotsinteger | true—Latest total open interest. Same content as /v1/raw/oi. Value: depth N, or true for 1.
onchain_active_addressesinteger | true—Bitcoin active addresses. Same content as /v1/onchain/active-addresses. Value: depth N, or true for 1.
onchain_miner_stressinteger | true—Bitcoin miner stress. Same content as /v1/onchain/miner-stress. Value: depth N, or true for 1.
onchain_mvrvinteger | true—Bitcoin MVRV. Same content as /v1/onchain/mvrv. Value: depth N, or true for 1.
onchain_nvtinteger | true—Bitcoin NVT. Same content as /v1/onchain/nvt. Value: depth N, or true for 1.
optionsinteger | true—Options market summary for the symbol's asset. Same content as /v1/options/summary. Value: depth N, or true for 1.
orderbookinteger | true—Latest aggregated order book. Same content as /v1/raw/orderbook. Value: depth N, or true for 1.
price_changeinteger | true—Price change over 1m to 1w, in percent. Same content as /v1/price-change. Value: depth N, or true for 1.
spot_ticksinteger | true—Individual spot trades (N trades), bounded by your plan's tick window. Same content as /v1/raw/spot-ticks. Value: depth N, or true for 1.
taker_combinedinteger | true—Taker buy/sell volume per minute (N minutes). Same content as /v1/raw/taker-combined. Value: depth N, or true for 1.
tokenomicsinteger | true—Supply, market cap, FDV. Same content as /v1/tokenomics. Value: depth N, or true for 1.
trade_sizeinteger | true—Average trade size. Same content as /v1/trades/avg-size. Value: depth N, or true for 1.
trades_rawinteger | true—Trades aggregated per second (N seconds). Same content as /v1/raw/trades. Value: depth N, or true for 1.
vwapinteger | true—Intraday VWAP (N latest minutes). Same content as /v1/vwap. Value: depth N, or true for 1.

另有 55 个多周期字段,命名为 field@tf(cvd@1h、trade@5m…)。

响应的 27 个字段
data 字段类型单位说明
funding_rate_8hobject
funding_rate_8h.timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
funding_rate_8h.bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
funding_rate_8h.ratenumber | nullrate per 8 h, fraction (0.0001 = 0.01 % per 8 h)Settled funding rate, normalised to an 8-hour period, open-interest weighted across venues.
funding_rate_8h.apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
funding_rate_8h.exchange_countinteger | nullcountNumber of venues in the weighted average.
basisobject[]
basis[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
basis[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
basis[].basis_valuenumber | nullquote currency (USDT for BTCUSDT)Futures price - spot price.
basis[].basis_pctnumber | nullpercent (58.5 = 58.5 %)(futures - spot) / spot, in percent. Positive = contango.
basis[].futures_pricenumber | nullquote currency (USDT for BTCUSDT)Perpetual futures price, open-interest weighted across venues.
basis[].spot_pricenumber | nullquote currency (USDT for BTCUSDT)Spot price across venues.
fear_greedobject
fear_greed.timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
fear_greed.timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
fear_greed.valueinteger | nulldimensionless scoreValue of the series.
fear_greed.value_classificationstringLabel published by alternative.me: Extreme Fear, Fear, Neutral, Greed or Extreme Greed.
cvd@1hobject[]
cvd@1h[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
cvd@1h[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
cvd@1h[].symbolstringTrading pair, e.g. BTCUSDT.
cvd@1h[].cvd_seriesnumber | null[]base asset quantity (BTC for BTCUSDT)Cumulative volume delta inside the bucket, one point per minute, starting from 0 at the bucket start.
cvd@1h[].net_deltanumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume - taker sell volume over the bucket, base asset units.
cvd@1h[].taker_buy_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume over the bucket.
cvd@1h[].taker_sell_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker sell volume over the bucket.
cvd@1h[].points_countinteger | nullcountNumber of one-minute points in cvd_series.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/snapshot?symbol=BTCUSDT&funding_rate_8h=1&basis=1&fear_greed=1&cvd@1h=2"
{
  "status": "ok",
  "timestamp": 1790790234258,
  "data_type": "snapshot",
  "partial": false,
  "data": {
    "funding_rate_8h": {
      "time": "2026-09-30T08:00:00.000Z",
      "bucket": "2026-09-30T08:00:00.000Z",
      "rate": 0.00006287020093464952,
      "apr_pct": 6.884287002344122
    },
    "basis": [
      {
        "time": "2026-09-30T17:43:37.309Z",
        "timestamp": "2026-09-30T17:43:37.309Z",
        "basis_value": -38.03961943906421,
        "basis_pct": -0.04526350810118282,
        "futures_price": 84002.17394512612,
        "spot_price": 84040.21356456519
      }
    ],
    "fear_greed": {
      "time": "2026-09-30T00:00:00.000Z",
      "timestamp": "2026-09-30T00:00:00.000Z",
      "value": 71,
      "value_classification": "Greed"
    },
    "cvd@1h": [
      {
        "time": "2026-09-30T16:00:00.000Z",
        "bucket": "2026-09-30T16:00:00.000Z",
        "symbol": "BTCUSDT",
        "cvd_series": [
          45.888329999999726,
          69.2295500000001,
          200.21975000000012
        ],
        "net_delta": -707.4313099999853,
        "taker_buy_volume": 8806.463150000012,
        "taker_sell_volume": 9513.894459999998,
        "points_count": 60
      },
      {
        "time": "2026-09-30T15:00:00.000Z",
        "bucket": "2026-09-30T15:00:00.000Z",
        "symbol": "BTCUSDT",
        "cvd_series": [
          -662.8237799999529,
          -701.9267099999539,
          -770.6161599999542
        ],
        "net_delta": -959.671869999996,
        "taker_buy_volume": 14950.27055999998,
        "taker_sell_volume": 15909.942429999976,
        "points_count": 60
      }
    ]
  },
  "coverage": {
    "funding_rate_8h": {
      "status": "available",
      "effect": "weighted",
      "count_field": "exchange_count"
    },
    "basis": {
      "status": "unavailable",
      "reason": "pre_aggregated"
    },
    "cvd@1h": {
      "status": "unavailable",
      "reason": "pre_aggregated"
    }
  }
}

#Market: prices & volumes

OHLCV candles, individual trades, price change and the aggregated order book. Volumes are aggregated across venues (spot and perpetual futures); OHLC comes from one reference spot market per symbol.

GET /v1/orderbook/aggregated

Order book statistics per bucket. Average, min and max of bid/ask liquidity and imbalance over the latest closed bucket. Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 15 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].symbolstringTrading pair, e.g. BTCUSDT.
[].bid_total_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average bid liquidity over the bucket.
[].bid_total_minnumber | nullbase asset quantity (BTC for BTCUSDT)Minimum bid liquidity over the bucket.
[].bid_total_maxnumber | nullbase asset quantity (BTC for BTCUSDT)Maximum bid liquidity over the bucket.
[].ask_total_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average ask liquidity over the bucket.
[].ask_total_minnumber | nullbase asset quantity (BTC for BTCUSDT)Minimum ask liquidity over the bucket.
[].ask_total_maxnumber | nullbase asset quantity (BTC for BTCUSDT)Maximum ask liquidity over the bucket.
[].imbalance_avgnumber | nullfraction from -1 to 1Average book imbalance over the bucket.
[].imbalance_minnumber | nullfraction from -1 to 1Minimum book imbalance over the bucket.
[].imbalance_maxnumber | nullfraction from -1 to 1Maximum book imbalance over the bucket.
[].imbalance_stdnumber | nullfractionStandard deviation of the imbalance over the bucket (how unstable the book was).
[].samples_countinteger | nullcountNumber of order book snapshots averaged in the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/orderbook/aggregated?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790253648,
  "data_type": "orderbook_aggregated_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "symbol": "BTCUSDT",
      "bid_total_avg": 77.31108677777776,
      "bid_total_min": 15.91023,
      "bid_total_max": 167.77567,
      "ask_total_avg": 60.23020433333331,
      "ask_total_min": 13.96013,
      "ask_total_max": 195.13757,
      "imbalance_avg": 0.1101654001703496,
      "imbalance_min": -0.7572062426851045,
      "imbalance_max": 0.8213553258747318,
      "imbalance_std": 0.33307667708489624,
      "samples_count": 360,
      "is_closed": true
    }
  ]
}

GET /v1/orderbook/aggregated/history

Order book statistics history. Same as /v1/orderbook/aggregated, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 15 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].symbolstringTrading pair, e.g. BTCUSDT.
[].bid_total_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average bid liquidity over the bucket.
[].bid_total_minnumber | nullbase asset quantity (BTC for BTCUSDT)Minimum bid liquidity over the bucket.
[].bid_total_maxnumber | nullbase asset quantity (BTC for BTCUSDT)Maximum bid liquidity over the bucket.
[].ask_total_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average ask liquidity over the bucket.
[].ask_total_minnumber | nullbase asset quantity (BTC for BTCUSDT)Minimum ask liquidity over the bucket.
[].ask_total_maxnumber | nullbase asset quantity (BTC for BTCUSDT)Maximum ask liquidity over the bucket.
[].imbalance_avgnumber | nullfraction from -1 to 1Average book imbalance over the bucket.
[].imbalance_minnumber | nullfraction from -1 to 1Minimum book imbalance over the bucket.
[].imbalance_maxnumber | nullfraction from -1 to 1Maximum book imbalance over the bucket.
[].imbalance_stdnumber | nullfractionStandard deviation of the imbalance over the bucket (how unstable the book was).
[].samples_countinteger | nullcountNumber of order book snapshots averaged in the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/orderbook/aggregated/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790254338,
  "data_type": "orderbook_aggregated_1h_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "symbol": "BTCUSDT",
      "bid_total_avg": 77.31108677777776,
      "bid_total_min": 15.91023,
      "bid_total_max": 167.77567,
      "ask_total_avg": 60.23020433333331,
      "ask_total_min": 13.96013,
      "ask_total_max": 195.13757,
      "imbalance_avg": 0.1101654001703496,
      "imbalance_min": -0.7572062426851045,
      "imbalance_max": 0.8213553258747318,
      "imbalance_std": 0.33307667708489624,
      "samples_count": 360,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "symbol": "BTCUSDT",
      "bid_total_avg": 97.48639438888884,
      "bid_total_min": 18.47669,
      "bid_total_max": 637.77143,
      "ask_total_avg": 60.95369705555554,
      "ask_total_min": 17.22111,
      "ask_total_max": 184.00522,
      "imbalance_avg": 0.18011210536554623,
      "imbalance_min": -0.6685603180787127,
      "imbalance_max": 0.920172262040769,
      "imbalance_std": 0.34668077416820864,
      "samples_count": 360,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "symbol": "BTCUSDT",
      "bid_total_avg": 76.40199952777775,
      "bid_total_min": 15.42072,
      "bid_total_max": 589.87834,
      "ask_total_avg": 69.66592174999997,
      "ask_total_min": 15.17512,
      "ask_total_max": 199.04109,
      "imbalance_avg": 0.0009829514470542126,
      "imbalance_min": -0.8204603241070808,
      "imbalance_max": 0.8587994759285994,
      "imbalance_std": 0.3888677188193186,
      "samples_count": 360,
      "is_closed": true
    }
  ]
}

GET /v1/price-change

Price change over 1m to 1w. Rolling price change in percent over eight windows, from the latest price. Spot-based for stablecoins.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 13 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
symbolstringTrading pair, e.g. BTCUSDT.
pricenumber | nullquote currency (USDT for BTCUSDT)Price.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
changesobjectpercent (58.5 = 58.5 %)Price change over each window, keyed by window (1m … 1w), in percent.
changes.1mnumber | null
changes.5mnumber | null
changes.15mnumber | null
changes.30mnumber | null
changes.1hnumber | null
changes.4hnumber | null
changes.1dnumber | null
changes.1wnumber | null
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/price-change?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790241839,
  "data_type": "price_change",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:42:00.000Z",
    "symbol": "BTCUSDT",
    "price": 84038,
    "timestamp": "2026-09-30T17:42:00.000Z",
    "changes": {
      "1m": 0.01874503479733047,
      "5m": 0.13617127553449587,
      "15m": -0.10699171417461883,
      "30m": -0.3125685782578008,
      "1h": -0.3084296187335405,
      "4h": -0.588380795309514,
      "1d": 1.0557960557960555,
      "1w": -0.11648995477678913
    }
  }
}

GET /v1/raw/futures-ticks

Individual futures trades. Raw perpetual futures executions across venues, most recent first. Kept 72 hours.

参数类型默认值说明
limitinteger · 1–10000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].sidestringTrades: buy or sell (aggressor side). Liquidations: long or short (the position liquidated).
[].pricenumber | nullquote currency (USDT for BTCUSDT)Price.
[].quantitynumber | nullbase asset quantity (BTC for BTCUSDT)Quantity traded or liquidated, in base asset units.
[].usd_valuenumber | nullUSDNotional value: price × quantity.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/futures-ticks?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790238775,
  "data_type": "raw_futures_ticks",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:43:58.119Z",
      "timestamp": "2026-09-30T17:43:58.119Z",
      "side": "sell",
      "price": 84009.1,
      "quantity": 0.012,
      "usd_value": 1008.1092
    },
    {
      "time": "2026-09-30T17:43:58.119Z",
      "timestamp": "2026-09-30T17:43:58.119Z",
      "side": "sell",
      "price": 84009.1,
      "quantity": 0.002,
      "usd_value": 168.0182
    },
    {
      "time": "2026-09-30T17:43:58.119Z",
      "timestamp": "2026-09-30T17:43:58.119Z",
      "side": "sell",
      "price": 84009.1,
      "quantity": 0.002,
      "usd_value": 168.0182
    }
  ]
}

GET /v1/raw/klines

1-minute OHLCV candles. OHLC from one reference SPOT market per symbol; volume, taker buy and taker sell AGGREGATED across venues, spot and futures. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–100060Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 10 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].opennumber | nullquote currency (USDT for BTCUSDT)Opening price of the candle.
[].highnumber | nullquote currency (USDT for BTCUSDT)Highest price of the candle.
[].lownumber | nullquote currency (USDT for BTCUSDT)Lowest price of the candle.
[].closenumber | nullquote currency (USDT for BTCUSDT)Closing price of the candle (last price for the open candle).
[].volumenumber | nullbase asset quantity (BTC for BTCUSDT)Volume traded, AGGREGATED across venues (spot + perpetual futures), in base asset units.
[].taker_buynumber | nullbase asset quantity (BTC for BTCUSDT)Aggressive (taker) buy volume, aggregated across venues.
[].taker_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Aggressive (taker) sell volume, aggregated across venues.
[].volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/klines?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790235511,
  "data_type": "raw_klines",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:42:00.000Z",
      "timestamp": "2026-09-30T17:42:00.000Z",
      "open": 84022.24,
      "high": 84038.01,
      "low": 84010,
      "close": 84038,
      "volume": 38.62342667000003,
      "taker_buy": 20.54720392,
      "taker_sell": 18.076222750000024,
      "volume_estimated": false
    },
    {
      "time": "2026-09-30T17:41:00.000Z",
      "timestamp": "2026-09-30T17:41:00.000Z",
      "open": 84014.86,
      "high": 84022.25,
      "low": 84004,
      "close": 84022.25,
      "volume": 20.711201289999988,
      "taker_buy": 13.07271575999999,
      "taker_sell": 7.638485529999997,
      "volume_estimated": false
    },
    {
      "time": "2026-09-30T17:40:00.000Z",
      "timestamp": "2026-09-30T17:40:00.000Z",
      "open": 84008.01,
      "high": 84014.87,
      "low": 83982,
      "close": 84014.86,
      "volume": 22.87509986999998,
      "taker_buy": 13.033891349999983,
      "taker_sell": 9.841208519999991,
      "volume_estimated": false
    }
  ]
}

GET /v1/raw/klines/{interval}

OHLCV candles for an interval. Same as /v1/raw/klines for 5m to 1w. The last candle is the one in progress. Most recent first. Page backwards with until_ms.

参数类型默认值说明
interval 必填string—Candle interval in the path: 1m, 5m, 15m, 30m, 1h, 4h, 1d or 1w.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 10 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].opennumber | nullquote currency (USDT for BTCUSDT)Opening price of the candle.
[].highnumber | nullquote currency (USDT for BTCUSDT)Highest price of the candle.
[].lownumber | nullquote currency (USDT for BTCUSDT)Lowest price of the candle.
[].closenumber | nullquote currency (USDT for BTCUSDT)Closing price of the candle (last price for the open candle).
[].volumenumber | nullbase asset quantity (BTC for BTCUSDT)Volume traded, AGGREGATED across venues (spot + perpetual futures), in base asset units.
[].taker_buynumber | nullbase asset quantity (BTC for BTCUSDT)Aggressive (taker) buy volume, aggregated across venues.
[].taker_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Aggressive (taker) sell volume, aggregated across venues.
[].volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/klines/1h?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790236326,
  "data_type": "raw_klines_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "open": 84134.43,
      "high": 84490.01,
      "low": 84134.43,
      "close": 84349.44,
      "volume": 2280.227277129998,
      "taker_buy": 1170.2562601299987,
      "taker_sell": 1109.9710169999994,
      "volume_estimated": false
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "open": 83800.01,
      "high": 84295.71,
      "low": 83694,
      "close": 84134.43,
      "volume": 3350.4473884966005,
      "taker_buy": 1741.3496878,
      "taker_sell": 1609.097700696601,
      "volume_estimated": false
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "open": 84637.74,
      "high": 84644.83,
      "low": 83373,
      "close": 83800.01,
      "volume": 6771.307420519992,
      "taker_buy": 3160.2593737299967,
      "taker_sell": 3611.0480467899943,
      "volume_estimated": false
    }
  ]
}

GET /v1/raw/oi

Total open interest per minute. Open interest summed across futures venues, per minute. Most recent first. Page backwards with until_ms.

参数类型默认值说明
limitinteger · 1–100030Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 3 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].oi_totalnumber | nullbase asset quantity (BTC for BTCUSDT)Total open interest across venues, base asset units.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/oi?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790240616,
  "data_type": "raw_oi",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:44:00.000Z",
      "timestamp": "2026-09-30T17:44:00.000Z",
      "oi_total": 344631.13178000005
    },
    {
      "time": "2026-09-30T17:43:00.000Z",
      "timestamp": "2026-09-30T17:43:00.000Z",
      "oi_total": 344631.13178000005
    },
    {
      "time": "2026-09-30T17:42:00.000Z",
      "timestamp": "2026-09-30T17:42:00.000Z",
      "oi_total": 344689.02418000007
    }
  ]
}

GET /v1/raw/orderbook

Aggregated order book, latest. Bid and ask liquidity and imbalance from the latest book of each venue (a venue silent for 30 s is not summed).

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
bid_totalnumber | nullbase asset quantity (BTC for BTCUSDT)Resting bid liquidity summed over the top of book of each venue, base asset units.
ask_totalnumber | nullbase asset quantity (BTC for BTCUSDT)Resting ask liquidity summed over the top of book of each venue, base asset units.
imbalancenumber | nullfraction from -1 to 1(bid_total - ask_total) / (bid_total + ask_total) across venues.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/orderbook?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790239392,
  "data_type": "raw_orderbook",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:58.138Z",
    "timestamp": "2026-09-30T17:43:58.138Z",
    "bid_total": 64.76607000000001,
    "ask_total": 69.16233,
    "imbalance": -0.0328254500165759
  }
}

GET /v1/raw/spot-ticks

Individual spot trades. Raw spot executions across venues, most recent first. Kept 72 hours.

参数类型默认值说明
limitinteger · 1–10000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].sidestringTrades: buy or sell (aggressor side). Liquidations: long or short (the position liquidated).
[].pricenumber | nullquote currency (USDT for BTCUSDT)Price.
[].quantitynumber | nullbase asset quantity (BTC for BTCUSDT)Quantity traded or liquidated, in base asset units.
[].usd_valuenumber | nullUSDNotional value: price × quantity.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/spot-ticks?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790238168,
  "data_type": "raw_spot_ticks",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:43:57.861Z",
      "timestamp": "2026-09-30T17:43:57.861Z",
      "side": "buy",
      "price": 84038.1,
      "quantity": 0.00002379,
      "usd_value": 1.999266399
    },
    {
      "time": "2026-09-30T17:43:57.657Z",
      "timestamp": "2026-09-30T17:43:57.657Z",
      "side": "sell",
      "price": 84046,
      "quantity": 0.00497,
      "usd_value": 417.70861999999994
    },
    {
      "time": "2026-09-30T17:43:57.609Z",
      "timestamp": "2026-09-30T17:43:57.609Z",
      "side": "buy",
      "price": 84038.1,
      "quantity": 0.00058779,
      "usd_value": 49.39675479900001
    }
  ]
}

GET /v1/raw/taker-combined

Taker buy/sell volume per minute. Aggressive buy and sell volume per minute, aggregated across venues. Most recent first. Page backwards with until_ms.

参数类型默认值说明
limitinteger · 1–100030Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 4 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].taker_buynumber | nullbase asset quantity (BTC for BTCUSDT)Aggressive (taker) buy volume, aggregated across venues.
[].taker_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Aggressive (taker) sell volume, aggregated across venues.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/taker-combined?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790240002,
  "data_type": "raw_taker_combined",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:42:00.000Z",
      "timestamp": "2026-09-30T17:42:00.000Z",
      "taker_buy": 55.96537000000028,
      "taker_sell": 76.6487100000001
    },
    {
      "time": "2026-09-30T17:41:00.000Z",
      "timestamp": "2026-09-30T17:41:00.000Z",
      "taker_buy": 63.93851000000009,
      "taker_sell": 42.53864
    },
    {
      "time": "2026-09-30T17:40:00.000Z",
      "timestamp": "2026-09-30T17:40:00.000Z",
      "taker_buy": 109.69762000000009,
      "taker_sell": 100.76166000000012
    }
  ]
}

GET /v1/raw/trades

Trades aggregated per second. Every trade of every venue summed per second: volume, trade count, taker buy and sell. Kept 72 hours. Most recent first. Page backwards with until_ms.

参数类型默认值说明
limitinteger · 1–100060Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].total_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Total traded volume over the period, base asset units.
[].trade_countinteger | nullcountNumber of trades.
[].taker_buy_volnumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume.
[].taker_sell_volnumber | nullbase asset quantity (BTC for BTCUSDT)Taker sell volume.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/trades?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790236947,
  "data_type": "raw_trades",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:43:55.000Z",
      "timestamp": "2026-09-30T17:43:55.000Z",
      "total_volume": 1.04198,
      "trade_count": 34,
      "taker_buy_vol": 0.8699800000000001,
      "taker_sell_vol": 0.172
    },
    {
      "time": "2026-09-30T17:43:54.000Z",
      "timestamp": "2026-09-30T17:43:54.000Z",
      "total_volume": 0.11987,
      "trade_count": 9,
      "taker_buy_vol": 0.11257,
      "taker_sell_vol": 0.0073
    },
    {
      "time": "2026-09-30T17:43:53.000Z",
      "timestamp": "2026-09-30T17:43:53.000Z",
      "total_volume": 0.6443000000000001,
      "trade_count": 9,
      "taker_buy_vol": 0.6309000000000001,
      "taker_sell_vol": 0.0134
    }
  ]
}

GET /v1/raw/trades/large

Large individual trades. Individual trades above min_usd (default 100,000 USD), all venues, spot and futures. The venue is not disclosed (aggregation-only contract). Most recent first. Page backwards with until_ms.

参数类型默认值说明
min_usdnumber100000Minimum notional in USD (default 100000, minimum 1000).
limitinteger · 1–100050Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].sidestringTrades: buy or sell (aggressor side). Liquidations: long or short (the position liquidated).
[].pricenumber | nullquote currency (USDT for BTCUSDT)Price.
[].quantitynumber | nullbase asset quantity (BTC for BTCUSDT)Quantity traded or liquidated, in base asset units.
[].usd_valuenumber | nullUSDNotional value: price × quantity.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/trades/large?symbol=BTCUSDT&min_usd=100000&limit=3"
{
  "status": "ok",
  "timestamp": 1790790237569,
  "data_type": "raw_trades_large",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:43:33.084Z",
      "timestamp": "2026-09-30T17:43:33.084Z",
      "side": "sell",
      "price": 84012.5,
      "quantity": 1.2113,
      "usd_value": 101764.34125
    },
    {
      "time": "2026-09-30T17:43:17.525Z",
      "timestamp": "2026-09-30T17:43:17.525Z",
      "side": "sell",
      "price": 84015.1,
      "quantity": 1.1906,
      "usd_value": 100028.37806000002
    },
    {
      "time": "2026-09-30T17:43:03.938Z",
      "timestamp": "2026-09-30T17:43:03.938Z",
      "side": "sell",
      "price": 84027.2,
      "quantity": 2.9764,
      "usd_value": 250098.55808
    }
  ]
}

#Order flow

Who is buying and who is selling: trade candles (spot, futures, combined), CVD, VWAP, buy/sell ratio, average trade size and inter-venue spread. Every bucketed series says whether the value is final (is_closed).

GET /v1/buysell/ratio

Buy/sell volume ratio. Taker buy share of volume over the last 5 minutes, all venues. Above 0.5 = buyers dominate.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
buy_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume over the window.
sell_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker sell volume over the window.
buy_rationumber | nullfraction (0.585 = 58.5 %)buy_volume / (buy_volume + sell_volume). Above 0.5 = buyers dominate.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/buysell/ratio?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790256317,
  "data_type": "buysell_ratio",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:35.160Z",
    "timestamp": "2026-09-30T17:43:35.160Z",
    "buy_volume": 414.7831900000006,
    "sell_volume": 361.0590300000007,
    "buy_ratio": 0.5346231222116269
  }
}

GET /v1/buysell/ratio/history

Buy/sell ratio history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 7 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].buy_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume over the window.
[].sell_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker sell volume over the window.
[].buy_rationumber | nullfraction (0.585 = 58.5 %)buy_volume / (buy_volume + sell_volume). Above 0.5 = buyers dominate.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/buysell/ratio/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790256928,
  "data_type": "buysell_ratio_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "buy_volume": 227.26665000000023,
      "sell_volume": 291.9107799999998,
      "buy_ratio": 0.4377437016089089,
      "points": 59,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "buy_volume": 344.0962499999999,
      "sell_volume": 576.9466400000017,
      "buy_ratio": 0.37359416563109166,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "buy_volume": 2437.820319999956,
      "sell_volume": 1621.1675800000216,
      "buy_ratio": 0.6005980751999703,
      "points": 60,
      "is_closed": true
    }
  ]
}

GET /v1/cvd

Cumulative volume delta per bucket. Net taker delta of the latest closed bucket, with its minute-by-minute path (cvd_series), aggregated across venues. Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 9 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].symbolstringTrading pair, e.g. BTCUSDT.
[].cvd_seriesnumber | null[]base asset quantity (BTC for BTCUSDT)Cumulative volume delta inside the bucket, one point per minute, starting from 0 at the bucket start.
[].net_deltanumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume - taker sell volume over the bucket, base asset units.
[].taker_buy_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume over the bucket.
[].taker_sell_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker sell volume over the bucket.
[].points_countinteger | nullcountNumber of one-minute points in cvd_series.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/cvd?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790252033,
  "data_type": "cvd_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "symbol": "BTCUSDT",
      "cvd_series": [
        45.888329999999726,
        69.2295500000001,
        200.21975000000012
      ],
      "net_delta": -707.4313099999853,
      "taker_buy_volume": 8806.463150000012,
      "taker_sell_volume": 9513.894459999998,
      "points_count": 60,
      "is_closed": true
    }
  ]
}

GET /v1/cvd/history

Cumulative volume delta history. Same as /v1/cvd, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 9 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].symbolstringTrading pair, e.g. BTCUSDT.
[].cvd_seriesnumber | null[]base asset quantity (BTC for BTCUSDT)Cumulative volume delta inside the bucket, one point per minute, starting from 0 at the bucket start.
[].net_deltanumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume - taker sell volume over the bucket, base asset units.
[].taker_buy_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker buy volume over the bucket.
[].taker_sell_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Taker sell volume over the bucket.
[].points_countinteger | nullcountNumber of one-minute points in cvd_series.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/cvd/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790252625,
  "data_type": "cvd_1h_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "symbol": "BTCUSDT",
      "cvd_series": [
        45.888329999999726,
        69.2295500000001,
        200.21975000000012
      ],
      "net_delta": -707.4313099999853,
      "taker_buy_volume": 8806.463150000012,
      "taker_sell_volume": 9513.894459999998,
      "points_count": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "symbol": "BTCUSDT",
      "cvd_series": [
        -662.8237799999529,
        -701.9267099999539,
        -770.6161599999542
      ],
      "net_delta": -959.671869999996,
      "taker_buy_volume": 14950.27055999998,
      "taker_sell_volume": 15909.942429999976,
      "points_count": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "symbol": "BTCUSDT",
      "cvd_series": [
        -304.04254000000515,
        -636.4162500000092,
        -977.9060600000169
      ],
      "net_delta": -1580.8624099997996,
      "taker_buy_volume": 36766.47983999995,
      "taker_sell_volume": 38347.34224999975,
      "points_count": 60,
      "is_closed": true
    }
  ]
}

GET /v1/spread/interexchange

Inter-venue price spread. Each venue's premium versus the volume-weighted reference price over the bucket, and the widest gap between two venues. The only route that names venues. Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 19 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
timeframestringBucket size of the row.
is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
ref_pricenumber | nullquote currency (USDT for BTCUSDT)Reference price: the volume-weighted average price across venues over the bucket.
weightingstringHow venues are combined: oi (open-interest weighted) or volume (volume weighted).
max_spread_bpsnumber | nullbasis points (1 bp = 0.01 %)Gap between the highest and the lowest venue price, relative to ref_price.
max_spread_pctnumber | nullpercent (58.5 = 58.5 %)Same gap as max_spread_bps, in percent.
highobjectquote currency (USDT for BTCUSDT)Venue with the highest price over the bucket, and that price ({exchange, price}).
high.exchangestringVenue name (this route is the only one that names venues).
high.pricenumber | nullquote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
lowobjectquote currency (USDT for BTCUSDT)Venue with the lowest price over the bucket, and that price ({exchange, price}).
low.exchangestringVenue name (this route is the only one that names venues).
low.pricenumber | nullquote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
venue_countinteger | nullcountNumber of venues that contributed to the value.
venuesobject[]Per-venue prices and premiums ([{exchange, price, premium_bps}]).
venues[].exchangestringVenue name (this route is the only one that names venues).
venues[].pricenumber | nullquote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
venues[].premium_bpsnumber | nullbasis points (1 bp = 0.01 %)Venue price premium (positive) or discount (negative) versus ref_price.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/spread/interexchange?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790255032,
  "data_type": "spread_interexchange_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": {
    "time": "2026-09-30T16:00:00.000Z",
    "timestamp": "2026-09-30T16:00:00.000Z",
    "timeframe": "1h",
    "is_closed": true,
    "ref_price": 84302.13575805252,
    "weighting": "volume",
    "max_spread_bps": 7.265255263451655,
    "max_spread_pct": 0.07265255263451655,
    "high": {
      "exchange": "venue_a",
      "price": 84339.01594956248
    },
    "low": {
      "exchange": "venue_b",
      "price": 84277.76829600884
    },
    "venues": [
      {
        "exchange": "venue_a",
        "price": 84339.01594956248,
        "premium_bps": 4.374763602171059
      },
      {
        "exchange": "venue_c",
        "price": 84311.22011829651,
        "premium_bps": 1.077595503636774
      },
      {
        "exchange": "venue_d",
        "price": 84308.69709339853,
        "premium_bps": 0.7783118763251422
      }
    ]
  }
}

GET /v1/spread/interexchange/history

Inter-venue spread history. Same as /v1/spread/interexchange, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–50030Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 19 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].timeframestringBucket size of the row.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
[].ref_pricenumber | nullquote currency (USDT for BTCUSDT)Reference price: the volume-weighted average price across venues over the bucket.
[].weightingstringHow venues are combined: oi (open-interest weighted) or volume (volume weighted).
[].max_spread_bpsnumber | nullbasis points (1 bp = 0.01 %)Gap between the highest and the lowest venue price, relative to ref_price.
[].max_spread_pctnumber | nullpercent (58.5 = 58.5 %)Same gap as max_spread_bps, in percent.
[].highobjectquote currency (USDT for BTCUSDT)Venue with the highest price over the bucket, and that price ({exchange, price}).
[].high.exchangestringVenue name (this route is the only one that names venues).
[].high.pricenumber | nullquote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
[].lowobjectquote currency (USDT for BTCUSDT)Venue with the lowest price over the bucket, and that price ({exchange, price}).
[].low.exchangestringVenue name (this route is the only one that names venues).
[].low.pricenumber | nullquote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
[].venue_countinteger | nullcountNumber of venues that contributed to the value.
[].venuesobject[]Per-venue prices and premiums ([{exchange, price, premium_bps}]).
[].venues[].exchangestringVenue name (this route is the only one that names venues).
[].venues[].pricenumber | nullquote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
[].venues[].premium_bpsnumber | nullbasis points (1 bp = 0.01 %)Venue price premium (positive) or discount (negative) versus ref_price.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/spread/interexchange/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790255706,
  "data_type": "spread_interexchange_1h_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "timeframe": "1h",
      "is_closed": true,
      "ref_price": 84302.13575805252,
      "weighting": "volume",
      "max_spread_bps": 7.265255263451655,
      "max_spread_pct": 0.07265255263451655,
      "high": {
        "exchange": "venue_a",
        "price": 84339.01594956248
      },
      "low": {
        "exchange": "venue_b",
        "price": 84277.76829600884
      },
      "venues": [
        {
          "exchange": "venue_a",
          "price": 84339.01594956248,
          "premium_bps": 4.374763602171059
        },
        {
          "exchange": "venue_c",
          "price": 84311.22011829651,
          "premium_bps": 1.077595503636774
        },
        {
          "exchange": "venue_d",
          "price": 84308.69709339853,
          "premium_bps": 0.7783118763251422
        }
      ]
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "timeframe": "1h",
      "is_closed": true,
      "ref_price": 83977.32824027882,
      "weighting": "volume",
      "max_spread_bps": 7.230792694184376,
      "max_spread_pct": 0.07230792694184376,
      "high": {
        "exchange": "venue_e",
        "price": 84006.19755398165
      },
      "low": {
        "exchange": "venue_f",
        "price": 83945.47528882996
      },
      "venues": [
        {
          "exchange": "venue_e",
          "price": 84006.19755398165,
          "premium_bps": 3.43775091536961
        },
        {
          "exchange": "venue_a",
          "price": 84003.38969198865,
          "premium_bps": 3.1033913862157356
        },
        {
          "exchange": "venue_c",
          "price": 83991.16097920474,
          "premium_bps": 1.6471992162387497
        }
      ]
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "timeframe": "1h",
      "is_closed": true,
      "ref_price": 83845.17999729452,
      "weighting": "volume",
      "max_spread_bps": 10.780061118052815,
      "max_spread_pct": 0.10780061118052814,
      "high": {
        "exchange": "venue_b",
        "price": 83915.2046517969
      },
      "low": {
        "exchange": "venue_f",
        "price": 83824.8190353144
      },
      "venues": [
        {
          "exchange": "venue_b",
          "price": 83915.2046517969,
          "premium_bps": 8.351661300583206
        },
        {
          "exchange": "venue_c",
          "price": 83863.89622905052,
          "premium_bps": 2.2322370536509726
        },
        {
          "exchange": "venue_a",
          "price": 83862.72855779529,
          "premium_bps": 2.0929718919247287
        }
      ]
    }
  ]
}

GET /v1/trades

Trade candle, spot + futures combined. Trade count, volumes buy/sell, delta, average size and rate for the latest closed bucket, all venues, spot and futures. Volumes are in BASE ASSET units (BTC for BTCUSDT). Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
响应的 18 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
symbolstringTrading pair, e.g. BTCUSDT.
exchangestringAlways combined: the value aggregates every venue.
trades_countinteger | nullcountNumber of trades in the bucket, all venues.
trades_count_buyinteger | nullcountNumber of buyer-initiated trades.
trades_count_sellinteger | nullcountNumber of seller-initiated trades.
trade_count_dominteger | nullcounttrades_count_buy - trades_count_sell. Positive = more buy trades.
trades_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units (NOT dollars: multiply by the price for a notional).
trade_avg_buynumber | nullbase asset quantity (BTC for BTCUSDT)Average size of buy trades, base asset units.
trade_avg_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Average size of sell trades, base asset units.
trade_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars).
trade_volume_buynumber | nullbase asset quantity (BTC for BTCUSDT)Buyer-initiated volume, base asset units.
trade_volume_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Seller-initiated volume, base asset units.
volume_deltanumber | nullbase asset quantity (BTC for BTCUSDT)trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying.
trade_ratenumber | nulltrades per secondAverage number of trades per second over the bucket.
volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790243344,
  "data_type": "trades_candle_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": {
    "time": "2026-09-30T16:00:00.000Z",
    "bucket": "2026-09-30T16:00:00.000Z",
    "symbol": "BTCUSDT",
    "exchange": "combined",
    "trades_count": 675268,
    "trades_count_buy": 351422,
    "trades_count_sell": 323846,
    "trade_count_dom": 27576,
    "trades_avg": 0.030507578690431175,
    "trade_avg_buy": 0.028389836265600935,
    "trade_avg_sell": 0.03280565023807613,
    "trade_volume": 20600.79164713008,
    "trade_volume_buy": 9976.813040130011,
    "trade_volume_sell": 10623.978607,
    "volume_delta": -647.1655668699896,
    "trade_rate": 187.57444444444445,
    "volume_estimated": false,
    "is_closed": true
  }
}

GET /v1/trades/avg-size

Average trade size. Average trade size over the latest minute written, all venues (null if no trade in the last day).

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
avg_sizenumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units.
total_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Total traded volume over the period, base asset units.
trade_countinteger | nullcountNumber of trades.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades/avg-size?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790248079,
  "data_type": "trade_size_avg",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:35.306Z",
    "avg_size": 0.02829312860266349,
    "total_volume": 142.34273000000002,
    "trade_count": 5031,
    "timestamp": "2026-09-30T17:43:35.306Z"
  }
}

GET /v1/trades/avg-size/history

Average trade size history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 7 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].avg_sizenumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units.
[].total_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Total traded volume over the period, base asset units.
[].trade_countinteger | nullcountNumber of trades.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades/avg-size/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790248705,
  "data_type": "trade_size_avg_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "avg_size": 0.04530373758231661,
      "total_volume": 17749.09831,
      "trade_count": 391780,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "avg_size": 0.04430684004913295,
      "total_volume": 29181.415299999993,
      "trade_count": 658621,
      "points": 59,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "avg_size": 0.05038130838811356,
      "total_volume": 73782.87194000004,
      "trade_count": 1464489,
      "points": 60,
      "is_closed": true
    }
  ]
}

GET /v1/trades/future

Trade candle, futures only. Same as /v1/trades, perpetual futures only. Stablecoins have no futures: data: null with unavailable. Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
响应的 18 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
symbolstringTrading pair, e.g. BTCUSDT.
exchangestringAlways combined: the value aggregates every venue.
trades_countinteger | nullcountNumber of trades in the bucket, all venues.
trades_count_buyinteger | nullcountNumber of buyer-initiated trades.
trades_count_sellinteger | nullcountNumber of seller-initiated trades.
trade_count_dominteger | nullcounttrades_count_buy - trades_count_sell. Positive = more buy trades.
trades_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units (NOT dollars: multiply by the price for a notional).
trade_avg_buynumber | nullbase asset quantity (BTC for BTCUSDT)Average size of buy trades, base asset units.
trade_avg_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Average size of sell trades, base asset units.
trade_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars).
trade_volume_buynumber | nullbase asset quantity (BTC for BTCUSDT)Buyer-initiated volume, base asset units.
trade_volume_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Seller-initiated volume, base asset units.
volume_deltanumber | nullbase asset quantity (BTC for BTCUSDT)trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying.
trade_ratenumber | nulltrades per secondAverage number of trades per second over the bucket.
volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades/future?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790246706,
  "data_type": "trades_candle_future_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": {
    "time": "2026-09-30T16:00:00.000Z",
    "bucket": "2026-09-30T16:00:00.000Z",
    "symbol": "BTCUSDT",
    "exchange": "combined",
    "trades_count": 405045,
    "trades_count_buy": 202872,
    "trades_count_sell": 202173,
    "trade_count_dom": 699,
    "trades_avg": 0.04523093574788008,
    "trade_avg_buy": 0.04340942456327149,
    "trade_avg_sell": 0.04705874468895452,
    "trade_volume": 18320.564370000087,
    "trade_volume_buy": 8806.556780000014,
    "trade_volume_sell": 9514.00759,
    "volume_delta": -707.4508099999875,
    "trade_rate": 112.5125,
    "volume_estimated": false,
    "is_closed": true
  }
}

GET /v1/trades/future/history

Trade candles history, futures only. Same as /v1/trades/future, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 18 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].symbolstringTrading pair, e.g. BTCUSDT.
[].exchangestringAlways combined: the value aggregates every venue.
[].trades_countinteger | nullcountNumber of trades in the bucket, all venues.
[].trades_count_buyinteger | nullcountNumber of buyer-initiated trades.
[].trades_count_sellinteger | nullcountNumber of seller-initiated trades.
[].trade_count_dominteger | nullcounttrades_count_buy - trades_count_sell. Positive = more buy trades.
[].trades_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units (NOT dollars: multiply by the price for a notional).
[].trade_avg_buynumber | nullbase asset quantity (BTC for BTCUSDT)Average size of buy trades, base asset units.
[].trade_avg_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Average size of sell trades, base asset units.
[].trade_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars).
[].trade_volume_buynumber | nullbase asset quantity (BTC for BTCUSDT)Buyer-initiated volume, base asset units.
[].trade_volume_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Seller-initiated volume, base asset units.
[].volume_deltanumber | nullbase asset quantity (BTC for BTCUSDT)trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying.
[].trade_ratenumber | nulltrades per secondAverage number of trades per second over the bucket.
[].volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades/future/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790247486,
  "data_type": "trades_candle_future_1h_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 405045,
      "trades_count_buy": 202872,
      "trades_count_sell": 202173,
      "trade_count_dom": 699,
      "trades_avg": 0.04523093574788008,
      "trade_avg_buy": 0.04340942456327149,
      "trade_avg_sell": 0.04705874468895452,
      "trade_volume": 18320.564370000087,
      "trade_volume_buy": 8806.556780000014,
      "trade_volume_sell": 9514.00759,
      "volume_delta": -707.4508099999875,
      "trade_rate": 112.5125,
      "volume_estimated": false,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 685554,
      "trades_count_buy": 352098,
      "trades_count_sell": 333456,
      "trade_count_dom": 18642,
      "trades_avg": 0.04501438543134438,
      "trade_avg_buy": 0.04245970854705205,
      "trade_avg_sell": 0.04771188261719679,
      "trade_volume": 30859.791989999867,
      "trade_volume_buy": 14949.978459999931,
      "trade_volume_sell": 15909.813529999974,
      "volume_delta": -959.835070000041,
      "trade_rate": 190.43166666666667,
      "volume_estimated": false,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 1488875,
      "trades_count_buy": 747321,
      "trades_count_sell": 741554,
      "trade_count_dom": 5767,
      "trades_avg": 0.05044640762992069,
      "trade_avg_buy": 0.04919763092432828,
      "trade_avg_sell": 0.0517048959617233,
      "trade_volume": 75108.39515999817,
      "trade_volume_buy": 36766.422739999936,
      "trade_volume_sell": 38341.97241999976,
      "volume_delta": -1575.5496799998218,
      "trade_rate": 413.5763888888889,
      "volume_estimated": false,
      "is_closed": true
    }
  ]
}

GET /v1/trades/history

Trade candles history, combined. Same as /v1/trades, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 18 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].symbolstringTrading pair, e.g. BTCUSDT.
[].exchangestringAlways combined: the value aggregates every venue.
[].trades_countinteger | nullcountNumber of trades in the bucket, all venues.
[].trades_count_buyinteger | nullcountNumber of buyer-initiated trades.
[].trades_count_sellinteger | nullcountNumber of seller-initiated trades.
[].trade_count_dominteger | nullcounttrades_count_buy - trades_count_sell. Positive = more buy trades.
[].trades_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units (NOT dollars: multiply by the price for a notional).
[].trade_avg_buynumber | nullbase asset quantity (BTC for BTCUSDT)Average size of buy trades, base asset units.
[].trade_avg_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Average size of sell trades, base asset units.
[].trade_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars).
[].trade_volume_buynumber | nullbase asset quantity (BTC for BTCUSDT)Buyer-initiated volume, base asset units.
[].trade_volume_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Seller-initiated volume, base asset units.
[].volume_deltanumber | nullbase asset quantity (BTC for BTCUSDT)trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying.
[].trade_ratenumber | nulltrades per secondAverage number of trades per second over the bucket.
[].volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790244370,
  "data_type": "trades_candle_1h_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 675268,
      "trades_count_buy": 351422,
      "trades_count_sell": 323846,
      "trade_count_dom": 27576,
      "trades_avg": 0.030507578690431175,
      "trade_avg_buy": 0.028389836265600935,
      "trade_avg_sell": 0.03280565023807613,
      "trade_volume": 20600.79164713008,
      "trade_volume_buy": 9976.813040130011,
      "trade_volume_sell": 10623.978607,
      "volume_delta": -647.1655668699896,
      "trade_rate": 187.57444444444445,
      "volume_estimated": false,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 1086360,
      "trades_count_buy": 577625,
      "trades_count_sell": 508735,
      "trade_count_dom": 68890,
      "trades_avg": 0.03149070232565307,
      "trade_avg_buy": 0.02889647807452921,
      "trade_avg_sell": 0.03443622166883854,
      "trade_volume": 34210.239378496466,
      "trade_volume_buy": 16691.328147799934,
      "trade_volume_sell": 17518.911230696576,
      "volume_delta": -827.5830828966427,
      "trade_rate": 301.76666666666665,
      "volume_estimated": false,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 2179719,
      "trades_count_buy": 1079687,
      "trades_count_sell": 1100032,
      "trade_count_dom": -20345,
      "trades_avg": 0.037564338605351515,
      "trade_avg_buy": 0.03697986741873333,
      "trade_avg_sell": 0.038138000046171155,
      "trade_volume": 81879.7025805182,
      "trade_volume_buy": 39926.682113729934,
      "trade_volume_sell": 41953.02046678975,
      "volume_delta": -2026.3383530598148,
      "trade_rate": 605.4775,
      "volume_estimated": false,
      "is_closed": true
    }
  ]
}

GET /v1/trades/spot

Trade candle, spot only. Same as /v1/trades, spot venues only. Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
响应的 18 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
symbolstringTrading pair, e.g. BTCUSDT.
exchangestringAlways combined: the value aggregates every venue.
trades_countinteger | nullcountNumber of trades in the bucket, all venues.
trades_count_buyinteger | nullcountNumber of buyer-initiated trades.
trades_count_sellinteger | nullcountNumber of seller-initiated trades.
trade_count_dominteger | nullcounttrades_count_buy - trades_count_sell. Positive = more buy trades.
trades_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units (NOT dollars: multiply by the price for a notional).
trade_avg_buynumber | nullbase asset quantity (BTC for BTCUSDT)Average size of buy trades, base asset units.
trade_avg_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Average size of sell trades, base asset units.
trade_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars).
trade_volume_buynumber | nullbase asset quantity (BTC for BTCUSDT)Buyer-initiated volume, base asset units.
trade_volume_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Seller-initiated volume, base asset units.
volume_deltanumber | nullbase asset quantity (BTC for BTCUSDT)trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying.
trade_ratenumber | nulltrades per secondAverage number of trades per second over the bucket.
volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades/spot?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790245158,
  "data_type": "trades_candle_spot_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": {
    "time": "2026-09-30T16:00:00.000Z",
    "bucket": "2026-09-30T16:00:00.000Z",
    "symbol": "BTCUSDT",
    "exchange": "combined",
    "trades_count": 270223,
    "trades_count_buy": 148550,
    "trades_count_sell": 121673,
    "trade_count_dom": 26877,
    "trades_avg": 0.008438316786987017,
    "trade_avg_buy": 0.00787786105775832,
    "trade_avg_sell": 0.0091225745810492,
    "trade_volume": 2280.2272771299927,
    "trade_volume_buy": 1170.2562601299985,
    "trade_volume_sell": 1109.9710169999994,
    "volume_delta": 60.28524312999912,
    "trade_rate": 75.06194444444445,
    "volume_estimated": false,
    "is_closed": true
  }
}

GET /v1/trades/spot/history

Trade candles history, spot only. Same as /v1/trades/spot, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 18 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].symbolstringTrading pair, e.g. BTCUSDT.
[].exchangestringAlways combined: the value aggregates every venue.
[].trades_countinteger | nullcountNumber of trades in the bucket, all venues.
[].trades_count_buyinteger | nullcountNumber of buyer-initiated trades.
[].trades_count_sellinteger | nullcountNumber of seller-initiated trades.
[].trade_count_dominteger | nullcounttrades_count_buy - trades_count_sell. Positive = more buy trades.
[].trades_avgnumber | nullbase asset quantity (BTC for BTCUSDT)Average trade size, base asset units (NOT dollars: multiply by the price for a notional).
[].trade_avg_buynumber | nullbase asset quantity (BTC for BTCUSDT)Average size of buy trades, base asset units.
[].trade_avg_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Average size of sell trades, base asset units.
[].trade_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars).
[].trade_volume_buynumber | nullbase asset quantity (BTC for BTCUSDT)Buyer-initiated volume, base asset units.
[].trade_volume_sellnumber | nullbase asset quantity (BTC for BTCUSDT)Seller-initiated volume, base asset units.
[].volume_deltanumber | nullbase asset quantity (BTC for BTCUSDT)trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying.
[].trade_ratenumber | nulltrades per secondAverage number of trades per second over the bucket.
[].volume_estimatedbooleantrue when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/trades/spot/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790245928,
  "data_type": "trades_candle_spot_1h_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 270223,
      "trades_count_buy": 148550,
      "trades_count_sell": 121673,
      "trade_count_dom": 26877,
      "trades_avg": 0.008438316786987017,
      "trade_avg_buy": 0.00787786105775832,
      "trade_avg_sell": 0.0091225745810492,
      "trade_volume": 2280.2272771299927,
      "trade_volume_buy": 1170.2562601299985,
      "trade_volume_sell": 1109.9710169999994,
      "volume_delta": 60.28524312999912,
      "trade_rate": 75.06194444444445,
      "volume_estimated": false,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 400806,
      "trades_count_buy": 225527,
      "trades_count_sell": 175279,
      "trade_count_dom": 50248,
      "trades_avg": 0.008359274533057393,
      "trade_avg_buy": 0.007721247069308773,
      "trade_avg_sell": 0.009180208129305851,
      "trade_volume": 3350.4473884966014,
      "trade_volume_buy": 1741.3496877999996,
      "trade_volume_sell": 1609.097700696601,
      "volume_delta": 132.25198710339896,
      "trade_rate": 111.335,
      "volume_estimated": false,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "symbol": "BTCUSDT",
      "exchange": "combined",
      "trades_count": 690844,
      "trades_count_buy": 332366,
      "trades_count_sell": 358478,
      "trade_count_dom": -26112,
      "trades_avg": 0.009801499934167531,
      "trade_avg_buy": 0.009508371415036423,
      "trade_avg_sell": 0.010073276593793746,
      "trade_volume": 6771.307420520034,
      "trade_volume_buy": 3160.2593737299967,
      "trade_volume_sell": 3611.0480467899943,
      "volume_delta": -450.7886730599976,
      "trade_rate": 191.9011111111111,
      "volume_estimated": false,
      "is_closed": true
    }
  ]
}

GET /v1/vwap

Intraday VWAP. Volume-weighted average price since 00:00 UTC, across venues.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 4 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
vwapnumber | nullquote currency (USDT for BTCUSDT)Volume-weighted average price.
cumulative_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Volume accumulated since 00:00 UTC used by the intraday VWAP.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/vwap?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790249449,
  "data_type": "vwap",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:35.012Z",
    "vwap": 84134.93151031101,
    "cumulative_volume": 481654.8924199963,
    "timestamp": "2026-09-30T17:43:35.012Z"
  }
}

GET /v1/vwap/history

Intraday VWAP history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].vwapnumber | nullquote currency (USDT for BTCUSDT)Volume-weighted average price.
[].cumulative_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Volume accumulated since 00:00 UTC used by the intraday VWAP.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/vwap/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790250061,
  "data_type": "vwap_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "vwap": 84136.1012346141,
      "cumulative_volume": 467094.5892599979,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "vwap": 84129.33791306509,
      "cumulative_volume": 448732.8932999992,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "vwap": 84140.64956432498,
      "cumulative_volume": 417838.5442400001,
      "points": 60,
      "is_closed": true
    }
  ]
}

GET /v1/vwap/window

VWAP per bucket. Volume-weighted average price of each closed bucket (not cumulative, unlike /v1/vwap). Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].vwapnumber | nullquote currency (USDT for BTCUSDT)Volume-weighted average price.
[].total_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Total traded volume over the period, base asset units.
[].trade_countinteger | nullcountNumber of trades.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/vwap/window?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790250780,
  "data_type": "vwap_window_1h",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "vwap": 84302.13575805251,
      "total_volume": 18320.35761,
      "trade_count": 404455,
      "is_closed": true
    }
  ]
}

GET /v1/vwap/window/history

VWAP per bucket history. Same as /v1/vwap/window, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframe 必填string—Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].vwapnumber | nullquote currency (USDT for BTCUSDT)Volume-weighted average price.
[].total_volumenumber | nullbase asset quantity (BTC for BTCUSDT)Total traded volume over the period, base asset units.
[].trade_countinteger | nullcountNumber of trades.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/vwap/window/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790251421,
  "data_type": "vwap_window_1h_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "vwap": 84302.13575805251,
      "total_volume": 18320.35761,
      "trade_count": 404455,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "vwap": 83977.32824027885,
      "total_volume": 30860.212989999996,
      "trade_count": 685071,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "vwap": 83845.17999729452,
      "total_volume": 75113.8220900001,
      "trade_count": 1488572,
      "is_closed": true
    }
  ]
}

#Derivatives

Perpetual futures positioning, aggregated across venues: funding (settled, estimated, cumulative), basis, open interest, long/short account ratio.

GET /v1/basis

Futures-spot basis. Perpetual futures price versus spot, OI-weighted across venues (each venue weighted by its latest open interest within 10 minutes).

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
basis_valuenumber | nullquote currency (USDT for BTCUSDT)Futures price - spot price.
basis_pctnumber | nullpercent (58.5 = 58.5 %)(futures - spot) / spot, in percent. Positive = contango.
futures_pricenumber | nullquote currency (USDT for BTCUSDT)Perpetual futures price, open-interest weighted across venues.
spot_pricenumber | nullquote currency (USDT for BTCUSDT)Spot price across venues.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/basis?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790261142,
  "data_type": "basis",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:37.309Z",
    "basis_value": -38.03961943906421,
    "basis_pct": -0.04526350810118282,
    "futures_price": 84002.17394512612,
    "spot_price": 84040.21356456519,
    "timestamp": "2026-09-30T17:43:37.309Z"
  }
}

GET /v1/basis/history

Basis history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 8 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].basis_valuenumber | nullquote currency (USDT for BTCUSDT)Futures price - spot price.
[].basis_pctnumber | nullpercent (58.5 = 58.5 %)(futures - spot) / spot, in percent. Positive = contango.
[].futures_pricenumber | nullquote currency (USDT for BTCUSDT)Perpetual futures price, open-interest weighted across venues.
[].spot_pricenumber | nullquote currency (USDT for BTCUSDT)Spot price across venues.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/basis/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790261798,
  "data_type": "basis_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "basis_value": -33.981449109710006,
      "basis_pct": -0.04029417463246244,
      "futures_price": 84298.40975007898,
      "spot_price": 84332.39119918869,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "basis_value": -35.702638083532776,
      "basis_pct": -0.04243001848673969,
      "futures_price": 84107.74754775809,
      "spot_price": 84143.45018584162,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "basis_value": -42.805161758335856,
      "basis_pct": -0.05107252133261064,
      "futures_price": 83768.58660190101,
      "spot_price": 83811.39176365935,
      "points": 60,
      "is_closed": true
    }
  ]
}

GET /v1/funding/cumulative

Funding over the last 24 h. Sum of the last three settled 8-hour windows, and its annualised rate.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
cumulative_ratenumber | nullrate per 8 h, fraction (0.0001 = 0.01 % per 8 h)Sum of the last three settled 8-hour funding rates (24 h).
apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
window_countinteger | nullcountNumber of 8-hour funding windows summed.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/funding/cumulative?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790259660,
  "data_type": "funding_cumulative_24h",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T08:00:00.000Z",
    "timestamp": "2026-09-30T08:00:00.000Z",
    "cumulative_rate": 0.0001554701434771935,
    "apr_pct": 5.674660236917563,
    "window_count": 3
  }
}

GET /v1/funding/cumulative/history

Cumulative funding history. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 5 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].cumulative_ratenumber | nullrate per 8 h, fraction (0.0001 = 0.01 % per 8 h)Sum of the last three settled 8-hour funding rates (24 h).
[].apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
[].window_countinteger | nullcountNumber of 8-hour funding windows summed.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/funding/cumulative/history?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790260359,
  "data_type": "funding_cumulative_24h_history",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T08:00:00.000Z",
      "timestamp": "2026-09-30T08:00:00.000Z",
      "cumulative_rate": 0.0001554701434771935,
      "apr_pct": 5.674660236917563,
      "window_count": 3
    },
    {
      "time": "2026-09-30T00:00:00.000Z",
      "timestamp": "2026-09-30T00:00:00.000Z",
      "cumulative_rate": 0.00011811682942642308,
      "apr_pct": 4.311264274064443,
      "window_count": 3
    },
    {
      "time": "2026-09-29T16:00:00.000Z",
      "timestamp": "2026-09-29T16:00:00.000Z",
      "cumulative_rate": 0.00014946293667145142,
      "apr_pct": 5.455397188507977,
      "window_count": 3
    }
  ]
}

GET /v1/funding/next

Next funding forecast. Each venue's forecast of its next settlement, normalised to 8 h and OI-weighted.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
estimated_ratenumber | nullrate per 8 h, fraction (0.0001 = 0.01 % per 8 h)Venue forecast of the NEXT funding settlement, normalised to 8 h, OI-weighted.
settlement_atdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Instant of the next funding settlement.
is_pastbooleantrue if the forecast settlement instant is already past (the next forecast is not published yet).
exchange_countinteger | nullcountNumber of venues in the weighted average.
apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/funding/next?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790258997,
  "data_type": "funding_next_estimated",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-10-01T00:00:00.000Z",
    "estimated_rate": 0.00005850917027312007,
    "settlement_at": "2026-10-01T00:00:00.000Z",
    "is_past": false,
    "apr_pct": 6.406754144906649
  }
}

GET /v1/funding/rate

Latest settled funding rate. The last fully settled 8-hour funding window, normalised to 8 h and weighted by the open interest of each venue at that time. ?live=1 for the window in progress.

参数类型默认值说明
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
ratenumber | nullrate per 8 h, fraction (0.0001 = 0.01 % per 8 h)Settled funding rate, normalised to an 8-hour period, open-interest weighted across venues.
apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
exchange_countinteger | nullcountNumber of venues in the weighted average.
is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/funding/rate?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790257566,
  "data_type": "funding_rate_8h",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T08:00:00.000Z",
    "bucket": "2026-09-30T08:00:00.000Z",
    "rate": 0.00006287020093464953,
    "apr_pct": 6.884287002344124,
    "is_closed": true
  }
}

GET /v1/funding/rate/history

Settled funding history. One row per settled 8-hour window. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].ratenumber | nullrate per 8 h, fraction (0.0001 = 0.01 % per 8 h)Settled funding rate, normalised to an 8-hour period, open-interest weighted across venues.
[].exchange_countinteger | nullcountNumber of venues in the weighted average.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
[].apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/funding/rate/history?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790258225,
  "data_type": "funding_rate_8h_history",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T08:00:00.000Z",
      "bucket": "2026-09-30T08:00:00.000Z",
      "rate": 0.00006287020093464953,
      "is_closed": true,
      "apr_pct": 6.884287002344124
    },
    {
      "time": "2026-09-30T00:00:00.000Z",
      "bucket": "2026-09-30T00:00:00.000Z",
      "rate": 0.0000189458991289909,
      "is_closed": true,
      "apr_pct": 2.0745759546245033
    },
    {
      "time": "2026-09-29T16:00:00.000Z",
      "bucket": "2026-09-29T16:00:00.000Z",
      "rate": 0.00007365404341355308,
      "is_closed": true,
      "apr_pct": 8.065117753784062
    }
  ]
}

GET /v1/ls-ratio

Long/short account ratio. Share of accounts long, composite across venues weighted by open interest. Accounts, not volume. No 1m timeframe. Bucketed: is_closed says whether the value is final. Add ?live=1 for the open period.

参数类型默认值说明
timeframe 必填string—5m, 15m, 30m, 1h, 4h or 1d — no 1m: no venue publishes a 1-minute account ratio.
livebooleanfalse1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 8 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
timeframestringBucket size of the row.
part_longnumber | nullfraction (0.585 = 58.5 %)Share of ACCOUNTS long (0.57 = 57 % of accounts are long). Accounts, not volume.
rationumber | nulllongs / shortsLong ACCOUNTS / short accounts (1.35 = 35 % more long accounts). Composite across venues, OI-weighted.
venue_countinteger | nullcountNumber of venues that contributed to the value.
weightingstringHow venues are combined: oi (open-interest weighted) or volume (volume weighted).
is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/ls-ratio?symbol=BTCUSDT&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790263708,
  "data_type": "ls_ratio_composite",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": {
    "time": "2026-09-30T16:00:00.000Z",
    "timestamp": "2026-09-30T16:00:00.000Z",
    "timeframe": "1h",
    "part_long": 0.5744708637730429,
    "ratio": 1.3500153452868322,
    "weighting": "oi",
    "is_closed": true
  }
}

GET /v1/ls-ratio/history

Long/short ratio history. Same as /v1/ls-ratio, one row per closed bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframe 必填string—5m, 15m, 30m, 1h, 4h or 1d — no 1m: no venue publishes a 1-minute account ratio.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–50030Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 8 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].timeframestringBucket size of the row.
[].part_longnumber | nullfraction (0.585 = 58.5 %)Share of ACCOUNTS long (0.57 = 57 % of accounts are long). Accounts, not volume.
[].rationumber | nulllongs / shortsLong ACCOUNTS / short accounts (1.35 = 35 % more long accounts). Composite across venues, OI-weighted.
[].venue_countinteger | nullcountNumber of venues that contributed to the value.
[].weightingstringHow venues are combined: oi (open-interest weighted) or volume (volume weighted).
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/ls-ratio/history?symbol=BTCUSDT&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790264321,
  "data_type": "ls_ratio_composite_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "timeframe": "1h",
      "part_long": 0.5744708637730429,
      "ratio": 1.3500153452868322,
      "weighting": "oi",
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "timeframe": "1h",
      "part_long": 0.5750662788177455,
      "ratio": 1.3533081752556395,
      "weighting": "oi",
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "timeframe": "1h",
      "part_long": 0.5595834191896681,
      "ratio": 1.270577547648362,
      "weighting": "oi",
      "is_closed": true
    }
  ]
}

GET /v1/oi/delta

Open interest change. Change of total open interest over the last minute, summed across venues.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
oi_currentnumber | nullbase asset quantity (BTC for BTCUSDT)Total open interest across venues at the end of the window, base asset units.
oi_previousnumber | nullbase asset quantity (BTC for BTCUSDT)Total open interest at the start of the window.
deltanumber | nullbase asset quantity (BTC for BTCUSDT)oi_current - oi_previous, base asset units.
delta_pctnumber | nullpercent (58.5 = 58.5 %)Relative open interest change in percent.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/oi/delta?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790262526,
  "data_type": "oi_delta",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:35.091Z",
    "oi_current": 343643.70848000003,
    "oi_previous": 343637.2931800001,
    "delta": 6.415299999987383,
    "delta_pct": 0.0018668811934142136,
    "timestamp": "2026-09-30T17:43:35.091Z"
  }
}

GET /v1/oi/delta/history

Open interest change history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 8 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].oi_currentnumber | nullbase asset quantity (BTC for BTCUSDT)Total open interest across venues at the end of the window, base asset units.
[].oi_previousnumber | nullbase asset quantity (BTC for BTCUSDT)Total open interest at the start of the window.
[].deltanumber | nullbase asset quantity (BTC for BTCUSDT)oi_current - oi_previous, base asset units.
[].delta_pctnumber | nullpercent (58.5 = 58.5 %)Relative open interest change in percent.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/oi/delta/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790263127,
  "data_type": "oi_delta_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "oi_current": 343164.8987600001,
      "oi_previous": 342873.06846000004,
      "delta": 291.83030000008876,
      "delta_pct": 0.08511321735207501,
      "points": 59,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "oi_current": 342842.7449000001,
      "oi_previous": 341557.2792000001,
      "delta": 1285.4657000000009,
      "delta_pct": 0.3763543564379114,
      "points": 59,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "oi_current": 339753.7792000002,
      "oi_previous": 340456.93278000003,
      "delta": -703.1535799998092,
      "delta_pct": -0.20653231357582025,
      "points": 60,
      "is_closed": true
    }
  ]
}

#Liquidations

Forced liquidations across venues: individual events, cumulative long/short USD, big vs small liquidations, and the liquidation heatmap clusters the price is drawn to.

GET /v1/heatmap/clusters

Liquidation heatmap clusters. The most attractive cluster of estimated liquidation levels above and below the price, projected from open interest changes and the leverage mix. attraction = density / distance²: compare attraction_up and attraction_down to see where the price has a mechanical reason to go. Not a prediction.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 8 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
density_upnumber | nulldimensionless scoreEstimated liquidation density of the most attractive cluster ABOVE the price (short positions).
dist_upnumber | nullfraction (0.585 = 58.5 %)Distance from the price to the cluster above, as a fraction of the price (0.037 = 3.7 % higher).
density_downnumber | nulldimensionless scoreEstimated liquidation density of the most attractive cluster BELOW the price (long positions).
dist_downnumber | nullfraction (0.585 = 58.5 %)Distance from the price to the cluster below, as a fraction of the price.
attraction_upnumber | nulldimensionless scoredensity_up / dist_up²: how strongly the cluster above pulls the price.
attraction_downnumber | nulldimensionless scoredensity_down / dist_down²: how strongly the cluster below pulls the price. Compare with attraction_up.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/heatmap/clusters?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790267332,
  "data_type": "heatmap_clusters",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:36.237Z",
    "timestamp": "2026-09-30T17:43:36.237Z",
    "density_up": 4.381205519726549,
    "dist_up": 0.037029277745770736,
    "density_down": 2.042372012549034,
    "dist_down": 0.010584555024925809,
    "attraction_up": 3195.2374936721594,
    "attraction_down": 18230.12474934765
  }
}

GET /v1/heatmap/clusters/history

Liquidation clusters history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 10 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].density_upnumber | nulldimensionless scoreEstimated liquidation density of the most attractive cluster ABOVE the price (short positions).
[].dist_upnumber | nullfraction (0.585 = 58.5 %)Distance from the price to the cluster above, as a fraction of the price (0.037 = 3.7 % higher).
[].density_downnumber | nulldimensionless scoreEstimated liquidation density of the most attractive cluster BELOW the price (long positions).
[].dist_downnumber | nullfraction (0.585 = 58.5 %)Distance from the price to the cluster below, as a fraction of the price.
[].attraction_upnumber | nulldimensionless scoredensity_up / dist_up²: how strongly the cluster above pulls the price.
[].attraction_downnumber | nulldimensionless scoredensity_down / dist_down²: how strongly the cluster below pulls the price. Compare with attraction_up.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/heatmap/clusters/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790267954,
  "data_type": "heatmap_clusters_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "density_up": 5.737933611896139,
      "dist_up": 0.033453183218485505,
      "density_down": 1.4432528637559463,
      "dist_down": 0.019690414816624865,
      "attraction_up": 5127.204277653998,
      "attraction_down": 3722.482776012855,
      "points": 59,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "density_up": 7.878246185746095,
      "dist_up": 0.03577046128165891,
      "density_down": 5.790287854911657,
      "dist_down": 0.03175910965589645,
      "attraction_up": 6157.160385641724,
      "attraction_down": 5740.682353844244,
      "points": 59,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "density_up": 8.122598498500858,
      "dist_up": 0.03999665749467288,
      "density_down": 1.652863877001746,
      "dist_down": 0.011573424695145608,
      "attraction_up": 5077.4726000692,
      "attraction_down": 12339.947386970793,
      "points": 60,
      "is_closed": true
    }
  ]
}

GET /v1/liquidations/cumulative

Liquidations over the last 5 minutes. Longs and shorts liquidated, USD, all venues.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
long_usdnumber | nullUSDLong positions liquidated, USD.
short_usdnumber | nullUSDShort positions liquidated, USD.
total_usdnumber | nullUSDTotal, USD.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/liquidations/cumulative?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790264918,
  "data_type": "liquidations_cumulative",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:43:37.551Z",
    "timestamp": "2026-09-30T17:43:37.551Z",
    "long_usd": 0,
    "short_usd": 24959.6376,
    "total_usd": 24959.6376
  }
}

GET /v1/liquidations/cumulative/history

Cumulative liquidations history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 7 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].long_usdnumber | nullUSDLong positions liquidated, USD.
[].short_usdnumber | nullUSDShort positions liquidated, USD.
[].total_usdnumber | nullUSDTotal, USD.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/liquidations/cumulative/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790265502,
  "data_type": "liquidations_cumulative_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "long_usd": 0,
      "short_usd": 0,
      "total_usd": 0,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "long_usd": 0,
      "short_usd": 0,
      "total_usd": 0,
      "points": 60,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "long_usd": 0,
      "short_usd": 298657.3881799999,
      "total_usd": 298657.3881799999,
      "points": 60,
      "is_closed": true
    }
  ]
}

GET /v1/liquidations/ratio

Big vs small liquidations. Liquidations of 100,000 USD or more versus smaller ones over the latest minute with liquidations: counts, USD and ratio. A high ratio = large positions are being flushed.

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 7 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
big_countinteger | nullcountLiquidations of 100,000 USD or more.
big_usdnumber | nullUSDNotional of liquidations of 100,000 USD or more.
small_countinteger | nullcountLiquidations below 100,000 USD.
small_usdnumber | nullUSDNotional of liquidations below 100,000 USD.
rationumber | nullbig / smallbig_usd / small_usd: how much of the liquidated notional comes from liquidations of 100,000 USD or more. null when small_usd is 0.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/liquidations/ratio?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790266098,
  "data_type": "liquidation_ratio",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:42:37.587Z",
    "big_count": 0,
    "big_usd": 0,
    "small_count": 1,
    "small_usd": 24959.6376,
    "ratio": 0,
    "timestamp": "2026-09-30T17:42:37.587Z"
  }
}

GET /v1/liquidations/ratio/history

Big vs small liquidations history. Per minute, or per bucket with timeframe. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
timeframestring | any | null—Optional. With it, rows are aggregated per bucket and carry is_closed; without it, one row per minute.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 9 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].big_countinteger | nullcountLiquidations of 100,000 USD or more.
[].big_usdnumber | nullUSDNotional of liquidations of 100,000 USD or more.
[].small_countinteger | nullcountLiquidations below 100,000 USD.
[].small_usdnumber | nullUSDNotional of liquidations below 100,000 USD.
[].rationumber | nullbig / smallbig_usd / small_usd: how much of the liquidated notional comes from liquidations of 100,000 USD or more. null when small_usd is 0.
[].pointsinteger | nullcountNumber of one-minute source points inside the bucket.
[].is_closedbooleantrue = the bucket is final and will never change; false = provisional (only with ?live=1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/liquidations/ratio/history?symbol=BTCUSDT&limit=3&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790266714,
  "data_type": "liquidation_ratio_history",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "timestamp": "2026-09-30T16:00:00.000Z",
      "big_count": 3,
      "big_usd": 686762.855,
      "small_count": 48,
      "small_usd": 233046.83456,
      "ratio": 2.946887720215684,
      "points": 16,
      "is_closed": true
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "timestamp": "2026-09-30T15:00:00.000Z",
      "big_count": 1,
      "big_usd": 103179.4957,
      "small_count": 89,
      "small_usd": 782962.43066,
      "ratio": 0.13178090245406107,
      "points": 19,
      "is_closed": true
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "timestamp": "2026-09-30T14:00:00.000Z",
      "big_count": 14,
      "big_usd": 3831670.98218,
      "small_count": 338,
      "small_usd": 3095117.8715999993,
      "ratio": 1.2379725558559245,
      "points": 32,
      "is_closed": true
    }
  ]
}

GET /v1/raw/liquidations

Individual liquidations. Forced liquidations across futures venues. Without min_usd, limit is a look-back in minutes; with it, a number of events. Most recent first. Page backwards with until_ms.

参数类型默认值说明
limitinteger · 1–100030Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
min_usdnumber | any | null—Optional minimum notional in USD. With it, limit counts events; without it, limit is a look-back in minutes.
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].sidestringlong (a long position was liquidated: forced sell) or short (forced buy).
[].pricenumber | nullquote currency (USDT for BTCUSDT)Price.
[].quantitynumber | nullbase asset quantity (BTC for BTCUSDT)Quantity traded or liquidated, in base asset units.
[].usd_valuenumber | nullUSDNotional value: price × quantity.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/raw/liquidations?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790241222,
  "data_type": "raw_liquidations",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-30T17:42:05.086Z",
      "timestamp": "2026-09-30T17:42:05.086Z",
      "side": "short",
      "price": 84323.1,
      "quantity": 0.296,
      "usd_value": 24959.6376
    },
    {
      "time": "2026-09-30T17:37:48.302Z",
      "timestamp": "2026-09-30T17:37:48.302Z",
      "side": "long",
      "price": 83608.9,
      "quantity": 0.041,
      "usd_value": 3427.9649
    },
    {
      "time": "2026-09-30T17:37:48.103Z",
      "timestamp": "2026-09-30T17:37:48.103Z",
      "side": "long",
      "price": 83870.8,
      "quantity": 0.0602,
      "usd_value": 5049.0221599999995
    }
  ]
}

#Tokenomics & sentiment

Supply, market cap and FDV derived from the live price; total crypto market cap and dominance; the Crypto Fear & Greed Index.

GET /v1/fear-greed

Crypto Fear & Greed Index. Daily index from 0 (extreme fear) to 100 (extreme greed).

响应的 4 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
valueinteger | nullscore from 0 to 100Crypto Fear & Greed Index (alternative.me). 0 = extreme fear, 100 = extreme greed.
value_classificationstringLabel published by alternative.me: Extreme Fear, Fear, Neutral, Greed or Extreme Greed.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/fear-greed"
{
  "status": "ok",
  "timestamp": 1790790270960,
  "data_type": "fear_greed",
  "data": {
    "time": "2026-09-30T00:00:00.000Z",
    "timestamp": "2026-09-30T00:00:00.000Z",
    "value": 71,
    "value_classification": "Greed"
  }
}

GET /v1/fear-greed/history

Fear & Greed history. One point per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 4 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].valueinteger | nullscore from 0 to 100Crypto Fear & Greed Index (alternative.me). 0 = extreme fear, 100 = extreme greed.
[].value_classificationstringLabel published by alternative.me: Extreme Fear, Fear, Neutral, Greed or Extreme Greed.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/fear-greed/history?limit=3"
{
  "status": "ok",
  "timestamp": 1790790271571,
  "data_type": "fear_greed_history",
  "data": [
    {
      "time": "2026-09-30T00:00:00.000Z",
      "timestamp": "2026-09-30T00:00:00.000Z",
      "value": 71,
      "value_classification": "Greed"
    },
    {
      "time": "2026-09-29T00:00:00.000Z",
      "timestamp": "2026-09-29T00:00:00.000Z",
      "value": 73,
      "value_classification": "Greed"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "timestamp": "2026-09-28T00:00:00.000Z",
      "value": 74,
      "value_classification": "Greed"
    }
  ]
}

GET /v1/global

Total crypto market. Total market capitalisation, 24 h volume and dominance of BTC, ETH and the rest.

响应的 8 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
total_market_cap_usdnumber | nullUSDTotal crypto market capitalisation.
total_volume_usdnumber | nullUSDTotal crypto trading volume over 24 h.
btc_dominance_pctnumber | nullpercent (58.5 = 58.5 %)Bitcoin share of the total market cap.
eth_dominance_pctnumber | nullpercent (58.5 = 58.5 %)Ether share of the total market cap.
others_dominance_pctnumber | nullpercent (58.5 = 58.5 %)Share of every other asset.
active_cryptocurrenciesinteger | nullcountNumber of tracked crypto assets.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/global"
{
  "status": "ok",
  "timestamp": 1790790269775,
  "data_type": "global_market",
  "data": {
    "time": "2026-09-30T17:42:59.999Z",
    "timestamp": "2026-09-30T17:42:59.999Z",
    "total_market_cap_usd": 2874833696756.3394,
    "total_volume_usd": 97265311262.98,
    "btc_dominance_pct": 58.690500129705,
    "eth_dominance_pct": 11.376752459757,
    "others_dominance_pct": 29.932747410538,
    "active_cryptocurrencies": 8167
  }
}

GET /v1/global/history

Total crypto market history. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 8 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].total_market_cap_usdnumber | nullUSDTotal crypto market capitalisation.
[].total_volume_usdnumber | nullUSDTotal crypto trading volume over 24 h.
[].btc_dominance_pctnumber | nullpercent (58.5 = 58.5 %)Bitcoin share of the total market cap.
[].eth_dominance_pctnumber | nullpercent (58.5 = 58.5 %)Ether share of the total market cap.
[].others_dominance_pctnumber | nullpercent (58.5 = 58.5 %)Share of every other asset.
[].active_cryptocurrenciesinteger | nullcountNumber of tracked crypto assets.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/global/history?limit=3"
{
  "status": "ok",
  "timestamp": 1790790270360,
  "data_type": "global_market_history",
  "data": [
    {
      "time": "2026-09-30T17:42:59.999Z",
      "timestamp": "2026-09-30T17:42:59.999Z",
      "total_market_cap_usd": 2874833696756.3394,
      "total_volume_usd": 97265311262.98,
      "btc_dominance_pct": 58.690500129705,
      "eth_dominance_pct": 11.376752459757,
      "others_dominance_pct": 29.932747410538,
      "active_cryptocurrencies": 8167
    },
    {
      "time": "2026-09-30T17:37:59.999Z",
      "timestamp": "2026-09-30T17:37:59.999Z",
      "total_market_cap_usd": 2874319286069.3374,
      "total_volume_usd": 97035286246.96,
      "btc_dominance_pct": 58.670416397566,
      "eth_dominance_pct": 11.373890924843,
      "others_dominance_pct": 29.955692677591,
      "active_cryptocurrencies": 8167
    },
    {
      "time": "2026-09-30T17:32:59.999Z",
      "timestamp": "2026-09-30T17:32:59.999Z",
      "total_market_cap_usd": 2878731860046.837,
      "total_volume_usd": 97035651300.5,
      "btc_dominance_pct": 58.666193931145,
      "eth_dominance_pct": 11.376852170647,
      "others_dominance_pct": 29.956953898208,
      "active_cryptocurrencies": 8167
    }
  ]
}

GET /v1/tokenomics

Supply, market cap and FDV. Circulating, total and max supply, with market cap and FDV derived from the latest price at request time (pegged at 1 for stablecoins, FDV null).

参数类型默认值说明
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 9 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
symbolstringTrading pair, e.g. BTCUSDT.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
circulating_supplynumber | nullcoinsCoins in circulation.
total_supplynumber | nullcoinsTotal coins issued (circulating + locked), net of burns.
max_supplynumber | nullcoinsHard cap on supply. null = no cap.
pricenumber | nullUSDLatest price used for market_cap and fdv.
market_capnumber | nullUSDcirculating_supply × current price, derived at request time.
fdvnumber | nullUSDFully diluted valuation: max_supply (or total_supply if uncapped) × price. null for stablecoins.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/tokenomics?symbol=BTCUSDT"
{
  "status": "ok",
  "timestamp": 1790790268578,
  "data_type": "tokenomics",
  "symbol": "BTCUSDT",
  "data": {
    "time": "2026-09-30T17:33:15.926Z",
    "symbol": "BTCUSDT",
    "timestamp": "2026-09-30T17:33:15.926Z",
    "circulating_supply": 20090909,
    "total_supply": 20090909,
    "max_supply": 21000000,
    "price": 84046.01,
    "market_cap": 1688560738723.0898,
    "fdv": 1764966210000
  }
}

GET /v1/tokenomics/history

Supply and market cap history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–1000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
symbol 必填string—Trading pair, e.g. BTCUSDT. Required. The 22 served pairs: GET /v1/symbols. An unknown pair returns 400 invalid_symbol with the accepted list.
响应的 8 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].pricenumber | nullUSDDaily closing price used for the derived values.
[].circulating_supplynumber | nullcoinsCoins in circulation.
[].total_supplynumber | nullcoinsTotal coins issued (circulating + locked), net of burns.
[].max_supplynumber | nullcoinsHard cap on supply. null = no cap.
[].market_capnumber | nullUSDcirculating_supply × current price, derived at request time.
[].fdvnumber | nullUSDFully diluted valuation: max_supply (or total_supply if uncapped) × price. null for stablecoins.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/tokenomics/history?symbol=BTCUSDT&limit=3"
{
  "status": "ok",
  "timestamp": 1790790269174,
  "data_type": "tokenomics_history",
  "symbol": "BTCUSDT",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "bucket": "2026-09-29T00:00:00.000Z",
      "price": 83663.66,
      "circulating_supply": 20090909,
      "total_supply": 20090909,
      "max_supply": 21000000,
      "market_cap": 1680878979666.9402,
      "fdv": 1756936860000
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "bucket": "2026-09-28T00:00:00.000Z",
      "price": 83461.1,
      "circulating_supply": 20090662,
      "total_supply": 20090662,
      "max_supply": 21000000,
      "market_cap": 1676788750248.2002,
      "fdv": 1752683100000.0002
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "bucket": "2026-09-27T00:00:00.000Z",
      "price": 84432.9,
      "circulating_supply": 20090284,
      "total_supply": 20090284,
      "max_supply": 21000000,
      "market_cap": 1696280939943.6,
      "fdv": 1773090899999.9998
    }
  ]
}

#Macro

Daily FRED series (rates, inflation, liquidity, commodities), intraday macro candles (DXY, EUR/USD, gold, oil, US yields, VIX...), and derived crypto-macro signals: net liquidity, BTC correlations, macro momentum, risk-on/risk-off score.

GET /v1/macro

Latest macro values. Latest value of one FRED series, or of every active series when series is omitted (then data is a list).

参数类型默认值说明
seriesstring | any | null—FRED series id (e.g. DGS10). Omit to get the latest value of EVERY active series.
响应的 8 个字段
data 字段类型单位说明
timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
series_idstringSeries identifier.
categorystringSeries category.
labelstringHuman-readable name.
frequencystringPublication frequency of the source (daily, weekly, monthly).
unitsstringUnit of value as published by the source.
datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
valuenumber | nullsee `units`Latest value of the series, in the unit given by units.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro?series=DGS10"
{
  "status": "ok",
  "timestamp": 1790790272185,
  "data_type": "macro",
  "data": {
    "time": "2026-09-28",
    "series_id": "DGS10",
    "category": "rates",
    "label": "Treasury 10Y",
    "frequency": "daily",
    "units": "%",
    "date": "2026-09-28",
    "value": 5.24
  }
}

GET /v1/macro/correlations

BTC correlation with macro. Rolling Pearson correlation of BTC daily returns with the dollar index, the S&P 500, gold and the VIX, over 30 and 90 days.

响应的 31 个字段
data 字段类型单位说明
assetstringAsset, e.g. BTC.
methodstringHow the value is computed.
correlationsobjectdimensionless ratioPearson correlation from -1 to 1, per macro series and window, with n = number of common days.
correlations.dxyobjectindex pointsUS Dollar Index.
correlations.dxy.30dobject
correlations.dxy.30d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.dxy.30d.ninteger | nullcountNumber of days used.
correlations.dxy.90dobject
correlations.dxy.90d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.dxy.90d.ninteger | nullcountNumber of days used.
correlations.sp500objectindex pointsS&P 500.
correlations.sp500.30dobject
correlations.sp500.30d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.sp500.30d.ninteger | nullcountNumber of days used.
correlations.sp500.90dobject
correlations.sp500.90d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.sp500.90d.ninteger | nullcountNumber of days used.
correlations.goldobjectUSD per troy ounceGold price.
correlations.gold.30dobject
correlations.gold.30d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.gold.30d.ninteger | nullcountNumber of days used.
correlations.gold.90dobject
correlations.gold.90d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.gold.90d.ninteger | nullcountNumber of days used.
correlations.vixobjectindex pointsCBOE Volatility Index.
correlations.vix.30dobject
correlations.vix.30d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.vix.30d.ninteger | nullcountNumber of days used.
correlations.vix.90dobject
correlations.vix.90d.correlationnumber | nullfrom -1 to 1Pearson correlation of daily returns.
correlations.vix.90d.ninteger | nullcountNumber of days used.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/correlations"
{
  "status": "ok",
  "timestamp": 1790790274029,
  "data_type": "macro_correlations",
  "data": {
    "asset": "BTC",
    "method": "Pearson correlation of daily returns (common dates), rolling window",
    "correlations": {
      "dxy": {
        "30d": {
          "correlation": -0.2916,
          "n": 19
        },
        "90d": {
          "correlation": -0.3964,
          "n": 60
        }
      },
      "sp500": {
        "30d": {
          "correlation": 0.6678,
          "n": 21
        },
        "90d": {
          "correlation": 0.3802,
          "n": 62
        }
      },
      "gold": {
        "30d": {
          "correlation": 0.452,
          "n": 30
        },
        "90d": {
          "correlation": 0.5598,
          "n": 90
        }
      },
      "vix": {
        "30d": {
          "correlation": -0.3265,
          "n": 22
        },
        "90d": {
          "correlation": -0.3002,
          "n": 64
        }
      }
    }
  }
}

GET /v1/macro/history

Macro series history. Values of one series at its native frequency. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000100Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
series 必填string—FRED series id, e.g. DGS10, CPIAUCSL, WALCL. The list: GET /v1/macro/series.
响应的 3 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
[].valuenumber | nullsee the series `units`Value of the series on date.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/history?series=DGS10&limit=3"
{
  "status": "ok",
  "timestamp": 1790790273427,
  "data_type": "macro_history",
  "data": [
    {
      "time": "2026-09-28",
      "date": "2026-09-28",
      "value": 5.24
    },
    {
      "time": "2026-09-25",
      "date": "2026-09-25",
      "value": 5.17
    },
    {
      "time": "2026-09-24",
      "date": "2026-09-24",
      "value": 5.18
    }
  ]
}

GET /v1/macro/intraday/history

Intraday macro candles. OHLCV candles of one instrument. data is an object {series, timeframe, candles}, candles most recent first.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000500Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
series 必填string—The series_id returned by GET /v1/macro/intraday/series (e.g. EURUSD, DXY_ICE, VIX_CBOE). The instrument_code column is NOT accepted.
timeframestring1hCandle size. Optional, default 1h. Each series serves only the timeframes listed in its catalogue entry; others return 400 timeframe_not_served.
响应的 9 个字段
data 字段类型单位说明
seriesstringSeries identifier.
timeframestringBucket size of the row.
candlesobject[]OHLCV candles, most recent first.
candles[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
candles[].opennumber | nullseries unitOpen.
candles[].highnumber | nullseries unitHigh.
candles[].lownumber | nullseries unitLow.
candles[].closenumber | nullseries unitClose.
candles[].volumenumber | nullsee `volume_kind`Volume reported by the source for this instrument (not the whole market).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/intraday/history?series=EURUSD&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790277694,
  "data_type": "macro_intraday_history",
  "timeframe": "1h",
  "data": {
    "series": "EURUSD",
    "timeframe": "1h",
    "candles": [
      {
        "time": "2026-09-28T23:00:00.000Z",
        "open": 1.13714,
        "high": 1.13719,
        "low": 1.13698,
        "close": 1.13708,
        "volume": 1074.929991543293
      },
      {
        "time": "2026-09-28T22:00:00.000Z",
        "open": 1.13673,
        "high": 1.1374,
        "low": 1.13665,
        "close": 1.13715,
        "volume": 1763.1900064647198
      },
      {
        "time": "2026-09-28T21:00:00.000Z",
        "open": 1.13702,
        "high": 1.13702,
        "low": 1.13643,
        "close": 1.13673,
        "volume": 2544.100001811981
      }
    ]
  }
}

GET /v1/macro/intraday/series

Intraday macro instruments. Instruments with intraday candles (FX, dollar index, gold, oil, US yields, VIX...), the timeframes each serves, their history depth and last candle.

响应的 16 个字段
data 字段类型单位说明
[].series_idstringSeries identifier.
[].sourcestringUpstream source.
[].instrument_codestringCode of the instrument at the source (informative; use series_id in requests).
[].categorystringSeries category.
[].labelstringHuman-readable name.
[].unitsstringUnit of value as published by the source.
[].volume_kindstringWhat volume measures for this instrument (broker = the source's own flow, not the whole market).
[].timeframesstring[]Timeframes natively collected for the series.
[].depth_startdatecalendar date (YYYY-MM-DD)First day of available history.
[].last_candleobjectISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Last candle available, per timeframe.
[].last_candle.1mdate-time
[].last_candle.5mdate-time
[].last_candle.15mdate-time
[].last_candle.1hdate-time
[].last_candle.4hdate-time
[].last_candle.1ddate-time
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/intraday/series"
{
  "status": "ok",
  "timestamp": 1790790277084,
  "data_type": "macro_intraday_series",
  "data": [
    {
      "series_id": "DXY_ICE",
      "source": "dukascopy",
      "instrument_code": "DOLLARIDXUSD",
      "category": "fx",
      "label": "ICE Dollar Index",
      "units": "Index",
      "volume_kind": "broker",
      "timeframes": [
        "1m",
        "5m",
        "15m"
      ],
      "depth_start": "2017-12-01",
      "last_candle": {
        "1m": "2026-09-28T20:59:00.000Z",
        "5m": "2026-09-28T20:55:00.000Z",
        "15m": "2026-09-28T20:45:00.000Z",
        "1h": "2026-09-28T20:00:00.000Z",
        "4h": "2026-09-28T20:00:00.000Z",
        "1d": "2026-09-28T00:00:00.000Z"
      }
    },
    {
      "series_id": "EURUSD",
      "source": "dukascopy",
      "instrument_code": "EURUSD",
      "category": "fx",
      "label": "EUR/USD",
      "units": "USD per EUR",
      "volume_kind": "broker",
      "timeframes": [
        "1m",
        "5m",
        "15m"
      ],
      "depth_start": "2003-05-04",
      "last_candle": {
        "1m": "2026-09-28T23:59:00.000Z",
        "5m": "2026-09-28T23:55:00.000Z",
        "15m": "2026-09-28T23:45:00.000Z",
        "1h": "2026-09-28T23:00:00.000Z",
        "4h": "2026-09-28T20:00:00.000Z",
        "1d": "2026-09-28T00:00:00.000Z"
      }
    },
    {
      "series_id": "IXIC",
      "source": "yahoo",
      "instrument_code": "^IXIC",
      "category": "equities",
      "label": "NASDAQ Composite",
      "units": "Index",
      "volume_kind": "none",
      "timeframes": [
        "1d"
      ],
      "depth_start": "2016-01-01",
      "last_candle": {
        "1d": "2026-09-29T00:00:00.000Z"
      }
    }
  ]
}

GET /v1/macro/momentum

Macro momentum score. A -100 to +100 score of macro tailwind for crypto (money supply, Fed balance sheet, dollar) over 30 and 90 days, with each input's contribution.

响应的 13 个字段
data 字段类型单位说明
scalestringReading scale of the score.
30dobject
30d.scorenumber | nullscore from -100 to +100Macro momentum for crypto: positive = macro tailwind (weaker dollar, growing liquidity).
30d.componentsobject[]The inputs of the score and their contributions.
30d.components[].metricstringInput name.
30d.components[].roc_pctnumber | nullpercent (58.5 = 58.5 %)Rate of change of the input over the window.
30d.components[].contributionnumber | nulldimensionless scoreContribution of the input to the score.
90dobject
90d.scorenumber | nullscore from -100 to +100Macro momentum for crypto: positive = macro tailwind (weaker dollar, growing liquidity).
90d.componentsobject[]The inputs of the score and their contributions.
90d.components[].metricstringInput name.
90d.components[].roc_pctnumber | nullpercent (58.5 = 58.5 %)Rate of change of the input over the window.
90d.components[].contributionnumber | nulldimensionless scoreContribution of the input to the score.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/momentum"
{
  "status": "ok",
  "timestamp": 1790790274648,
  "data_type": "macro_momentum",
  "data": {
    "scale": "-100 (bearish) .. +100 (bullish crypto)",
    "30d": {
      "score": 3.2,
      "components": [
        {
          "metric": "dxy",
          "roc_pct": 1.591,
          "contribution": -63.6
        },
        {
          "metric": "m2",
          "roc_pct": 0.538,
          "contribution": 71.7
        },
        {
          "metric": "fed_balance_sheet",
          "roc_pct": 0.03,
          "contribution": 1.5
        }
      ]
    },
    "90d": {
      "score": 28.1,
      "components": [
        {
          "metric": "dxy",
          "roc_pct": -0.46,
          "contribution": 9.2
        },
        {
          "metric": "m2",
          "roc_pct": 1.43,
          "contribution": 71.5
        },
        {
          "metric": "fed_balance_sheet",
          "roc_pct": 0.179,
          "contribution": 3.6
        }
      ]
    }
  }
}

GET /v1/macro/net-liquidity

US net liquidity. Fed balance sheet minus Treasury General Account minus overnight reverse repo, with its components.

响应的 20 个字段
data 字段类型单位说明
net_liquidity_musdnumber | nullmillions of USDFed balance sheet (WALCL) - Treasury General Account (TGA) - overnight reverse repo (ON RRP).
net_liquidity_usdinteger | nullUSDSame as net_liquidity_musd, in USD.
unitstringUnit of the value.
formulastringFormula used.
componentsobjectThe inputs of the score and their contributions.
components.walclobject
components.walcl.timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
components.walcl.valuenumber | nulldimensionless scoreValue of the series.
components.walcl.unitstringUnit of the value.
components.walcl.datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
components.tgaobject
components.tga.timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
components.tga.valuenumber | nulldimensionless scoreValue of the series.
components.tga.unitstringUnit of the value.
components.tga.datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
components.rrpobject
components.rrp.timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
components.rrp.valuenumber | nulldimensionless scoreValue of the series.
components.rrp.unitstringUnit of the value.
components.rrp.datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/net-liquidity"
{
  "status": "ok",
  "timestamp": 1790790275860,
  "data_type": "macro_net_liquidity",
  "data": {
    "net_liquidity_musd": 5759174,
    "net_liquidity_usd": 5759174000000,
    "unit": "USD (millions)",
    "formula": "WALCL - TGA(WTREGEN) - ON_RRP(RRPONTSYD x 1000)",
    "components": {
      "walcl": {
        "time": "2026-09-23",
        "value": 6747704,
        "unit": "Millions of $",
        "date": "2026-09-23"
      },
      "tga": {
        "time": "2026-09-23",
        "value": 977084,
        "unit": "Millions of $",
        "date": "2026-09-23"
      },
      "rrp": {
        "time": "2026-09-29",
        "value": 11.446,
        "unit": "Billions of $",
        "date": "2026-09-29"
      }
    }
  }
}

GET /v1/macro/net-liquidity/history

Net liquidity history. Most recent first. Page backwards with until_ms.

参数类型默认值说明
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000180Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 6 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
[].walcl_musdnumber | nullmillions of USDFed total assets (WALCL).
[].tga_musdnumber | nullmillions of USDTreasury General Account (WTREGEN).
[].rrp_busdnumber | nullbillions of USDOvernight reverse repo (RRPONTSYD).
[].net_liquidity_musdnumber | nullmillions of USDFed balance sheet (WALCL) - Treasury General Account (TGA) - overnight reverse repo (ON RRP).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/net-liquidity/history?limit=3"
{
  "status": "ok",
  "timestamp": 1790790276451,
  "data_type": "macro_net_liquidity_history",
  "data": [
    {
      "time": "2026-09-29",
      "date": "2026-09-29",
      "walcl_musd": 6747704,
      "tga_musd": 977084,
      "rrp_busd": 11.446,
      "net_liquidity_musd": 5759174
    },
    {
      "time": "2026-09-28",
      "date": "2026-09-28",
      "walcl_musd": 6747704,
      "tga_musd": 977084,
      "rrp_busd": 0.851,
      "net_liquidity_musd": 5769769
    },
    {
      "time": "2026-09-25",
      "date": "2026-09-25",
      "walcl_musd": 6747704,
      "tga_musd": 977084,
      "rrp_busd": 0.576,
      "net_liquidity_musd": 5770044
    }
  ]
}

GET /v1/macro/risk

Risk-on / risk-off score. Five signals (VIX, dollar trend, 10Y-2Y curve, S&P 500 vs its 50-day average, gold trend) and the share that are risk-on, from 0 to 100.

响应的 30 个字段
data 字段类型单位说明
scorenumber | nullscore from 0 to 100Share of risk-on signals × 100.
regimestringRegime of the value.
risk_on_signalsinteger | nullcountSignals currently risk-on.
available_signalsinteger | nullcountSignals that could be evaluated (data available).
total_signalsinteger | nullcountSignals in the model.
signalsobjectEach signal: its condition and whether it is risk_on.
signals.vixobjectindex pointsCBOE Volatility Index.
signals.vix.conditionstringRule of the signal.
signals.vix.risk_onbooleanWhether the signal is risk-on now.
signals.dxyobjectindex pointsUS Dollar Index.
signals.dxy.conditionstringRule of the signal.
signals.dxy.risk_onbooleanWhether the signal is risk-on now.
signals.yield_curveobject
signals.yield_curve.conditionstringRule of the signal.
signals.yield_curve.risk_onbooleanWhether the signal is risk-on now.
signals.sp500objectindex pointsS&P 500.
signals.sp500.conditionstringRule of the signal.
signals.sp500.risk_onbooleanWhether the signal is risk-on now.
signals.goldobjectUSD per troy ounceGold price.
signals.gold.conditionstringRule of the signal.
signals.gold.risk_onbooleanWhether the signal is risk-on now.
contextobjectThe raw inputs used by the signals.
context.vixnumber | nullindex pointsCBOE Volatility Index.
context.dxynumber | nullindex pointsUS Dollar Index.
context.dxy_7d_agonumber | nullindex pointsUS Dollar Index seven days earlier.
context.yield_curve_10y2ynumber | nullpercentage points10-year minus 2-year US Treasury yield.
context.sp500number | nullindex pointsS&P 500.
context.sp500_sma50number | nullindex points50-day simple moving average of the S&P 500.
context.goldnumber | nullUSD per troy ounceGold price.
context.gold_7d_agonumber | nullUSD per troy ounceGold price seven days earlier.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/risk"
{
  "status": "ok",
  "timestamp": 1790790275261,
  "data_type": "macro_risk",
  "data": {
    "score": 80,
    "regime": "risk-on",
    "risk_on_signals": 4,
    "available_signals": 5,
    "total_signals": 5,
    "signals": {
      "vix": {
        "condition": "VIX < 20",
        "risk_on": true
      },
      "dxy": {
        "condition": "DXY down over 7 days",
        "risk_on": false
      },
      "yield_curve": {
        "condition": "10Y-2Y curve positive",
        "risk_on": true
      },
      "sp500": {
        "condition": "S&P 500 > SMA50",
        "risk_on": true
      },
      "gold": {
        "condition": "Gold down over 7 days",
        "risk_on": true
      }
    },
    "context": {
      "vix": 16.04,
      "dxy": 120.33,
      "dxy_7d_ago": 119.5133,
      "yield_curve_10y2y": 0.37,
      "sp500": 7670.84,
      "sp500_sma50": 7645.157000000002,
      "gold": 4189.247701690536,
      "gold_7d_ago": 4356.842288234995
    }
  }
}

GET /v1/macro/series

Macro series catalogue. Every active FRED series with its category, unit, frequency and latest value.

参数类型默认值说明
categorystring | any | null—Filter by category, e.g. rates, inflation, liquidity, commodities.
响应的 8 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].series_idstringSeries identifier.
[].categorystringSeries category.
[].labelstringHuman-readable name.
[].frequencystringPublication frequency of the source (daily, weekly, monthly).
[].unitsstringUnit of value as published by the source.
[].datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
[].valuenumber | nulldimensionless scoreValue of the series.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/macro/series"
{
  "status": "ok",
  "timestamp": 1790790272807,
  "data_type": "macro_series",
  "data": [
    {
      "time": "2026-09-29",
      "series_id": "DCOILWTICO",
      "category": "commodities",
      "label": "WTI Crude Oil",
      "frequency": "daily",
      "units": "USD per barrel",
      "date": "2026-09-29",
      "value": 96.16
    },
    {
      "time": "2026-09-29",
      "series_id": "GOLD_USD",
      "category": "commodities",
      "label": "Gold (PAXG proxy, USD/oz)",
      "frequency": "daily",
      "units": "USD per troy ounce",
      "date": "2026-09-29",
      "value": 4189.247701690536
    },
    {
      "time": "2026-08-01",
      "series_id": "PAYEMS",
      "category": "employment",
      "label": "Nonfarm Payrolls",
      "frequency": "monthly",
      "units": "Thousands of persons",
      "date": "2026-08-01",
      "value": 159075
    }
  ]
}

#ETF

Spot BTC and ETH ETF fundamentals per issuer, anchored on SEC EDGAR filings: shares, NAV, net assets and coins held.

GET /v1/etf/fundamentals

ETF fundamentals per issuer. Latest SEC EDGAR anchor per spot ETF: shares outstanding, NAV, net assets and coins held. data is a list, one row per issuer.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 13 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].tickerstringETF ticker.
[].issuerstringETF issuer.
[].period_enddatecalendar date (YYYY-MM-DD)End of the reporting period of the filing.
[].balance_datedatecalendar date (YYYY-MM-DD)Date of the balance sheet the holdings come from.
[].shares_outstandingnumber | nullsharesETF shares outstanding.
[].nav_per_sharenumber | nullUSDNet asset value per share.
[].net_assets_usdnumber | nullUSDNet assets (AUM).
[].formstringSEC form type of the filing (10-Q, 10-K...).
[].fileddatecalendar date (YYYY-MM-DD)Filing date at the SEC.
[].filing_urlstringLink to the filing on SEC EDGAR.
[].btc_holdingsnumber | nullBTCBTC held by the fund.
[].holdings_estimatedbooleantrue if the holdings are derived from net assets / price rather than read in the filing.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/etf/fundamentals?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790278319,
  "data_type": "etf_fundamentals",
  "data": [
    {
      "time": "2026-08-03",
      "ticker": "ARKB",
      "issuer": "Ark/21Shares",
      "period_end": "2026-08-03",
      "balance_date": "2026-06-30",
      "shares_outstanding": 101190000,
      "nav_per_share": 19.47,
      "net_assets_usd": 1889240000,
      "form": "10-Q",
      "filed": "2026-08-06",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/1869699/000121390026086191/",
      "btc_holdings": 32178.228,
      "holdings_estimated": false
    },
    {
      "time": "2026-08-02",
      "ticker": "BITB",
      "issuer": "Bitwise",
      "period_end": "2026-08-02",
      "balance_date": "2026-06-30",
      "shares_outstanding": 68160000,
      "nav_per_share": 31.87,
      "net_assets_usd": 2125612000,
      "form": "10-Q",
      "filed": "2026-08-07",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/1763415/000119312526340183/",
      "btc_holdings": 36269.90004334071,
      "holdings_estimated": true
    },
    {
      "time": "2026-07-30",
      "ticker": "BRRR",
      "issuer": "CoinShares/Valkyrie",
      "period_end": "2026-07-30",
      "balance_date": "2026-06-30",
      "shares_outstanding": 20895000,
      "nav_per_share": 16.46,
      "net_assets_usd": 342354115,
      "form": "10-Q",
      "filed": "2026-08-12",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/1841175/000199937126017701/",
      "btc_holdings": 5841.682080490876,
      "holdings_estimated": true
    }
  ]
}

GET /v1/etf/fundamentals/history

ETF fundamentals history. One row per filing and issuer. Most recent first. Page backwards with until_ms.

参数类型默认值说明
tickerstring | any | null—ETF ticker (e.g. IBIT, FBTC). Omit for every issuer.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–2000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 13 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].period_enddatecalendar date (YYYY-MM-DD)End of the reporting period of the filing.
[].tickerstringETF ticker.
[].issuerstringETF issuer.
[].balance_datedatecalendar date (YYYY-MM-DD)Date of the balance sheet the holdings come from.
[].shares_outstandingnumber | nullsharesETF shares outstanding.
[].nav_per_sharenumber | nullUSDNet asset value per share.
[].net_assets_usdnumber | nullUSDNet assets (AUM).
[].formstringSEC form type of the filing (10-Q, 10-K...).
[].fileddatecalendar date (YYYY-MM-DD)Filing date at the SEC.
[].filing_urlstringLink to the filing on SEC EDGAR.
[].btc_holdingsnumber | nullBTCBTC held by the fund.
[].holdings_estimatedbooleantrue if the holdings are derived from net assets / price rather than read in the filing.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/etf/fundamentals/history?asset=BTC&limit=3"
{
  "status": "ok",
  "timestamp": 1790790278974,
  "data_type": "etf_fundamentals_history",
  "data": [
    {
      "time": "2026-08-03",
      "period_end": "2026-08-03",
      "ticker": "ARKB",
      "issuer": "Ark/21Shares",
      "balance_date": "2026-06-30",
      "shares_outstanding": 101190000,
      "nav_per_share": 19.47,
      "net_assets_usd": 1889240000,
      "form": "10-Q",
      "filed": "2026-08-06",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/1869699/000121390026086191/",
      "btc_holdings": 32178.228,
      "holdings_estimated": false
    },
    {
      "time": "2026-08-03",
      "period_end": "2026-08-03",
      "ticker": "EZBC",
      "issuer": "Franklin",
      "balance_date": "2026-06-30",
      "shares_outstanding": 9750000,
      "nav_per_share": 34.15,
      "net_assets_usd": 334694929,
      "form": "10-Q",
      "filed": "2026-08-14",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/1992870/000114036126033208/",
      "btc_holdings": 5664.0163,
      "holdings_estimated": false
    },
    {
      "time": "2026-08-02",
      "period_end": "2026-08-02",
      "ticker": "BITB",
      "issuer": "Bitwise",
      "balance_date": "2026-06-30",
      "shares_outstanding": 68160000,
      "nav_per_share": 31.87,
      "net_assets_usd": 2125612000,
      "form": "10-Q",
      "filed": "2026-08-07",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/1763415/000119312526340183/",
      "btc_holdings": 36269.90004334071,
      "holdings_estimated": true
    }
  ]
}

#Options

BTC and ETH options aggregated across venues: open interest and volume (calls/puts, USD), put/call ratio, ATM implied volatility, max pain, per-expiry and per-strike views, OI-weighted greeks.

GET /v1/options/expiry

Per-expiry breakdown. Every active expiry: open interest, put/call ratio, max pain, top call and put strikes, ATM IV. data is a list.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 10 个字段
data 字段类型单位说明
[].expirydate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (YYYY-MM-DD) as the expiry parameter.
[].dte_daysnumber | nulldaysDays to expiry (fractional).
[].oi_call_usdnumber | nullUSDCall open interest, USD.
[].oi_put_usdnumber | nullUSDPut open interest, USD.
[].pc_rationumber | nullputs / callsPut/call open interest ratio. Below 1 = more calls than puts.
[].max_pain_strikenumber | nullUSDStrike at which option holders lose the most at expiry (max pain).
[].top_call_strikenumber | nullUSDStrike with the largest call open interest.
[].top_put_strikenumber | nullUSDStrike with the largest put open interest.
[].iv_atm_pctnumber | nullpercent (58.5 = 58.5 %)At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %).
[].pc_signalstringbullish (pc_ratio < 0.7), neutral, or bearish (pc_ratio > 1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/expiry?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790290993,
  "data_type": "options_expiry",
  "data": [
    {
      "expiry": "2026-10-01T08:00:00.000Z",
      "dte_days": 0.5940510870949074,
      "oi_call_usd": 531258085.63308895,
      "oi_put_usd": 544784366.8505492,
      "pc_ratio": 1.0254608477183764,
      "max_pain_strike": 84250,
      "top_call_strike": 86000,
      "top_put_strike": 84000,
      "iv_atm_pct": 25.480000000000008,
      "pc_signal": "bearish"
    },
    {
      "expiry": "2026-10-02T08:00:00.000Z",
      "dte_days": 1.5940510870949074,
      "oi_call_usd": 1568143091.45589,
      "oi_put_usd": 1781056523.5065172,
      "pc_ratio": 1.1357742371921906,
      "max_pain_strike": 83000,
      "top_call_strike": 88000,
      "top_put_strike": 80000,
      "iv_atm_pct": 30.361844316640266,
      "pc_signal": "bearish"
    },
    {
      "expiry": "2026-10-03T08:00:00.000Z",
      "dte_days": 2.5940510870949076,
      "oi_call_usd": 95288683.02928346,
      "oi_put_usd": 137632591.88934326,
      "pc_ratio": 1.4443750035567913,
      "max_pain_strike": 84000,
      "top_call_strike": 88000,
      "top_put_strike": 80000,
      "iv_atm_pct": 32.22453280787994,
      "pc_signal": "bearish"
    }
  ]
}

GET /v1/options/greeks

Aggregated greeks. Delta, gamma, theta and vega of open options, recomputed under one convention and OI-weighted, so they add up across venues.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 10 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
assetstringAsset, e.g. BTC.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
deltanumber | nulldeltaAggregated delta of open options, OI-weighted (per unit of underlying).
gammanumber | nulldelta per USDChange of delta for a 1 USD move of the underlying, OI-weighted.
thetanumber | nullUSD per dayTime decay per day, OI-weighted.
veganumber | nullUSD per volatility pointValue change for +1 point of implied volatility, OI-weighted.
coverageobjectsources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all).
coverage.sources_activeinteger | nullcountOptions venues contributing.
coverage.oi_coverage_rationumber | nullfraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/greeks?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790291610,
  "data_type": "options_greeks",
  "data": {
    "time": "2026-09-30T17:44:33.986Z",
    "asset": "BTC",
    "timestamp": "2026-09-30T17:44:33.986Z",
    "delta": 0.15602129324574576,
    "gamma": 0.00002933199298487753,
    "theta": -34.25528485415759,
    "vega": 66.41197461414434,
    "coverage": {
      "sources_active": 4,
      "oi_coverage_ratio": 1
    }
  }
}

GET /v1/options/iv

ATM implied volatility. At-the-money implied volatility aggregated across venues, in percent.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 4 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
assetstringAsset, e.g. BTC.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
iv_atm_pctnumber | nullpercent (58.5 = 58.5 %)At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/iv?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790286693,
  "data_type": "options_iv",
  "data": {
    "time": "2026-09-30T17:44:33.986Z",
    "asset": "BTC",
    "timestamp": "2026-09-30T17:44:33.986Z",
    "iv_atm_pct": 25.480000000000008
  }
}

GET /v1/options/iv/history

ATM IV history. Per bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframestring1hBucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 3 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].iv_atm_pctnumber | nullpercent (58.5 = 58.5 %)At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/iv/history?asset=BTC&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790287320,
  "data_type": "options_iv_history",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "iv_atm_pct": 27.51548080302511
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "iv_atm_pct": 26.369999999999997
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "iv_atm_pct": 26.03711032017726
    }
  ]
}

GET /v1/options/iv/klines

ATM IV candles. OHLC of the ATM implied volatility per bucket, in percent. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframestring1hBucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].opennumber | nullpercent (58.5 = 58.5 %)ATM IV at the start of the bucket.
[].highnumber | nullpercent (58.5 = 58.5 %)Highest ATM IV.
[].lownumber | nullpercent (58.5 = 58.5 %)Lowest ATM IV.
[].closenumber | nullpercent (58.5 = 58.5 %)ATM IV at the end of the bucket.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/iv/klines?asset=BTC&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790287966,
  "data_type": "options_iv_klines",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "open": 26.39,
      "high": 28.03013588929368,
      "low": 25.781574454476548,
      "close": 27.51548080302511
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "open": 26.354976068960383,
      "high": 26.686715563252683,
      "low": 24.998494883192603,
      "close": 26.369999999999997
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "open": 30.58,
      "high": 30.9,
      "low": 25.872897675979168,
      "close": 26.03711032017726
    }
  ]
}

GET /v1/options/max-pain

Max pain per expiry. Max pain strike of every active expiry, with days to expiry, put/call ratio and open interest. data is a list.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 6 个字段
data 字段类型单位说明
[].expirydate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (YYYY-MM-DD) as the expiry parameter.
[].dte_daysnumber | nulldaysDays to expiry (fractional).
[].max_pain_strikenumber | nullUSDStrike at which option holders lose the most at expiry (max pain).
[].pc_rationumber | nullputs / callsPut/call open interest ratio. Below 1 = more calls than puts.
[].oi_call_usdnumber | nullUSDCall open interest, USD.
[].oi_put_usdnumber | nullUSDPut open interest, USD.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/max-pain?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790289076,
  "data_type": "options_max_pain",
  "data": [
    {
      "expiry": "2026-10-01T08:00:00.000Z",
      "dte_days": 0.5940510870949074,
      "max_pain_strike": 84250,
      "pc_ratio": 1.0254608477183764,
      "oi_call_usd": 531258085.63308895,
      "oi_put_usd": 544784366.8505492
    },
    {
      "expiry": "2026-10-02T08:00:00.000Z",
      "dte_days": 1.5940510870949074,
      "max_pain_strike": 83000,
      "pc_ratio": 1.1357742371921906,
      "oi_call_usd": 1568143091.45589,
      "oi_put_usd": 1781056523.5065172
    },
    {
      "expiry": "2026-10-03T08:00:00.000Z",
      "dte_days": 2.5940510870949076,
      "max_pain_strike": 84000,
      "pc_ratio": 1.4443750035567913,
      "oi_call_usd": 95288683.02928346,
      "oi_put_usd": 137632591.88934326
    }
  ]
}

GET /v1/options/max-pain/history

Max pain history of one expiry. How the max pain of ONE expiry moved. expiry is required. Most recent first. Page backwards with until_ms.

参数类型默认值说明
expirydate | any | null—REQUIRED. Expiry date YYYY-MM-DD. Missing: 422 missing_expiry, and the error lists the active expiries.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 4 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
[].max_pain_strikenumber | nullUSDStrike at which option holders lose the most at expiry (max pain).
[].pc_rationumber | nullputs / callsPut/call open interest ratio. Below 1 = more calls than puts.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/max-pain/history?asset=BTC&expiry=2026-10-01&limit=3"
{
  "status": "ok",
  "timestamp": 1790790289717,
  "data_type": "options_max_pain_history",
  "data": [
    {
      "time": "2026-09-30T17:44:33.986Z",
      "timestamp": "2026-09-30T17:44:33.986Z",
      "max_pain_strike": 84250,
      "pc_ratio": 1.0254608477183764
    },
    {
      "time": "2026-09-30T17:43:26.791Z",
      "timestamp": "2026-09-30T17:43:26.791Z",
      "max_pain_strike": 84250,
      "pc_ratio": 1.024230175691702
    },
    {
      "time": "2026-09-30T17:42:19.610Z",
      "timestamp": "2026-09-30T17:42:19.610Z",
      "max_pain_strike": 84250,
      "pc_ratio": 1.0242167838195655
    }
  ]
}

GET /v1/options/oi

Options open interest. Calls and puts, in USD and in coins.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 11 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
assetstringAsset, e.g. BTC.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
total_usdnumber | nullUSDTotal, USD.
call_usdnumber | nullUSDCalls, USD.
put_usdnumber | nullUSDPuts, USD.
call_coinnumber | nullbase asset quantity (BTC for BTCUSDT)Call open interest in coins.
put_coinnumber | nullbase asset quantity (BTC for BTCUSDT)Put open interest in coins.
coverageobjectsources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all).
coverage.sources_activeinteger | nullcountOptions venues contributing.
coverage.oi_coverage_rationumber | nullfraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/oi?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790280730,
  "data_type": "options_oi",
  "data": {
    "time": "2026-09-30T17:44:33.986Z",
    "asset": "BTC",
    "timestamp": "2026-09-30T17:44:33.986Z",
    "total_usd": 36423347698.02251,
    "call_usd": 22218554587.502285,
    "put_usd": 14204793110.520224,
    "call_coin": 262204.62,
    "put_coin": 167789.02,
    "coverage": {
      "sources_active": 4,
      "oi_coverage_ratio": 1
    }
  }
}

GET /v1/options/oi/delta

Options open interest change. Change of call and put open interest over the latest bucket.

参数类型默认值说明
timeframestring1hBucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 7 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
delta_call_usdnumber | nullUSDChange of call open interest over the bucket, USD.
delta_put_usdnumber | nullUSDChange of put open interest over the bucket, USD.
delta_total_usdnumber | nullUSDChange of total open interest over the bucket, USD.
assetstringAsset, e.g. BTC.
timeframestringBucket size of the row.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/oi/delta?asset=BTC&timeframe=1h"
{
  "status": "ok",
  "timestamp": 1790790282077,
  "data_type": "options_oi_delta",
  "timeframe": "1h",
  "data": {
    "time": "2026-09-30T17:44:33.986Z",
    "timestamp": "2026-09-30T17:44:33.986Z",
    "delta_call_usd": -65936080.49573517,
    "delta_put_usd": -51989692.115448,
    "delta_total_usd": -117925772.61118317,
    "asset": "BTC",
    "timeframe": "1h"
  }
}

GET /v1/options/oi/delta/history

Options OI change history. Per bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframestring1hBucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 5 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].delta_call_usdnumber | nullUSDChange of call open interest over the bucket, USD.
[].delta_put_usdnumber | nullUSDChange of put open interest over the bucket, USD.
[].delta_total_usdnumber | nullUSDChange of total open interest over the bucket, USD.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/oi/delta/history?asset=BTC&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790282779,
  "data_type": "options_oi_delta_history",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "delta_call_usd": 74136277.10503006,
      "delta_put_usd": 61725492.81556702,
      "delta_total_usd": 135861769.9206009
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "delta_call_usd": 121118135.45619965,
      "delta_put_usd": 149065665.02907562,
      "delta_total_usd": 270183800.48527527
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "delta_call_usd": -237661820.86148453,
      "delta_put_usd": -52983718.61921692,
      "delta_total_usd": -290645539.48070526
    }
  ]
}

GET /v1/options/oi/distribution

Open interest per strike. Latest open interest per (expiry, strike), calls and puts separately. data is a list.

参数类型默认值说明
expirydate | any | null—Restrict to one expiry (YYYY-MM-DD). Omit for every active expiry.
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 4 个字段
data 字段类型单位说明
[].expirydate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (YYYY-MM-DD) as the expiry parameter.
[].strikenumber | nullUSDStrike price.
[].call_oi_usdnumber | string | nullUSDCall open interest at this strike, USD. null = no call listed.
[].put_oi_usdnumber | nullUSDPut open interest at this strike, USD. null = no put listed.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/oi/distribution?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790283398,
  "data_type": "options_oi_distribution",
  "data": [
    {
      "expiry": "2026-10-01T08:00:00.000Z",
      "strike": 74000,
      "call_oi_usd": null,
      "put_oi_usd": 1343594.08
    },
    {
      "expiry": "2026-10-01T08:00:00.000Z",
      "strike": 75000,
      "call_oi_usd": null,
      "put_oi_usd": 3543729.3860000004
    },
    {
      "expiry": "2026-10-01T08:00:00.000Z",
      "strike": 76000,
      "call_oi_usd": null,
      "put_oi_usd": 445065.539
    }
  ]
}

GET /v1/options/oi/history

Options open interest history. Per bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframestring1hBucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 5 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].oi_call_usdnumber | nullUSDCall open interest, USD.
[].oi_put_usdnumber | nullUSDPut open interest, USD.
[].oi_total_usdnumber | nullUSDTotal open interest, USD.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/oi/history?asset=BTC&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790281362,
  "data_type": "options_oi_history",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "oi_call_usd": 22291425968.727673,
      "oi_put_usd": 14259448648.632486,
      "oi_total_usd": 36550874617.36016
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "oi_call_usd": 22217289691.622643,
      "oi_put_usd": 14197723155.81692,
      "oi_total_usd": 36415012847.43956
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "oi_call_usd": 22096171556.166443,
      "oi_put_usd": 14048657490.787844,
      "oi_total_usd": 36144829046.954285
    }
  ]
}

GET /v1/options/pc-ratio

Put/call ratio. Put/call open interest ratio and its reading.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
assetstringAsset, e.g. BTC.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
pc_rationumber | nullputs / callsPut/call open interest ratio. Below 1 = more calls than puts.
signalstringbullish (pc_ratio < 0.7), neutral, or bearish (pc_ratio > 1).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/pc-ratio?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790285416,
  "data_type": "options_pc_ratio",
  "data": {
    "time": "2026-09-30T17:44:33.986Z",
    "asset": "BTC",
    "timestamp": "2026-09-30T17:44:33.986Z",
    "pc_ratio": 0.6393212058227351,
    "signal": "bullish"
  }
}

GET /v1/options/pc-ratio/history

Put/call ratio history. Per bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframestring1hBucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 3 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].pc_rationumber | nullputs / callsPut/call open interest ratio. Below 1 = more calls than puts.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/pc-ratio/history?asset=BTC&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790286056,
  "data_type": "options_pc_ratio_history",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "pc_ratio": 0.6396831081437708
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "pc_ratio": 0.6390393856713485
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "pc_ratio": 0.6357960000028713
    }
  ]
}

GET /v1/options/summary

Options market summary. Open interest and volume (calls/puts, USD), put/call ratio and signal, ATM IV and the nearest expiry, aggregated across options venues.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 24 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
assetstringAsset, e.g. BTC.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
underlying_pricenumber | nullUSDPrice of the underlying used by the options venues.
open_interestobjectUSDOptions open interest in USD: total_usd, call_usd, put_usd.
open_interest.total_usdnumber | nullUSDTotal, USD.
open_interest.call_usdnumber | nullUSDCalls, USD.
open_interest.put_usdnumber | nullUSDPuts, USD.
volumeobjectbase asset quantity (BTC for BTCUSDT)Volume traded, AGGREGATED across venues (spot + perpetual futures), in base asset units.
volume.total_usdnumber | nullUSDTotal, USD.
volume.call_usdnumber | nullUSDCalls, USD.
volume.put_usdnumber | nullUSDPuts, USD.
pc_rationumber | nullputs / callsPut/call open interest ratio. Below 1 = more calls than puts.
pc_signalstringbullish (pc_ratio < 0.7), neutral, or bearish (pc_ratio > 1).
iv_atm_pctnumber | nullpercent (58.5 = 58.5 %)At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %).
nearest_expiryobjectThe next expiry: date, days left, max pain, put/call ratio, ATM IV.
nearest_expiry.expirydate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (YYYY-MM-DD) as the expiry parameter.
nearest_expiry.dte_daysnumber | nulldaysDays to expiry (fractional).
nearest_expiry.max_pain_strikenumber | nullUSDStrike at which option holders lose the most at expiry (max pain).
nearest_expiry.pc_rationumber | nullputs / callsPut/call open interest ratio. Below 1 = more calls than puts.
nearest_expiry.iv_atm_pctnumber | nullpercent (58.5 = 58.5 %)At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %).
coverageobjectsources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all).
coverage.sources_activeinteger | nullcountOptions venues contributing.
coverage.oi_coverage_rationumber | nullfraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/summary?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790280113,
  "data_type": "options_summary",
  "data": {
    "time": "2026-09-30T17:44:33.986Z",
    "asset": "BTC",
    "timestamp": "2026-09-30T17:44:33.986Z",
    "underlying_price": 84671.87,
    "open_interest": {
      "total_usd": 36423347698.02251,
      "call_usd": 22218554587.502285,
      "put_usd": 14204793110.520224
    },
    "volume": {
      "total_usd": 1161041146.495026,
      "call_usd": 570939143.4677235,
      "put_usd": 590102003.0273026
    },
    "pc_ratio": 0.6393212058227351,
    "pc_signal": "bullish",
    "iv_atm_pct": 25.480000000000008,
    "nearest_expiry": {
      "expiry": "2026-10-01T08:00:00.000Z",
      "dte_days": 0.5940510870949074,
      "max_pain_strike": 84250,
      "pc_ratio": 1.0254608477183764,
      "iv_atm_pct": 25.480000000000008
    },
    "coverage": {
      "sources_active": 4,
      "oi_coverage_ratio": 1
    }
  }
}

GET /v1/options/volume

Options volume. Calls and puts traded, USD.

参数类型默认值说明
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 9 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
assetstringAsset, e.g. BTC.
timestampdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Measurement instant (start of the bucket for aggregated rows).
total_usdnumber | nullUSDTotal, USD.
call_usdnumber | nullUSDCalls, USD.
put_usdnumber | nullUSDPuts, USD.
coverageobjectsources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all).
coverage.sources_activeinteger | nullcountOptions venues contributing.
coverage.oi_coverage_rationumber | nullfraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/volume?asset=BTC"
{
  "status": "ok",
  "timestamp": 1790790284152,
  "data_type": "options_volume",
  "data": {
    "time": "2026-09-30T17:44:33.986Z",
    "asset": "BTC",
    "timestamp": "2026-09-30T17:44:33.986Z",
    "total_usd": 1161041146.495026,
    "call_usd": 570939143.4677235,
    "put_usd": 590102003.0273026,
    "coverage": {
      "sources_active": 4,
      "oi_coverage_ratio": 1
    }
  }
}

GET /v1/options/volume/history

Options volume history. Per bucket. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timeframestring1hBucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000200Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
assetstringBTCAsset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset.
响应的 4 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].bucketdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket (left edge). A 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
[].vol_call_usdnumber | nullUSDCall volume over the bucket, USD.
[].vol_put_usdnumber | nullUSDPut volume over the bucket, USD.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/options/volume/history?asset=BTC&timeframe=1h&limit=3"
{
  "status": "ok",
  "timestamp": 1790790284804,
  "data_type": "options_volume_history",
  "timeframe": "1h",
  "data": [
    {
      "time": "2026-09-30T16:00:00.000Z",
      "bucket": "2026-09-30T16:00:00.000Z",
      "vol_call_usd": 562615460.4712248,
      "vol_put_usd": 578584644.1821741
    },
    {
      "time": "2026-09-30T15:00:00.000Z",
      "bucket": "2026-09-30T15:00:00.000Z",
      "vol_call_usd": 539939649.8949113,
      "vol_put_usd": 546795561.3387902
    },
    {
      "time": "2026-09-30T14:00:00.000Z",
      "bucket": "2026-09-30T14:00:00.000Z",
      "vol_call_usd": 522140110.47708505,
      "vol_put_usd": 530128814.60147095
    }
  ]
}

#Bitcoin network

Bitcoin chain state: recommended fees, mempool, mining pool concentration, difficulty and the next adjustment.

GET /v1/btc/fees

Recommended Bitcoin fees. Fee rates for each confirmation target (sat/vB), rounded and precise, and the fee pressure.

响应的 16 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
recommendedobjectsatoshis per virtual byte (sat/vB)Recommended fee rates, rounded: fastest, half_hour, hour, economy, minimum.
recommended.fastestinteger | nullsatoshis per virtual byte (sat/vB)Fee rate for the next block.
recommended.half_hourinteger | nullsatoshis per virtual byte (sat/vB)Fee rate for confirmation within ~30 minutes.
recommended.hourinteger | nullsatoshis per virtual byte (sat/vB)Fee rate for confirmation within ~1 hour.
recommended.economyinteger | nullsatoshis per virtual byte (sat/vB)Fee rate for a low-priority confirmation.
recommended.minimuminteger | nullsatoshis per virtual byte (sat/vB)Minimum relay fee rate.
preciseobjectsatoshis per virtual byte (sat/vB)Same fee rates, unrounded.
precise.fastestnumber | nullsatoshis per virtual byte (sat/vB)Fee rate for the next block.
precise.half_hournumber | nullsatoshis per virtual byte (sat/vB)Fee rate for confirmation within ~30 minutes.
precise.hournumber | nullsatoshis per virtual byte (sat/vB)Fee rate for confirmation within ~1 hour.
precise.economynumber | nullsatoshis per virtual byte (sat/vB)Fee rate for a low-priority confirmation.
precise.minimumnumber | nullsatoshis per virtual byte (sat/vB)Minimum relay fee rate.
fee_pressureobjectdimensionless ratioratio = fastest / economy fee rate, and its signal: normal (<= 2), elevated (> 2), congested (> 5).
fee_pressure.rationumber | nulldimensionless ratiofastest / economy fee rate.
fee_pressure.signalstringFee pressure: normal (ratio <= 2), elevated (> 2) or congested (> 5).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/fees"
{
  "status": "ok",
  "timestamp": 1790790292219,
  "data_type": "btc_fees",
  "data": {
    "time": "2026-09-30T17:44:06.179Z",
    "recommended": {
      "fastest": 2,
      "half_hour": 1,
      "hour": 1,
      "economy": 1,
      "minimum": 1
    },
    "precise": {
      "fastest": 1.507,
      "half_hour": 0.962,
      "hour": 0.518,
      "economy": 0.2,
      "minimum": 0.1
    },
    "fee_pressure": {
      "ratio": 2,
      "signal": "normal"
    }
  }
}

GET /v1/btc/fees/history

Bitcoin fees history. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000300Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].fastest_feeinteger | nullsatoshis per virtual byte (sat/vB)Fee rate for the next block.
[].half_hour_feeinteger | nullsatoshis per virtual byte (sat/vB)Fee rate for ~30 minutes.
[].hour_feeinteger | nullsatoshis per virtual byte (sat/vB)Fee rate for ~1 hour.
[].economy_feeinteger | nullsatoshis per virtual byte (sat/vB)Low-priority fee rate.
[].minimum_feeinteger | nullsatoshis per virtual byte (sat/vB)Minimum relay fee rate.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/fees/history?timePeriod=1w&limit=3"
{
  "status": "ok",
  "timestamp": 1790790292824,
  "data_type": "btc_fees_history",
  "data": [
    {
      "time": "2026-09-30T17:44:06.179Z",
      "fastest_fee": 2,
      "half_hour_fee": 1,
      "hour_fee": 1,
      "economy_fee": 1,
      "minimum_fee": 1
    },
    {
      "time": "2026-09-30T17:43:05.648Z",
      "fastest_fee": 2,
      "half_hour_fee": 1,
      "hour_fee": 1,
      "economy_fee": 1,
      "minimum_fee": 1
    },
    {
      "time": "2026-09-30T17:42:05.470Z",
      "fastest_fee": 4,
      "half_hour_fee": 3,
      "hour_fee": 1,
      "economy_fee": 1,
      "minimum_fee": 1
    }
  ]
}

GET /v1/btc/mempool

Bitcoin mempool. Pending transactions, virtual size, total fees, fee histogram and the 1 h / 4 h / 24 h trend.

响应的 10 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
tx_countinteger | nullcountUnconfirmed transactions in the mempool.
vsizeinteger | nullvirtual bytesTotal virtual size of the mempool.
total_feeinteger | nullsatoshisTotal fees waiting in the mempool.
fee_histogramnumber | null[][]satoshis per virtual byte (sat/vB)[fee_rate, vsize] pairs: how much virtual size waits at each fee rate.
trendobjectvirtual bytesMempool size change over 1 h, 4 h and 24 h, and its signal (filling, draining, stable).
trend.vsize_delta_1hinteger | nullvirtual bytesMempool size change over 1 hour.
trend.vsize_delta_4hinteger | nullvirtual bytesMempool size change over 4 hours.
trend.vsize_delta_24hinteger | nullvirtual bytesMempool size change over 24 hours.
trend.signalstringfilling (vsize grew over 1 h), draining (shrank) or stable.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/mempool"
{
  "status": "ok",
  "timestamp": 1790790293508,
  "data_type": "btc_mempool",
  "data": {
    "time": "2026-09-30T17:44:06.179Z",
    "tx_count": 88092,
    "vsize": 44891543,
    "total_fee": 8758605,
    "fee_histogram": [
      [
        5.007924,
        50350
      ],
      [
        3.621282,
        59177
      ],
      [
        3.0182927,
        50006
      ]
    ],
    "trend": {
      "vsize_delta_1h": -2980246,
      "vsize_delta_4h": -1193654,
      "vsize_delta_24h": 1070554,
      "signal": "draining"
    }
  }
}

GET /v1/btc/mempool/history

Mempool history. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000300Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 4 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].tx_countinteger | nullcountUnconfirmed transactions in the mempool.
[].vsizeinteger | nullvirtual bytesTotal virtual size of the mempool.
[].total_feeinteger | nullsatoshisTotal fees waiting in the mempool.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/mempool/history?timePeriod=1w&limit=3"
{
  "status": "ok",
  "timestamp": 1790790294121,
  "data_type": "btc_mempool_history",
  "data": [
    {
      "time": "2026-09-30T17:44:06.179Z",
      "tx_count": 88092,
      "vsize": 44891543,
      "total_fee": 8758605
    },
    {
      "time": "2026-09-30T17:43:05.648Z",
      "tx_count": 87592,
      "vsize": 44735546,
      "total_fee": 8335460
    },
    {
      "time": "2026-09-30T17:42:05.470Z",
      "tx_count": 88575,
      "vsize": 43043826,
      "total_fee": 11303334
    }
  ]
}

GET /v1/btc/mining

Mining pool concentration. Share of the largest pools, pool ranking and the latest block reward in sats and USD.

响应的 16 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
concentrationobjectpercent (58.5 = 58.5 %)Mining pool concentration over the last period.
concentration.top1_share_pctnumber | nullpercent (58.5 = 58.5 %)Share of blocks mined by the largest pool.
concentration.top3_share_pctnumber | nullpercent (58.5 = 58.5 %)Share of blocks mined by the three largest pools.
concentration.pool_countinteger | nullcountNumber of pools that mined at least one block.
concentration.signalstringCentralisation risk from the top-3 pool share: healthy (<= 40 %), moderate (> 40 %), high_risk (> 50 %).
latest_rewardobjectAverage block reward (subsidy + fees) of the latest blocks, in satoshis and USD.
latest_reward.avg_reward_satsinteger | nullsatoshisAverage block reward.
latest_reward.avg_reward_usdnumber | nullUSDAverage block reward in USD.
latest_reward.btc_price_usdnumber | nullUSDBTC price used for the conversion.
poolsobject[]Pools ranked by blocks mined: name, slug, block_count, rank, share_pct.
pools[].namestringName.
pools[].slugstringStable identifier.
pools[].block_countinteger | nullcountBlocks mined over the period.
pools[].rankinteger | nullrank (1 = first)Rank.
pools[].share_pctnumber | nullpercent (58.5 = 58.5 %)Share of blocks.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/mining"
{
  "status": "ok",
  "timestamp": 1790790294780,
  "data_type": "btc_mining",
  "data": {
    "time": "2026-09-30T17:43:15.367Z",
    "concentration": {
      "top1_share_pct": 25.58365758754864,
      "top3_share_pct": 62.45136186770428,
      "pool_count": 16,
      "signal": "high_risk"
    },
    "latest_reward": {
      "avg_reward_sats": 315067914,
      "avg_reward_usd": 265551.84063576,
      "btc_price_usd": 84284
    },
    "pools": [
      {
        "name": "Foundry USA",
        "slug": "foundryusa",
        "block_count": 263,
        "rank": 1,
        "share_pct": 25.58365758754864
      },
      {
        "name": "AntPool",
        "slug": "antpool",
        "block_count": 222,
        "rank": 2,
        "share_pct": 21.595330739299612
      },
      {
        "name": "F2Pool",
        "slug": "f2pool",
        "block_count": 157,
        "rank": 3,
        "share_pct": 15.272373540856032
      }
    ]
  }
}

GET /v1/btc/mining/history

Mining history. One series selected by dataset. Most recent first. Page backwards with until_ms.

参数类型默认值说明
datasetstringconcentrationWhich mining series to return: concentration (pool shares), rewards (block rewards), difficulty or fee_rates.
timePeriodstring | any | null—Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000300Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 5 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].total_block_countinteger | nullcountBlocks in the period.
[].top3_share_pctnumber | nullpercent (58.5 = 58.5 %)Share of blocks mined by the three largest pools.
[].top1_share_pctnumber | nullpercent (58.5 = 58.5 %)Share of blocks mined by the largest pool.
[].pool_countinteger | nullcountNumber of pools that mined at least one block.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/mining/history?dataset=concentration&timePeriod=1w&limit=3"
{
  "status": "ok",
  "timestamp": 1790790295420,
  "data_type": "btc_mining_history",
  "data": [
    {
      "time": "2026-09-30T17:43:15.367Z",
      "total_block_count": 1028,
      "top3_share_pct": 62.45136186770428,
      "top1_share_pct": 25.58365758754864,
      "pool_count": 16
    },
    {
      "time": "2026-09-30T17:33:15.172Z",
      "total_block_count": 1028,
      "top3_share_pct": 62.45136186770428,
      "top1_share_pct": 25.58365758754864,
      "pool_count": 16
    },
    {
      "time": "2026-09-30T17:23:14.974Z",
      "total_block_count": 1027,
      "top3_share_pct": 62.414800389483936,
      "top1_share_pct": 25.60856864654333,
      "pool_count": 16
    }
  ]
}

GET /v1/btc/network

Bitcoin network state. Height, difficulty, 24 h block time and the next difficulty adjustment.

响应的 14 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
tip_heightinteger | nullblock heightHeight of the latest block.
difficultynumber | nulldifficulty unitsNetwork mining difficulty.
block_timeobjectsecondsAverage block time over 24 h (avg_24h_s), its deviation from the 600 s target, and a signal.
block_time.avg_24h_snumber | nullsecondsAverage block time over 24 hours.
block_time.deviation_snumber | nullsecondsavg_24h_s - 600.
block_time.signalstring24 h block time versus the 600 s target: slow (> +30 s), fast (< -30 s) or on_target.
next_adjustmentobjectNext difficulty adjustment: progress, expected change, date, remaining blocks and time.
next_adjustment.progress_pctnumber | nullpercent (58.5 = 58.5 %)Progress through the current 2016-block difficulty period.
next_adjustment.difficulty_change_pctnumber | nullpercent (58.5 = 58.5 %)Expected difficulty change at the next adjustment.
next_adjustment.estimated_retargetdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Estimated instant of the next adjustment.
next_adjustment.remaining_blocksinteger | nullcountBlocks left before the adjustment.
next_adjustment.remaining_time_msinteger | nullmillisecondsEstimated time left before the adjustment.
next_adjustment.next_retarget_heightinteger | nullblock heightHeight of the next adjustment.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/network"
{
  "status": "ok",
  "timestamp": 1790790296031,
  "data_type": "btc_network",
  "data": {
    "time": "2026-09-30T17:43:22.437Z",
    "tip_height": 969328,
    "difficulty": 132757073449487.5,
    "block_time": {
      "avg_24h_s": 603.9154929577464,
      "deviation_s": 3.915492957746437,
      "signal": "on_target"
    },
    "next_adjustment": {
      "progress_pct": 81.74603174603175,
      "difficulty_change_pct": 0.09550248063647793,
      "estimated_retarget": "2026-10-03T07:02:04.088Z",
      "remaining_blocks": 368,
      "remaining_time_ms": 220723088,
      "next_retarget_height": 969696
    }
  }
}

GET /v1/btc/network/history

Network history. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000300Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 5 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].difficultynumber | nulldifficulty unitsNetwork mining difficulty.
[].tip_heightinteger | nullblock heightHeight of the latest block.
[].progress_pctnumber | nullpercent (58.5 = 58.5 %)Progress through the current 2016-block difficulty period.
[].difficulty_change_pctnumber | nullpercent (58.5 = 58.5 %)Expected difficulty change at the next adjustment.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/btc/network/history?timePeriod=1w&limit=3"
{
  "status": "ok",
  "timestamp": 1790790296616,
  "data_type": "btc_network_history",
  "data": [
    {
      "time": "2026-09-30T17:43:22.437Z",
      "difficulty": 132757073449487.5,
      "tip_height": 969328,
      "progress_pct": 81.74603174603175,
      "difficulty_change_pct": 0.09550248063647793
    },
    {
      "time": "2026-09-30T17:38:22.259Z",
      "difficulty": 132757073449487.5,
      "tip_height": 969327,
      "progress_pct": 81.69642857142857,
      "difficulty_change_pct": 0.06507063148870618
    },
    {
      "time": "2026-09-30T17:33:22.147Z",
      "difficulty": 132757073449487.5,
      "tip_height": 969327,
      "progress_pct": 81.69642857142857,
      "difficulty_change_pct": 0.09566181271543071
    }
  ]
}

#Ethereum

Ethereum fundamentals: gas, supply and burn, staking and yield, DeFi TVL, ETH/BTC ratio and derived signals (deflation, supply squeeze, gas momentum).

GET /v1/eth/defi

Ethereum DeFi. TVL, DEX volume, TVL / market cap and the 30-day trend.

响应的 8 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
tvl_usdnumber | nullUSDTotal value locked in Ethereum DeFi.
dex_volume_24h_usdnumber | nullUSDDEX volume over 24 h.
dex_volume_7d_usdnumber | nullUSDDEX volume over 7 days.
eth_market_cap_usdnumber | nullUSDETH market capitalisation.
defi_health_rationumber | nullfraction (0.585 = 58.5 %)tvl_usd / eth_market_cap_usd.
trend_30d_pctnumber | nullpercent (58.5 = 58.5 %)TVL change over 30 days.
signalstring30-day TVL trend: growing, declining or stable.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/defi"
{
  "status": "ok",
  "timestamp": 1790790303499,
  "data_type": "eth_defi",
  "data": {
    "time": "2026-09-30T17:44:23.604Z",
    "tvl_usd": 53490544615.9211,
    "dex_volume_24h_usd": 2249654934.75,
    "dex_volume_7d_usd": 10117923272.67,
    "eth_market_cap_usd": 327233499795.6087,
    "defi_health_ratio": 0.16346292372061996,
    "trend_30d_pct": -0.5136541328507458,
    "signal": "declining"
  }
}

GET /v1/eth/defi/history

DeFi history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 8 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].tvl_usdnumber | nullUSDTotal value locked in Ethereum DeFi.
[].dex_volume_24h_usdnumber | nullUSDDEX volume over 24 h.
[].dex_volume_7d_usdnumber | nullUSDDEX volume over 7 days.
[].eth_market_cap_usdnumber | nullUSDETH market capitalisation.
[].defi_health_rationumber | nullfraction (0.585 = 58.5 %)tvl_usd / eth_market_cap_usd.
[].trend_30d_pctnumber | nullpercent (58.5 = 58.5 %)TVL change over 30 days.
[].signalstring30-day TVL trend: growing, declining or stable.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/defi/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790304152,
  "data_type": "eth_defi_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "tvl_usd": 53405384381.589645,
      "dex_volume_24h_usd": 1775560176.42,
      "dex_volume_7d_usd": 9901392630.21,
      "eth_market_cap_usd": 326953868021.70447,
      "defi_health_ratio": 0.16334226202836782,
      "trend_30d_pct": -3.0525471661838295,
      "signal": "declining"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "tvl_usd": 53404796365.371086,
      "dex_volume_24h_usd": 877956617.37,
      "dex_volume_7d_usd": 10524068113.06,
      "eth_market_cap_usd": 328366469602.105,
      "defi_health_ratio": 0.16263778829209893,
      "trend_30d_pct": -1.4848964788682302,
      "signal": "declining"
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "tvl_usd": 53608718060.33713,
      "dex_volume_24h_usd": 927564228,
      "dex_volume_7d_usd": 11027047435.079998,
      "eth_market_cap_usd": 328278373338.84045,
      "defi_health_ratio": 0.1633026187960411,
      "trend_30d_pct": -1.2275951141924373,
      "signal": "declining"
    }
  ]
}

GET /v1/eth/deflation

ETH deflation. 24 h burn versus issuance and the annualised net supply change.

响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
burn_24hnumber | nullETHETH burnt over the last 24 h.
net_issuance_24hnumber | nullETHNew ETH issued minus ETH burnt over 24 h. Negative = deflationary.
annualized_rate_pctnumber | nullpercent (58.5 = 58.5 %)Net issuance annualised, as a percent of supply. Negative = the supply shrinks.
zonestringdeflationary (24 h net issuance < 0) or inflationary.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/deflation"
{
  "status": "ok",
  "timestamp": 1790790300946,
  "data_type": "eth_deflation",
  "data": {
    "time": "2026-09-30T17:44:59.321Z",
    "burn_24h": 230.75186128914356,
    "net_issuance_24h": 2750.036794245243,
    "annualized_rate_pct": 0.8221306029171951,
    "zone": "inflationary"
  }
}

GET /v1/eth/deflation/history

Deflation history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 5 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].burn_24hnumber | nullETHETH burnt over the last 24 h.
[].net_issuance_24hnumber | nullETHNew ETH issued minus ETH burnt over 24 h. Negative = deflationary.
[].annualized_rate_pctnumber | nullpercent (58.5 = 58.5 %)Net issuance annualised, as a percent of supply. Negative = the supply shrinks.
[].zonestringdeflationary (24 h net issuance < 0) or inflationary.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/deflation/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790301582,
  "data_type": "eth_deflation_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "burn_24h": 259.98423121962696,
      "net_issuance_24h": 2716.8863708376884,
      "annualized_rate_pct": 0.8122384931750257,
      "zone": "inflationary"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "burn_24h": 151.3052807012573,
      "net_issuance_24h": 2796.0945723950863,
      "annualized_rate_pct": 0.8359371251957296,
      "zone": "inflationary"
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "burn_24h": 17.35258579440415,
      "net_issuance_24h": 2922.49273596704,
      "annualized_rate_pct": 0.8737458856021223,
      "zone": "inflationary"
    }
  ]
}

GET /v1/eth/gas

Ethereum gas. Gas prices (gwei), base fee, block usage and congestion.

响应的 7 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
safe_gas_pricenumber | nullgweiGas price for a low-priority transaction.
propose_gas_pricenumber | nullgweiGas price for a standard transaction.
fast_gas_pricenumber | nullgweiGas price for a fast transaction.
base_feenumber | nullgweiEIP-1559 base fee (burnt).
gas_used_rationumber | nullfraction (0.585 = 58.5 %)Block gas used / gas target over recent blocks.
congestionstringlow (gas_used_ratio < 0.5), normal, or high (> 0.8).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/gas"
{
  "status": "ok",
  "timestamp": 1790790297214,
  "data_type": "eth_gas",
  "data": {
    "time": "2026-09-30T17:39:58.759Z",
    "safe_gas_price": 0.592738703,
    "propose_gas_price": 0.601074552,
    "fast_gas_price": 0.872012573,
    "base_fee": 0.592738703,
    "gas_used_ratio": 0.61796753183537,
    "congestion": "normal"
  }
}

GET /v1/eth/gas-momentum

Gas momentum. 7-day versus 30-day base fee average: rising or falling demand for block space.

响应的 7 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
base_feenumber | nullgweiEIP-1559 base fee (burnt).
gas_used_rationumber | nullfraction (0.585 = 58.5 %)Block gas used / gas target over recent blocks.
gas_ma7number | nullgwei7-day moving average of the base fee.
gas_ma30number | nullgwei30-day moving average of the base fee.
momentum_pctnumber | nullpercent (58.5 = 58.5 %)Relative gap between the short and the long moving average, in percent.
regimestringhigh_demand (gas_used_ratio > 0.8 and momentum > 0), low_demand (< 0.5 and momentum < 0), otherwise normal.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/gas-momentum"
{
  "status": "ok",
  "timestamp": 1790790298457,
  "data_type": "eth_gas_momentum",
  "data": {
    "time": "2026-09-30T17:39:58.759Z",
    "base_fee": 0.592738703,
    "gas_used_ratio": 0.61796753183537,
    "gas_ma7": 0.7359732017468117,
    "gas_ma30": 0.2898341458721775,
    "momentum_pct": 153.9290874552063,
    "regime": "normal"
  }
}

GET /v1/eth/gas-momentum/history

Gas momentum history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 7 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].base_feenumber | nullgweiEIP-1559 base fee (burnt).
[].gas_used_rationumber | nullfraction (0.585 = 58.5 %)Block gas used / gas target over recent blocks.
[].gas_ma7number | nullgwei7-day moving average of the base fee.
[].gas_ma30number | nullgwei30-day moving average of the base fee.
[].momentum_pctnumber | nullpercent (58.5 = 58.5 %)Relative gap between the short and the long moving average, in percent.
[].regimestringhigh_demand (gas_used_ratio > 0.8 and momentum > 0), low_demand (< 0.5 and momentum < 0), otherwise normal.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/gas-momentum/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790299107,
  "data_type": "eth_gas_momentum_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "base_fee": 0.138473642,
      "gas_used_ratio": 0.5602710333333334,
      "gas_ma7": 0.7359732017468116,
      "gas_ma30": 0.28983414587217754,
      "momentum_pct": 153.9290874552062,
      "regime": "normal"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "base_fee": 0.854699776,
      "gas_used_ratio": 0.5104909400000001,
      "gas_ma7": 0.6062514615776523,
      "gas_ma30": 0.25637983670076747,
      "momentum_pct": 136.46612361534338,
      "regime": "normal"
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "base_fee": 0.471551096,
      "gas_used_ratio": 0.429017,
      "gas_ma7": 0.4868385049680292,
      "gas_ma30": 0.21765141627727208,
      "momentum_pct": 123.67807813748952,
      "regime": "normal"
    }
  ]
}

GET /v1/eth/gas/history

Gas history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 7 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].safe_gas_pricenumber | nullgweiGas price for a low-priority transaction.
[].propose_gas_pricenumber | nullgweiGas price for a standard transaction.
[].fast_gas_pricenumber | nullgweiGas price for a fast transaction.
[].base_feenumber | nullgweiEIP-1559 base fee (burnt).
[].gas_used_rationumber | nullfraction (0.585 = 58.5 %)Block gas used / gas target over recent blocks.
[].congestionstringlow (gas_used_ratio < 0.5), normal, or high (> 0.8).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/gas/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790297856,
  "data_type": "eth_gas_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "safe_gas_price": 0.138473643,
      "propose_gas_price": 0.138473643,
      "fast_gas_price": 0.139473642,
      "base_fee": 0.138473642,
      "gas_used_ratio": 0.5602710333333334,
      "congestion": "normal"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "safe_gas_price": 0.854699776,
      "propose_gas_price": 0.855699776,
      "fast_gas_price": 1.366004339,
      "base_fee": 0.854699776,
      "gas_used_ratio": 0.5104909400000001,
      "congestion": "normal"
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "safe_gas_price": 0.471551096,
      "propose_gas_price": 0.481651096,
      "fast_gas_price": 0.529816205,
      "base_fee": 0.471551096,
      "gas_used_ratio": 0.429017,
      "congestion": "low"
    }
  ]
}

GET /v1/eth/ratio

ETH/BTC ratio. ETH/BTC price ratio, its 7-day momentum and which asset outperforms.

响应的 6 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
eth_price_usdnumber | nullUSDETH price.
btc_price_usdnumber | nullUSDBTC price used for the conversion.
eth_btc_rationumber | nullBTC per ETHETH price / BTC price.
momentum_7d_pctnumber | nullpercent (58.5 = 58.5 %)Change of the ETH/BTC ratio over 7 days.
signalstring7-day momentum of ETH/BTC: eth_outperform (> 0), btc_outperform (< 0) or neutral.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/ratio"
{
  "status": "ok",
  "timestamp": 1790790304747,
  "data_type": "eth_ratio",
  "data": {
    "time": "2026-09-30T17:42:12.911Z",
    "eth_price_usd": 2680.2,
    "btc_price_usd": 84022.25,
    "eth_btc_ratio": 0.03189869350082865,
    "momentum_7d_pct": 0.7540813503536662,
    "signal": "eth_outperform"
  }
}

GET /v1/eth/ratio/history

ETH/BTC ratio history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 6 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].eth_price_usdnumber | nullUSDETH price.
[].btc_price_usdnumber | nullUSDBTC price used for the conversion.
[].eth_btc_rationumber | nullBTC per ETHETH price / BTC price.
[].momentum_7d_pctnumber | nullpercent (58.5 = 58.5 %)Change of the ETH/BTC ratio over 7 days.
[].signalstring7-day momentum of ETH/BTC: eth_outperform (> 0), btc_outperform (< 0) or neutral.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/ratio/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790305400,
  "data_type": "eth_ratio_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "eth_price_usd": 2677.97,
      "btc_price_usd": 83665.62,
      "eth_btc_ratio": 0.03200800998068263,
      "momentum_7d_pct": 0.1693721109489341,
      "signal": "eth_outperform"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "eth_price_usd": 2689.6,
      "btc_price_usd": 83534,
      "eth_btc_ratio": 0.03219766801541887,
      "momentum_7d_pct": 0.4405241235708182,
      "signal": "eth_outperform"
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "eth_price_usd": 2688.94,
      "btc_price_usd": 84458.6,
      "eth_btc_ratio": 0.03183737357711352,
      "momentum_7d_pct": -2.319482973188987,
      "signal": "btc_outperform"
    }
  ]
}

GET /v1/eth/squeeze

ETH supply squeeze index. 0-100 index combining the staked share and net issuance.

响应的 5 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
staking_rationumber | nullfraction (0.585 = 58.5 %)Share of the ETH supply staked.
annualized_rate_pctnumber | nullpercent (58.5 = 58.5 %)Net issuance annualised, as a percent of supply. Negative = the supply shrinks.
squeeze_indexnumber | nullscore from 0 to 100Supply squeeze index: combines the staked share and net issuance. Higher = less liquid ETH available.
levelstringlow (< 33), moderate (>= 33), high (>= 66).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/squeeze"
{
  "status": "ok",
  "timestamp": 1790790305995,
  "data_type": "eth_squeeze",
  "data": {
    "time": "2026-09-30T17:44:59.321Z",
    "staking_ratio": 0.3603355802690349,
    "annualized_rate_pct": 0.8221306029171951,
    "squeeze_index": 18.427844314910345,
    "level": "low"
  }
}

GET /v1/eth/squeeze/history

Supply squeeze history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 5 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].staking_rationumber | nullfraction (0.585 = 58.5 %)Share of the ETH supply staked.
[].annualized_rate_pctnumber | nullpercent (58.5 = 58.5 %)Net issuance annualised, as a percent of supply. Negative = the supply shrinks.
[].squeeze_indexnumber | nullscore from 0 to 100Supply squeeze index: combines the staked share and net issuance. Higher = less liquid ETH available.
[].levelstringlow (< 33), moderate (>= 33), high (>= 66).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/squeeze/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790306639,
  "data_type": "eth_squeeze_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "staking_ratio": 0.3600193832972402,
      "annualized_rate_pct": 0.8122384931750257,
      "squeeze_index": 18.40708841144952,
      "level": "low"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "staking_ratio": null,
      "annualized_rate_pct": 0.8359371251957296,
      "squeeze_index": null,
      "level": null
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "staking_ratio": null,
      "annualized_rate_pct": 0.8737458856021223,
      "squeeze_index": null,
      "level": null
    }
  ]
}

GET /v1/eth/staking

ETH staking. Share of ETH staked, total staked, staking APR and its spread over the Fed funds rate.

响应的 8 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
staking_rationumber | nullfraction (0.585 = 58.5 %)Share of the ETH supply staked.
total_stakednumber | nullETHETH staked (beacon chain).
total_supplynumber | nullcoinsTotal coins issued (circulating + locked), net of burns.
apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
fed_funds_rate_pctnumber | string | nullpercent (58.5 = 58.5 %)US Fed funds rate, to compare with the staking yield. null if unavailable.
yield_spread_pctnumber | string | nullpercentage pointsStaking APR - Fed funds rate. null if unavailable.
yield_signalnumber | string | nullattractive (staking APR above the Fed funds rate), neutral or unattractive. null if unavailable.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/staking"
{
  "status": "ok",
  "timestamp": 1790790302184,
  "data_type": "eth_staking",
  "data": {
    "time": "2026-09-30T17:35:00.287Z",
    "staking_ratio": 0.3603355802690349,
    "total_staked": 43994430.65156249,
    "total_supply": 122092940.74905184,
    "apr_pct": 2.245,
    "fed_funds_rate_pct": null,
    "yield_spread_pct": null,
    "yield_signal": null
  }
}

GET /v1/eth/staking/history

Staking history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 8 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].staking_rationumber | nullfraction (0.585 = 58.5 %)Share of the ETH supply staked.
[].total_stakednumber | nullETHETH staked (beacon chain).
[].total_supplynumber | nullcoinsTotal coins issued (circulating + locked), net of burns.
[].apr_pctnumber | nullpercent (58.5 = 58.5 %)Annualised rate in percent.
[].fed_funds_rate_pctnumber | string | nullpercent (58.5 = 58.5 %)US Fed funds rate, to compare with the staking yield. null if unavailable.
[].yield_spread_pctnumber | string | nullpercentage pointsStaking APR - Fed funds rate. null if unavailable.
[].yield_signalnumber | string | nullattractive (staking APR above the Fed funds rate), neutral or unattractive. null if unavailable.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/staking/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790302873,
  "data_type": "eth_staking_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "staking_ratio": 0.3600193832972402,
      "total_staked": 43954835.166869424,
      "total_supply": 122090190.7122576,
      "apr_pct": 2.312,
      "fed_funds_rate_pct": null,
      "yield_spread_pct": null,
      "yield_signal": null
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "staking_ratio": null,
      "total_staked": null,
      "total_supply": 122087473.82588676,
      "apr_pct": 2.335,
      "fed_funds_rate_pct": null,
      "yield_spread_pct": null,
      "yield_signal": null
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "staking_ratio": null,
      "total_staked": null,
      "total_supply": 122084677.73131436,
      "apr_pct": 2.187,
      "fed_funds_rate_pct": null,
      "yield_spread_pct": null,
      "yield_signal": null
    }
  ]
}

GET /v1/eth/supply

ETH supply and burn. Supply, staking, burnt fees, withdrawals, 24 h burn and net issuance.

响应的 9 个字段
data 字段类型单位说明
timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
eth_supplynumber | nullETHETH supply reported by the source.
eth2_stakingnumber | nullETHETH deposited to the beacon chain, as reported by the source.
burnt_feesnumber | nullETHETH burnt since EIP-1559.
withdrawn_totalnumber | nullETHETH withdrawn from staking.
total_supplynumber | nullcoinsTotal coins issued (circulating + locked), net of burns.
burn_24hnumber | nullETHETH burnt over the last 24 h.
net_issuance_24hnumber | nullETHNew ETH issued minus ETH burnt over 24 h. Negative = deflationary.
signalstringdeflationary (24 h net issuance < 0), inflationary (> 0) or neutral.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/supply"
{
  "status": "ok",
  "timestamp": 1790790299703,
  "data_type": "eth_supply",
  "data": {
    "time": "2026-09-30T17:39:58.759Z",
    "eth_supply": 122373866.2178,
    "eth2_staking": 4353987.930188726,
    "burnt_fees": 4634913.398936898,
    "withdrawn_total": 7618584.348954597,
    "total_supply": 122092940.74905184,
    "burn_24h": 230.75186128914356,
    "net_issuance_24h": 2750.036794245243,
    "signal": "inflationary"
  }
}

GET /v1/eth/supply/history

ETH supply history. One row per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 7d, 30d, 90d, 1y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 9 个字段
data 字段类型单位说明
[].timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].eth_supplynumber | nullETHETH supply reported by the source.
[].eth2_stakingnumber | nullETHETH deposited to the beacon chain, as reported by the source.
[].burnt_feesnumber | nullETHETH burnt since EIP-1559.
[].withdrawn_totalnumber | nullETHETH withdrawn from staking.
[].total_supplynumber | nullcoinsTotal coins issued (circulating + locked), net of burns.
[].burn_24hnumber | nullETHETH burnt over the last 24 h.
[].net_issuance_24hnumber | nullETHNew ETH issued minus ETH burnt over 24 h. Negative = deflationary.
[].signalstringdeflationary (24 h net issuance < 0), inflationary (> 0) or neutral.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/eth/supply/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790300333,
  "data_type": "eth_supply_history",
  "data": [
    {
      "time": "2026-09-29T00:00:00.000Z",
      "eth_supply": 122373866.2178,
      "eth2_staking": 4351007.141533189,
      "burnt_fees": 4634682.647075609,
      "withdrawn_total": 7618584.348954597,
      "total_supply": 122090190.7122576,
      "burn_24h": 259.98423121962696,
      "net_issuance_24h": 2716.8863708376884,
      "signal": "inflationary"
    },
    {
      "time": "2026-09-28T00:00:00.000Z",
      "eth_supply": 122373866.2178,
      "eth2_staking": 4348030.270931135,
      "burnt_fees": 4634422.66284439,
      "withdrawn_total": 7618584.348954597,
      "total_supply": 122087473.82588676,
      "burn_24h": 151.3052807012573,
      "net_issuance_24h": 2796.0945723950863,
      "signal": "inflationary"
    },
    {
      "time": "2026-09-27T00:00:00.000Z",
      "eth_supply": 122373866.2178,
      "eth2_staking": 4345082.8710780395,
      "burnt_fees": 4634271.357563688,
      "withdrawn_total": 7618584.348954597,
      "total_supply": 122084677.73131436,
      "burn_24h": 17.35258579440415,
      "net_issuance_24h": 2922.49273596704,
      "signal": "inflationary"
    }
  ]
}

#On-chain Bitcoin

Daily on-chain valuation and activity: MVRV, NVT, active addresses, miner stress.

GET /v1/onchain/active-addresses

Bitcoin active addresses. Daily active addresses, 7- and 30-day averages and momentum.

响应的 7 个字段
data 字段类型单位说明
timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
active_addressesnumber | nullcountAddresses active on the day.
avg_7dnumber | nullcount7-day average.
avg_30dnumber | nullcount30-day average.
momentum_pctnumber | nullpercent (58.5 = 58.5 %)Relative gap between the short and the long moving average, in percent.
signalstring7-day vs 30-day average: accelerating (> +5 %), decelerating (< -5 %) or stable.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/active-addresses"
{
  "status": "ok",
  "timestamp": 1790790309629,
  "data_type": "onchain_active_addresses",
  "data": {
    "time": "2026-09-28",
    "date": "2026-09-28",
    "active_addresses": 491198,
    "avg_7d": 477345.8571428571,
    "avg_30d": 477719.6666666667,
    "momentum_pct": -0.07824871988583121,
    "signal": "stable"
  }
}

GET /v1/onchain/active-addresses/history

Active addresses history. One point per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 30d, 90d, 1y, 2y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 7 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
[].active_addressesnumber | nullcountAddresses active on the day.
[].avg_7dnumber | nullcount7-day average.
[].avg_30dnumber | nullcount30-day average.
[].momentum_pctnumber | nullpercent (58.5 = 58.5 %)Relative gap between the short and the long moving average, in percent.
[].signalstring7-day vs 30-day average: accelerating (> +5 %), decelerating (< -5 %) or stable.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/active-addresses/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790310226,
  "data_type": "onchain_active_addresses_history",
  "data": [
    {
      "time": "2026-09-28",
      "date": "2026-09-28",
      "active_addresses": 491198,
      "avg_7d": 477345.8571428571,
      "avg_30d": 477719.6666666667,
      "momentum_pct": -0.07824871988583121,
      "signal": "stable"
    },
    {
      "time": "2026-09-27",
      "date": "2026-09-27",
      "active_addresses": 416118,
      "avg_7d": 482648,
      "avg_30d": 476254.93333333335,
      "momentum_pct": 1.3423622978393612,
      "signal": "stable"
    },
    {
      "time": "2026-09-26",
      "date": "2026-09-26",
      "active_addresses": 448618,
      "avg_7d": 482500.71428571426,
      "avg_30d": 479660.63333333336,
      "momentum_pct": 0.5921021561940911,
      "signal": "stable"
    }
  ]
}

GET /v1/onchain/miner-stress

Bitcoin miner stress. Miner revenue per unit of difficulty against its 30-day average: healthy, stress or capitulation. Daily.

响应的 5 个字段
data 字段类型单位说明
timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
miner_stressnumber | nulldimensionless scoreMiner revenue / difficulty (revenue per unit of work). Read it against stress_ma30.
stress_ma30number | nulldimensionless score30-day moving average of miner_stress.
zonestringhealthy (at or above its 30-day average), stress (below it), capitulation (below 70 % of it — historically near BTC bottoms).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/miner-stress"
{
  "status": "ok",
  "timestamp": 1790790310822,
  "data_type": "onchain_miner_stress",
  "data": {
    "time": "2026-09-28",
    "date": "2026-09-28",
    "miner_stress": 3.6581775424862035e-7,
    "stress_ma30": 3.172945811918241e-7,
    "zone": "healthy"
  }
}

GET /v1/onchain/miner-stress/history

Miner stress history. One point per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 30d, 90d, 1y, 2y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 5 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
[].miner_stressnumber | nulldimensionless scoreMiner revenue / difficulty (revenue per unit of work). Read it against stress_ma30.
[].stress_ma30number | nulldimensionless score30-day moving average of miner_stress.
[].zonestringhealthy (at or above its 30-day average), stress (below it), capitulation (below 70 % of it — historically near BTC bottoms).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/miner-stress/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790311441,
  "data_type": "onchain_miner_stress_history",
  "data": [
    {
      "time": "2026-09-28",
      "date": "2026-09-28",
      "miner_stress": 3.6581775424862035e-7,
      "stress_ma30": 3.172945811918241e-7,
      "zone": "healthy"
    },
    {
      "time": "2026-09-27",
      "date": "2026-09-27",
      "miner_stress": 3.0790386080647216e-7,
      "stress_ma30": 3.153325023066599e-7,
      "zone": "stress"
    },
    {
      "time": "2026-09-26",
      "date": "2026-09-26",
      "miner_stress": 3.338864865252702e-7,
      "stress_ma30": 3.151001733571237e-7,
      "zone": "healthy"
    }
  ]
}

GET /v1/onchain/mvrv

Bitcoin MVRV. Market value / realised value with its zone and 30-day momentum. Daily.

响应的 5 个字段
data 字段类型单位说明
timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
mvrvnumber | nulldimensionless ratioMarket value / realised value.
zonestringundervalued (<= 1), fair (> 1), elevated (> 2.5), overvalued (> 3.5).
momentum_30d_pctnumber | nullpercent (58.5 = 58.5 %)Change over 30 days.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/mvrv"
{
  "status": "ok",
  "timestamp": 1790790307229,
  "data_type": "onchain_mvrv",
  "data": {
    "time": "2026-09-23",
    "date": "2026-09-23",
    "mvrv": 1.5899,
    "zone": "fair",
    "momentum_30d_pct": 5.802888134690901
  }
}

GET /v1/onchain/mvrv/history

MVRV history. One point per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 30d, 90d, 1y, 2y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 5 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
[].mvrvnumber | nulldimensionless ratioMarket value / realised value.
[].zonestringundervalued (<= 1), fair (> 1), elevated (> 2.5), overvalued (> 3.5).
[].momentum_30d_pctnumber | nullpercent (58.5 = 58.5 %)Change over 30 days.
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/mvrv/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790307811,
  "data_type": "onchain_mvrv_history",
  "data": [
    {
      "time": "2026-09-23",
      "date": "2026-09-23",
      "mvrv": 1.5899,
      "zone": "fair",
      "momentum_30d_pct": 5.802888134690901
    },
    {
      "time": "2026-09-22",
      "date": "2026-09-22",
      "mvrv": 1.6254,
      "zone": "fair",
      "momentum_30d_pct": 9.883720930232547
    },
    {
      "time": "2026-09-21",
      "date": "2026-09-21",
      "mvrv": 1.6366,
      "zone": "fair",
      "momentum_30d_pct": 11.477419794291947
    }
  ]
}

GET /v1/onchain/nvt

Bitcoin NVT. Network value to transactions ratio and its 90-day NVT Signal, derived on demand. Daily.

响应的 5 个字段
data 字段类型单位说明
timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
nvtnumber | nulldimensionless ratioMarket cap / daily on-chain transaction volume (NVT ratio).
nvt_signalnumber | nulldimensionless ratioNVT smoothed over 90 days (NVT Signal), less noisy.
zonestringZone of the NVT Signal: undervalued (<= 45), fair (> 45), overvalued (> 100), bubble (> 150).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/nvt"
{
  "status": "ok",
  "timestamp": 1790790308422,
  "data_type": "onchain_nvt",
  "data": {
    "time": "2026-09-27",
    "date": "2026-09-27",
    "nvt": 580.1348324564798,
    "nvt_signal": 303.47902556588224,
    "zone": "bubble"
  }
}

GET /v1/onchain/nvt/history

NVT history. One point per day. Most recent first. Page backwards with until_ms.

参数类型默认值说明
timePeriodstring | any | null—Named window: 30d, 90d, 1y, 2y or all.
since_msinteger | any | null—Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range.
until_msinteger | any | null—Upper time bound, INCLUSIVE, in epoch milliseconds. To page backwards, pass the oldest time you received minus 1 ms (see the pagination guide).
limitinteger · 1–5000365Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it).
响应的 5 个字段
data 字段类型单位说明
[].timedateISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
[].datedatecalendar date (YYYY-MM-DD)Calendar day the value refers to.
[].nvtnumber | nulldimensionless ratioMarket cap / daily on-chain transaction volume (NVT ratio).
[].nvt_signalnumber | nulldimensionless ratioNVT smoothed over 90 days (NVT Signal), less noisy.
[].zonestringZone of the NVT Signal: undervalued (<= 45), fair (> 45), overvalued (> 100), bubble (> 150).
示例:请求与真实响应
curl -H "X-API-KEY: $BYTNODE_API_KEY" "https://api.bytnode.com/v1/onchain/nvt/history?timePeriod=30d&limit=3"
{
  "status": "ok",
  "timestamp": 1790790309043,
  "data_type": "onchain_nvt_history",
  "data": [
    {
      "time": "2026-09-27",
      "date": "2026-09-27",
      "nvt": 580.1348324564798,
      "nvt_signal": 303.47902556588247,
      "zone": "bubble"
    },
    {
      "time": "2026-09-26",
      "date": "2026-09-26",
      "nvt": 466.41016952520494,
      "nvt_signal": 298.6212428564303,
      "zone": "bubble"
    },
    {
      "time": "2026-09-25",
      "date": "2026-09-25",
      "nvt": 128.7577049311245,
      "nvt_signal": 299.67919310847753,
      "zone": "bubble"
    }
  ]
}

#Technical indicators

20 technical indicators computed server-side on the same candles as /v1/raw/klines, several per request (RSI, MACD, Bollinger, ATR, Ichimoku, VWMA...).

POST /v1/indicators

Compute technical indicators. POST a JSON body: symbol, timeframe, results (values per indicator) and indicators, a list of {id, type, <parameters flat>} — e.g. {"id": "rsi_fast", "type": "rsi", "period": 14}. A nested "parameters": {...} object is also accepted. Computed on the same candles as /v1/raw/klines; results + warm-up is capped at 1000 candles. Errors on the body are 400 invalid_indicator.

响应的 31 个字段
data 字段类型单位说明
symbolstringTrading pair, e.g. BTCUSDT.
timeframestringBucket size of the row.
resultsinteger | nullcountNumber of values per indicator.
indicatorsobjectOne entry per requested indicator id: its parameters, values (oldest to newest) and as_of (time of the last value).
indicators.rsi_fastobject
indicators.rsi_fast.timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
indicators.rsi_fast.typestringIndicator type.
indicators.rsi_fast.periodinteger | nullcandlesLook-back period of the indicator, in candles.
indicators.rsi_fast.valuesnumber | null[]quote currency (USDT for BTCUSDT)Indicator values, oldest to newest; an object of arrays for multi-output indicators (MACD, Bollinger...).
indicators.rsi_fast.as_ofdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Time of the candle of the last value.
indicators.macdobject
indicators.macd.timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
indicators.macd.typestringIndicator type.
indicators.macd.fastinteger | nullcandlesFast period, in candles.
indicators.macd.slowinteger | nullcandlesSlow period, in candles.
indicators.macd.signalinteger | nullcandlesMACD signal period, in candles.
indicators.macd.valuesobjectquote currency (USDT for BTCUSDT)Indicator values, oldest to newest; an object of arrays for multi-output indicators (MACD, Bollinger...).
indicators.macd.values.macdnumber | null[]
indicators.macd.values.signalnumber | null[]candlesMACD signal period, in candles.
indicators.macd.values.histogramnumber | null[]
indicators.macd.as_ofdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Time of the candle of the last value.
indicators.bb_midobject
indicators.bb_mid.timedate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the row: a copy of bucket, timestamp, date, period_end, settlement_at, day or as_of, present on every timestamped object so a generic client needs one key.
indicators.bb_mid.typestringIndicator type.
indicators.bb_mid.periodinteger | nullcandlesLook-back period of the indicator, in candles.
indicators.bb_mid.stdnumber | nullstandard deviationsBand width, in standard deviations.
indicators.bb_mid.valuesobjectquote currency (USDT for BTCUSDT)Indicator values, oldest to newest; an object of arrays for multi-output indicators (MACD, Bollinger...).
indicators.bb_mid.values.uppernumber | null[]
indicators.bb_mid.values.middlenumber | null[]
indicators.bb_mid.values.lowernumber | null[]
indicators.bb_mid.as_ofdate-timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Time of the candle of the last value.
示例:请求与真实响应
{
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "results": 3,
  "indicators": [
    {
      "id": "rsi_fast",
      "type": "rsi",
      "period": 14
    },
    {
      "id": "macd",
      "type": "macd",
      "fast": 12,
      "slow": 26,
      "signal": 9
    },
    {
      "id": "bb_mid",
      "type": "bb",
      "period": 20
    }
  ]
}
curl -X POST -H "X-API-KEY: $BYTNODE_API_KEY" -H "Content-Type: application/json" \
  -d '{"symbol": "BTCUSDT", "timeframe": "1h", "results": 3, "indicators": [{"id": "rsi_fast", "type": "rsi", "period": 14}, {"id": "macd", "type": "macd", "fast": 12, "slow": 26, "signal": 9}, {"id": "bb_mid", "type": "bb", "period": 20}]}' \
  https://api.bytnode.com/v1/indicators
{
  "status": "ok",
  "timestamp": 1790790312091,
  "data_type": "indicators",
  "data": {
    "symbol": "BTCUSDT",
    "timeframe": "1h",
    "results": 3,
    "indicators": {
      "rsi_fast": {
        "time": "2026-09-30T16:00:00.000Z",
        "type": "rsi",
        "period": 14,
        "values": [
          50.8131287181248,
          54.16981376214668,
          56.23763630767805
        ],
        "as_of": "2026-09-30T16:00:00.000Z"
      },
      "macd": {
        "time": "2026-09-30T16:00:00.000Z",
        "type": "macd",
        "fast": 12,
        "slow": 26,
        "signal": 9,
        "values": {
          "macd": [
            174.52954986991244,
            179.8107200126251,
            199.05105878527684
          ],
          "signal": [
            55.094238485326706,
            80.03753479078638,
            103.84023958968449
          ],
          "histogram": [
            119.43531138458572,
            99.77318522183872,
            95.21081919559236
          ]
        },
        "as_of": "2026-09-30T16:00:00.000Z"
      },
      "bb_mid": {
        "time": "2026-09-30T16:00:00.000Z",
        "type": "bb",
        "period": 20,
        "std": 2,
        "values": {
          "upper": [
            84660.956588588,
            84710.15098467488,
            84787.943777102
          ],
          "middle": [
            83638.72449999998,
            83665.74549999999,
            83702.39799999999
          ],
          "lower": [
            82616.49241141196,
            82621.3400153251,
            82616.85222289797
          ]
        },
        "as_of": "2026-09-30T16:00:00.000Z"
      }
    }
  }
}