交互式 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_checked | integer | null | count | Public feeds checked. |
feeds_stale | integer | null | count | Feeds older than their threshold. |
feeds_in_error | integer | null | count | Feeds that could not be checked. |
max_age_seconds | number | null | seconds | Age of the oldest feed. |
feeds | object[] | One row per public feed. | |
feeds[].feed | string | Feed name. | |
feeds[].family | string | Data family the feed belongs to. | |
feeds[].age_seconds | number | null | seconds | Age of the latest row of the feed. |
feeds[].expected_interval_seconds | integer | null | seconds | Maximum legitimate age of the feed. |
feeds[].threshold_seconds | integer | null | seconds | Age above which the feed is stale (1.5 × expected_interval_seconds). |
feeds[].is_stale | boolean | Whether the feed is stale. | |
feeds[].stale_venues | integer | null | count | Venues 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].base_asset | string | Base asset of the pair. | |
[].name | string | Name. |
示例:请求与真实响应
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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
symbol | string | Trading pair, e.g. BTCUSDT. | |
asset_class | string | crypto or stablecoin (spot only, no futures metrics). | |
feeds_active_last_24h | object | Per raw feed: whether it received data in the last 24 h. | |
feeds_active_last_24h.futures_klines | boolean | ||
feeds_active_last_24h.spot_ticks | boolean | ||
feeds_active_last_24h.futures_ticks | boolean | ||
feeds_active_last_24h.oi_snapshots | boolean | ||
feeds_active_last_24h.funding_rates | boolean | ||
feeds_active_last_24h.liquidations | boolean | ||
feeds_active_last_24h.trades_raw | boolean | ||
feeds_active_last_24h.klines_multi | boolean | ||
feeds_active_last_24h.spot_klines | boolean | ||
feeds_active_last_24h.spot_klines_multi | boolean | ||
computed_metrics_available | string[] | Derived metrics available for the symbol. | |
computed_metrics_blocked | object | Derived 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. |
basis | integer | true | — | Futures-spot basis (N latest minutes). Same content as /v1/basis. Value: depth N, or true for 1. |
btc_fees | integer | true | — | Recommended Bitcoin fees. Same content as /v1/btc/fees. Value: depth N, or true for 1. |
btc_mempool | integer | true | — | Bitcoin mempool. Same content as /v1/btc/mempool. Value: depth N, or true for 1. |
btc_mining | integer | true | — | Mining pool concentration. Same content as /v1/btc/mining. Value: depth N, or true for 1. |
btc_network | integer | true | — | Bitcoin network state. Same content as /v1/btc/network. Value: depth N, or true for 1. |
buysell_ratio | integer | true | — | Buy/sell volume ratio. Same content as /v1/buysell/ratio. Value: depth N, or true for 1. |
eth_defi | integer | true | — | Ethereum DeFi. Same content as /v1/eth/defi. Value: depth N, or true for 1. |
eth_deflation | integer | true | — | ETH deflation. Same content as /v1/eth/deflation. Value: depth N, or true for 1. |
eth_gas | integer | true | — | Ethereum gas. Same content as /v1/eth/gas. Value: depth N, or true for 1. |
eth_gas_momentum | integer | true | — | Gas momentum. Same content as /v1/eth/gas-momentum. Value: depth N, or true for 1. |
eth_ratio | integer | true | — | ETH/BTC ratio. Same content as /v1/eth/ratio. Value: depth N, or true for 1. |
eth_squeeze | integer | true | — | ETH supply squeeze index. Same content as /v1/eth/squeeze. Value: depth N, or true for 1. |
eth_staking | integer | true | — | ETH staking. Same content as /v1/eth/staking. Value: depth N, or true for 1. |
eth_supply | integer | true | — | ETH supply and burn. Same content as /v1/eth/supply. Value: depth N, or true for 1. |
fear_greed | integer | true | — | Crypto Fear & Greed Index. Same content as /v1/fear-greed. Value: depth N, or true for 1. |
funding_cumulative | integer | true | — | Funding summed over 24 h. Same content as /v1/funding/cumulative. Value: depth N, or true for 1. |
funding_next | integer | true | — | Next funding forecast. Same content as /v1/funding/next. Value: depth N, or true for 1. |
funding_rate_8h | integer | true | — | Latest settled funding window. Same content as /v1/funding/rate. Value: depth N, or true for 1. |
futures_ticks | integer | 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_market | integer | true | — | Total crypto market cap and dominance. Same content as /v1/global. Value: depth N, or true for 1. |
heatmap | integer | true | — | Liquidation heatmap clusters. Same content as /v1/heatmap/clusters. Value: depth N, or true for 1. |
klines_15m | integer | true | — | 15-minute OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1. |
klines_1d | integer | true | — | Daily OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1. |
klines_1h | integer | true | — | 1-hour OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1. |
klines_1m | integer | true | — | 1-minute OHLCV candles (N candles). Same content as /v1/raw/klines. Value: depth N, or true for 1. |
klines_1w | integer | true | — | Weekly OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1. |
klines_30m | integer | true | — | 30-minute OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1. |
klines_4h | integer | true | — | 4-hour OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1. |
klines_5m | integer | true | — | 5-minute OHLCV candles (N candles). Same content as /v1/raw/klines/{interval}. Value: depth N, or true for 1. |
liq_cumulative | integer | true | — | Liquidations long/short USD (N latest minutes). Same content as /v1/liquidations/cumulative. Value: depth N, or true for 1. |
liq_ratio | integer | true | — | Big vs small liquidations. Same content as /v1/liquidations/ratio. Value: depth N, or true for 1. |
liquidations | integer | true | — | Individual liquidations over the last N minutes. Same content as /v1/raw/liquidations. Value: depth N, or true for 1. |
macro | integer | true | — | Latest value of every FRED series. Same content as /v1/macro. Value: depth N, or true for 1. |
macro_correlations | integer | true | — | BTC correlation with DXY, S&P 500, gold, VIX. Same content as /v1/macro/correlations. Value: depth N, or true for 1. |
macro_momentum | integer | true | — | Macro momentum score. Same content as /v1/macro/momentum. Value: depth N, or true for 1. |
macro_risk | integer | true | — | Risk-on / risk-off score. Same content as /v1/macro/risk. Value: depth N, or true for 1. |
net_liquidity | integer | true | — | US net liquidity. Same content as /v1/macro/net-liquidity. Value: depth N, or true for 1. |
oi_delta | integer | true | — | Open interest change (N latest minutes). Same content as /v1/oi/delta. Value: depth N, or true for 1. |
oi_history | integer | true | — | Total open interest per minute (N minutes). Same content as /v1/raw/oi. Value: depth N, or true for 1. |
oi_snapshots | integer | true | — | Latest total open interest. Same content as /v1/raw/oi. Value: depth N, or true for 1. |
onchain_active_addresses | integer | true | — | Bitcoin active addresses. Same content as /v1/onchain/active-addresses. Value: depth N, or true for 1. |
onchain_miner_stress | integer | true | — | Bitcoin miner stress. Same content as /v1/onchain/miner-stress. Value: depth N, or true for 1. |
onchain_mvrv | integer | true | — | Bitcoin MVRV. Same content as /v1/onchain/mvrv. Value: depth N, or true for 1. |
onchain_nvt | integer | true | — | Bitcoin NVT. Same content as /v1/onchain/nvt. Value: depth N, or true for 1. |
options | integer | true | — | Options market summary for the symbol's asset. Same content as /v1/options/summary. Value: depth N, or true for 1. |
orderbook | integer | true | — | Latest aggregated order book. Same content as /v1/raw/orderbook. Value: depth N, or true for 1. |
price_change | integer | true | — | Price change over 1m to 1w, in percent. Same content as /v1/price-change. Value: depth N, or true for 1. |
spot_ticks | integer | 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_combined | integer | true | — | Taker buy/sell volume per minute (N minutes). Same content as /v1/raw/taker-combined. Value: depth N, or true for 1. |
tokenomics | integer | true | — | Supply, market cap, FDV. Same content as /v1/tokenomics. Value: depth N, or true for 1. |
trade_size | integer | true | — | Average trade size. Same content as /v1/trades/avg-size. Value: depth N, or true for 1. |
trades_raw | integer | true | — | Trades aggregated per second (N seconds). Same content as /v1/raw/trades. Value: depth N, or true for 1. |
vwap | integer | 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_8h | object | ||
funding_rate_8h.time | date-time | ISO 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.bucket | date-time | ISO 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.rate | number | null | rate 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_pct | number | null | percent (58.5 = 58.5 %) | Annualised rate in percent. |
funding_rate_8h.exchange_count | integer | null | count | Number of venues in the weighted average. |
basis | object[] | ||
basis[].time | date-time | ISO 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[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
basis[].basis_value | number | null | quote currency (USDT for BTCUSDT) | Futures price - spot price. |
basis[].basis_pct | number | null | percent (58.5 = 58.5 %) | (futures - spot) / spot, in percent. Positive = contango. |
basis[].futures_price | number | null | quote currency (USDT for BTCUSDT) | Perpetual futures price, open-interest weighted across venues. |
basis[].spot_price | number | null | quote currency (USDT for BTCUSDT) | Spot price across venues. |
fear_greed | object | ||
fear_greed.time | date-time | ISO 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.timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
fear_greed.value | integer | null | dimensionless score | Value of the series. |
fear_greed.value_classification | string | Label published by alternative.me: Extreme Fear, Fear, Neutral, Greed or Extreme Greed. | |
cvd@1h | object[] | ||
cvd@1h[].time | date-time | ISO 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[].bucket | date-time | ISO 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[].symbol | string | Trading pair, e.g. BTCUSDT. | |
cvd@1h[].cvd_series | number | 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_delta | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume - taker sell volume over the bucket, base asset units. |
cvd@1h[].taker_buy_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume over the bucket. |
cvd@1h[].taker_sell_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker sell volume over the bucket. |
cvd@1h[].points_count | integer | null | count | Number 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. |
live | boolean | false | 1 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].bid_total_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average bid liquidity over the bucket. |
[].bid_total_min | number | null | base asset quantity (BTC for BTCUSDT) | Minimum bid liquidity over the bucket. |
[].bid_total_max | number | null | base asset quantity (BTC for BTCUSDT) | Maximum bid liquidity over the bucket. |
[].ask_total_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average ask liquidity over the bucket. |
[].ask_total_min | number | null | base asset quantity (BTC for BTCUSDT) | Minimum ask liquidity over the bucket. |
[].ask_total_max | number | null | base asset quantity (BTC for BTCUSDT) | Maximum ask liquidity over the bucket. |
[].imbalance_avg | number | null | fraction from -1 to 1 | Average book imbalance over the bucket. |
[].imbalance_min | number | null | fraction from -1 to 1 | Minimum book imbalance over the bucket. |
[].imbalance_max | number | null | fraction from -1 to 1 | Maximum book imbalance over the bucket. |
[].imbalance_std | number | null | fraction | Standard deviation of the imbalance over the bucket (how unstable the book was). |
[].samples_count | integer | null | count | Number of order book snapshots averaged in the bucket. |
[].is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].bid_total_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average bid liquidity over the bucket. |
[].bid_total_min | number | null | base asset quantity (BTC for BTCUSDT) | Minimum bid liquidity over the bucket. |
[].bid_total_max | number | null | base asset quantity (BTC for BTCUSDT) | Maximum bid liquidity over the bucket. |
[].ask_total_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average ask liquidity over the bucket. |
[].ask_total_min | number | null | base asset quantity (BTC for BTCUSDT) | Minimum ask liquidity over the bucket. |
[].ask_total_max | number | null | base asset quantity (BTC for BTCUSDT) | Maximum ask liquidity over the bucket. |
[].imbalance_avg | number | null | fraction from -1 to 1 | Average book imbalance over the bucket. |
[].imbalance_min | number | null | fraction from -1 to 1 | Minimum book imbalance over the bucket. |
[].imbalance_max | number | null | fraction from -1 to 1 | Maximum book imbalance over the bucket. |
[].imbalance_std | number | null | fraction | Standard deviation of the imbalance over the bucket (how unstable the book was). |
[].samples_count | integer | null | count | Number of order book snapshots averaged in the bucket. |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
symbol | string | Trading pair, e.g. BTCUSDT. | |
price | number | null | quote currency (USDT for BTCUSDT) | Price. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
changes | object | percent (58.5 = 58.5 %) | Price change over each window, keyed by window (1m … 1w), in percent. |
changes.1m | number | null | ||
changes.5m | number | null | ||
changes.15m | number | null | ||
changes.30m | number | null | ||
changes.1h | number | null | ||
changes.4h | number | null | ||
changes.1d | number | null | ||
changes.1w | number | 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit | integer · 1–10000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].side | string | Trades: buy or sell (aggressor side). Liquidations: long or short (the position liquidated). | |
[].price | number | null | quote currency (USDT for BTCUSDT) | Price. |
[].quantity | number | null | base asset quantity (BTC for BTCUSDT) | Quantity traded or liquidated, in base asset units. |
[].usd_value | number | null | USD | Notional 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 60 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].open | number | null | quote currency (USDT for BTCUSDT) | Opening price of the candle. |
[].high | number | null | quote currency (USDT for BTCUSDT) | Highest price of the candle. |
[].low | number | null | quote currency (USDT for BTCUSDT) | Lowest price of the candle. |
[].close | number | null | quote currency (USDT for BTCUSDT) | Closing price of the candle (last price for the open candle). |
[].volume | number | null | base asset quantity (BTC for BTCUSDT) | Volume traded, AGGREGATED across venues (spot + perpetual futures), in base asset units. |
[].taker_buy | number | null | base asset quantity (BTC for BTCUSDT) | Aggressive (taker) buy volume, aggregated across venues. |
[].taker_sell | number | null | base asset quantity (BTC for BTCUSDT) | Aggressive (taker) sell volume, aggregated across venues. |
[].volume_estimated | boolean | true 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].open | number | null | quote currency (USDT for BTCUSDT) | Opening price of the candle. |
[].high | number | null | quote currency (USDT for BTCUSDT) | Highest price of the candle. |
[].low | number | null | quote currency (USDT for BTCUSDT) | Lowest price of the candle. |
[].close | number | null | quote currency (USDT for BTCUSDT) | Closing price of the candle (last price for the open candle). |
[].volume | number | null | base asset quantity (BTC for BTCUSDT) | Volume traded, AGGREGATED across venues (spot + perpetual futures), in base asset units. |
[].taker_buy | number | null | base asset quantity (BTC for BTCUSDT) | Aggressive (taker) buy volume, aggregated across venues. |
[].taker_sell | number | null | base asset quantity (BTC for BTCUSDT) | Aggressive (taker) sell volume, aggregated across venues. |
[].volume_estimated | boolean | true 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit | integer · 1–1000 | 30 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].oi_total | number | null | base 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
bid_total | number | null | base asset quantity (BTC for BTCUSDT) | Resting bid liquidity summed over the top of book of each venue, base asset units. |
ask_total | number | null | base asset quantity (BTC for BTCUSDT) | Resting ask liquidity summed over the top of book of each venue, base asset units. |
imbalance | number | null | fraction 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit | integer · 1–10000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].side | string | Trades: buy or sell (aggressor side). Liquidations: long or short (the position liquidated). | |
[].price | number | null | quote currency (USDT for BTCUSDT) | Price. |
[].quantity | number | null | base asset quantity (BTC for BTCUSDT) | Quantity traded or liquidated, in base asset units. |
[].usd_value | number | null | USD | Notional 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit | integer · 1–1000 | 30 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].taker_buy | number | null | base asset quantity (BTC for BTCUSDT) | Aggressive (taker) buy volume, aggregated across venues. |
[].taker_sell | number | null | base 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit | integer · 1–1000 | 60 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].total_volume | number | null | base asset quantity (BTC for BTCUSDT) | Total traded volume over the period, base asset units. |
[].trade_count | integer | null | count | Number of trades. |
[].taker_buy_vol | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume. |
[].taker_sell_vol | number | null | base 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_usd | number | 100000 | Minimum notional in USD (default 100000, minimum 1000). |
limit | integer · 1–1000 | 50 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].side | string | Trades: buy or sell (aggressor side). Liquidations: long or short (the position liquidated). | |
[].price | number | null | quote currency (USDT for BTCUSDT) | Price. |
[].quantity | number | null | base asset quantity (BTC for BTCUSDT) | Quantity traded or liquidated, in base asset units. |
[].usd_value | number | null | USD | Notional 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
buy_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume over the window. |
sell_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker sell volume over the window. |
buy_ratio | number | null | fraction (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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].buy_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume over the window. |
[].sell_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker sell volume over the window. |
[].buy_ratio | number | null | fraction (0.585 = 58.5 %) | buy_volume / (buy_volume + sell_volume). Above 0.5 = buyers dominate. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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. |
live | boolean | false | 1 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].cvd_series | number | 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_delta | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume - taker sell volume over the bucket, base asset units. |
[].taker_buy_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume over the bucket. |
[].taker_sell_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker sell volume over the bucket. |
[].points_count | integer | null | count | Number of one-minute points in cvd_series. |
[].is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].cvd_series | number | 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_delta | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume - taker sell volume over the bucket, base asset units. |
[].taker_buy_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker buy volume over the bucket. |
[].taker_sell_volume | number | null | base asset quantity (BTC for BTCUSDT) | Taker sell volume over the bucket. |
[].points_count | integer | null | count | Number of one-minute points in cvd_series. |
[].is_closed | boolean | true = 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. |
live | boolean | false | 1 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
timeframe | string | Bucket size of the row. | |
is_closed | boolean | true = the bucket is final and will never change; false = provisional (only with ?live=1). | |
ref_price | number | null | quote currency (USDT for BTCUSDT) | Reference price: the volume-weighted average price across venues over the bucket. |
weighting | string | How venues are combined: oi (open-interest weighted) or volume (volume weighted). | |
max_spread_bps | number | null | basis points (1 bp = 0.01 %) | Gap between the highest and the lowest venue price, relative to ref_price. |
max_spread_pct | number | null | percent (58.5 = 58.5 %) | Same gap as max_spread_bps, in percent. |
high | object | quote currency (USDT for BTCUSDT) | Venue with the highest price over the bucket, and that price ({exchange, price}). |
high.exchange | string | Venue name (this route is the only one that names venues). | |
high.price | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
low | object | quote currency (USDT for BTCUSDT) | Venue with the lowest price over the bucket, and that price ({exchange, price}). |
low.exchange | string | Venue name (this route is the only one that names venues). | |
low.price | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
venue_count | integer | null | count | Number of venues that contributed to the value. |
venues | object[] | Per-venue prices and premiums ([{exchange, price, premium_bps}]). | |
venues[].exchange | string | Venue name (this route is the only one that names venues). | |
venues[].price | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
venues[].premium_bps | number | null | basis 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–500 | 30 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].timeframe | string | Bucket size of the row. | |
[].is_closed | boolean | true = the bucket is final and will never change; false = provisional (only with ?live=1). | |
[].ref_price | number | null | quote currency (USDT for BTCUSDT) | Reference price: the volume-weighted average price across venues over the bucket. |
[].weighting | string | How venues are combined: oi (open-interest weighted) or volume (volume weighted). | |
[].max_spread_bps | number | null | basis points (1 bp = 0.01 %) | Gap between the highest and the lowest venue price, relative to ref_price. |
[].max_spread_pct | number | null | percent (58.5 = 58.5 %) | Same gap as max_spread_bps, in percent. |
[].high | object | quote currency (USDT for BTCUSDT) | Venue with the highest price over the bucket, and that price ({exchange, price}). |
[].high.exchange | string | Venue name (this route is the only one that names venues). | |
[].high.price | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
[].low | object | quote currency (USDT for BTCUSDT) | Venue with the lowest price over the bucket, and that price ({exchange, price}). |
[].low.exchange | string | Venue name (this route is the only one that names venues). | |
[].low.price | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
[].venue_count | integer | null | count | Number of venues that contributed to the value. |
[].venues | object[] | Per-venue prices and premiums ([{exchange, price, premium_bps}]). | |
[].venues[].exchange | string | Venue name (this route is the only one that names venues). | |
[].venues[].price | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
[].venues[].premium_bps | number | null | basis 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. |
live | boolean | false | 1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only. |
响应的 18 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
bucket | date-time | ISO 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. |
symbol | string | Trading pair, e.g. BTCUSDT. | |
exchange | string | Always combined: the value aggregates every venue. | |
trades_count | integer | null | count | Number of trades in the bucket, all venues. |
trades_count_buy | integer | null | count | Number of buyer-initiated trades. |
trades_count_sell | integer | null | count | Number of seller-initiated trades. |
trade_count_dom | integer | null | count | trades_count_buy - trades_count_sell. Positive = more buy trades. |
trades_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units (NOT dollars: multiply by the price for a notional). |
trade_avg_buy | number | null | base asset quantity (BTC for BTCUSDT) | Average size of buy trades, base asset units. |
trade_avg_sell | number | null | base asset quantity (BTC for BTCUSDT) | Average size of sell trades, base asset units. |
trade_volume | number | null | base asset quantity (BTC for BTCUSDT) | Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars). |
trade_volume_buy | number | null | base asset quantity (BTC for BTCUSDT) | Buyer-initiated volume, base asset units. |
trade_volume_sell | number | null | base asset quantity (BTC for BTCUSDT) | Seller-initiated volume, base asset units. |
volume_delta | number | null | base asset quantity (BTC for BTCUSDT) | trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying. |
trade_rate | number | null | trades per second | Average number of trades per second over the bucket. |
volume_estimated | boolean | true when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured. | |
is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_size | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units. |
total_volume | number | null | base asset quantity (BTC for BTCUSDT) | Total traded volume over the period, base asset units. |
trade_count | integer | null | count | Number of trades. |
timestamp | date-time | ISO 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].avg_size | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units. |
[].total_volume | number | null | base asset quantity (BTC for BTCUSDT) | Total traded volume over the period, base asset units. |
[].trade_count | integer | null | count | Number of trades. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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. |
live | boolean | false | 1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only. |
响应的 18 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
bucket | date-time | ISO 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. |
symbol | string | Trading pair, e.g. BTCUSDT. | |
exchange | string | Always combined: the value aggregates every venue. | |
trades_count | integer | null | count | Number of trades in the bucket, all venues. |
trades_count_buy | integer | null | count | Number of buyer-initiated trades. |
trades_count_sell | integer | null | count | Number of seller-initiated trades. |
trade_count_dom | integer | null | count | trades_count_buy - trades_count_sell. Positive = more buy trades. |
trades_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units (NOT dollars: multiply by the price for a notional). |
trade_avg_buy | number | null | base asset quantity (BTC for BTCUSDT) | Average size of buy trades, base asset units. |
trade_avg_sell | number | null | base asset quantity (BTC for BTCUSDT) | Average size of sell trades, base asset units. |
trade_volume | number | null | base asset quantity (BTC for BTCUSDT) | Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars). |
trade_volume_buy | number | null | base asset quantity (BTC for BTCUSDT) | Buyer-initiated volume, base asset units. |
trade_volume_sell | number | null | base asset quantity (BTC for BTCUSDT) | Seller-initiated volume, base asset units. |
volume_delta | number | null | base asset quantity (BTC for BTCUSDT) | trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying. |
trade_rate | number | null | trades per second | Average number of trades per second over the bucket. |
volume_estimated | boolean | true when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured. | |
is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 18 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].exchange | string | Always combined: the value aggregates every venue. | |
[].trades_count | integer | null | count | Number of trades in the bucket, all venues. |
[].trades_count_buy | integer | null | count | Number of buyer-initiated trades. |
[].trades_count_sell | integer | null | count | Number of seller-initiated trades. |
[].trade_count_dom | integer | null | count | trades_count_buy - trades_count_sell. Positive = more buy trades. |
[].trades_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units (NOT dollars: multiply by the price for a notional). |
[].trade_avg_buy | number | null | base asset quantity (BTC for BTCUSDT) | Average size of buy trades, base asset units. |
[].trade_avg_sell | number | null | base asset quantity (BTC for BTCUSDT) | Average size of sell trades, base asset units. |
[].trade_volume | number | null | base asset quantity (BTC for BTCUSDT) | Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars). |
[].trade_volume_buy | number | null | base asset quantity (BTC for BTCUSDT) | Buyer-initiated volume, base asset units. |
[].trade_volume_sell | number | null | base asset quantity (BTC for BTCUSDT) | Seller-initiated volume, base asset units. |
[].volume_delta | number | null | base asset quantity (BTC for BTCUSDT) | trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying. |
[].trade_rate | number | null | trades per second | Average number of trades per second over the bucket. |
[].volume_estimated | boolean | true when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured. | |
[].is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 18 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].exchange | string | Always combined: the value aggregates every venue. | |
[].trades_count | integer | null | count | Number of trades in the bucket, all venues. |
[].trades_count_buy | integer | null | count | Number of buyer-initiated trades. |
[].trades_count_sell | integer | null | count | Number of seller-initiated trades. |
[].trade_count_dom | integer | null | count | trades_count_buy - trades_count_sell. Positive = more buy trades. |
[].trades_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units (NOT dollars: multiply by the price for a notional). |
[].trade_avg_buy | number | null | base asset quantity (BTC for BTCUSDT) | Average size of buy trades, base asset units. |
[].trade_avg_sell | number | null | base asset quantity (BTC for BTCUSDT) | Average size of sell trades, base asset units. |
[].trade_volume | number | null | base asset quantity (BTC for BTCUSDT) | Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars). |
[].trade_volume_buy | number | null | base asset quantity (BTC for BTCUSDT) | Buyer-initiated volume, base asset units. |
[].trade_volume_sell | number | null | base asset quantity (BTC for BTCUSDT) | Seller-initiated volume, base asset units. |
[].volume_delta | number | null | base asset quantity (BTC for BTCUSDT) | trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying. |
[].trade_rate | number | null | trades per second | Average number of trades per second over the bucket. |
[].volume_estimated | boolean | true when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured. | |
[].is_closed | boolean | true = 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. |
live | boolean | false | 1 or true to return the CURRENT, still-open period computed on the fly (is_closed: false). Default: the last closed period only. |
响应的 18 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
bucket | date-time | ISO 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. |
symbol | string | Trading pair, e.g. BTCUSDT. | |
exchange | string | Always combined: the value aggregates every venue. | |
trades_count | integer | null | count | Number of trades in the bucket, all venues. |
trades_count_buy | integer | null | count | Number of buyer-initiated trades. |
trades_count_sell | integer | null | count | Number of seller-initiated trades. |
trade_count_dom | integer | null | count | trades_count_buy - trades_count_sell. Positive = more buy trades. |
trades_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units (NOT dollars: multiply by the price for a notional). |
trade_avg_buy | number | null | base asset quantity (BTC for BTCUSDT) | Average size of buy trades, base asset units. |
trade_avg_sell | number | null | base asset quantity (BTC for BTCUSDT) | Average size of sell trades, base asset units. |
trade_volume | number | null | base asset quantity (BTC for BTCUSDT) | Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars). |
trade_volume_buy | number | null | base asset quantity (BTC for BTCUSDT) | Buyer-initiated volume, base asset units. |
trade_volume_sell | number | null | base asset quantity (BTC for BTCUSDT) | Seller-initiated volume, base asset units. |
volume_delta | number | null | base asset quantity (BTC for BTCUSDT) | trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying. |
trade_rate | number | null | trades per second | Average number of trades per second over the bucket. |
volume_estimated | boolean | true when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured. | |
is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 18 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].symbol | string | Trading pair, e.g. BTCUSDT. | |
[].exchange | string | Always combined: the value aggregates every venue. | |
[].trades_count | integer | null | count | Number of trades in the bucket, all venues. |
[].trades_count_buy | integer | null | count | Number of buyer-initiated trades. |
[].trades_count_sell | integer | null | count | Number of seller-initiated trades. |
[].trade_count_dom | integer | null | count | trades_count_buy - trades_count_sell. Positive = more buy trades. |
[].trades_avg | number | null | base asset quantity (BTC for BTCUSDT) | Average trade size, base asset units (NOT dollars: multiply by the price for a notional). |
[].trade_avg_buy | number | null | base asset quantity (BTC for BTCUSDT) | Average size of buy trades, base asset units. |
[].trade_avg_sell | number | null | base asset quantity (BTC for BTCUSDT) | Average size of sell trades, base asset units. |
[].trade_volume | number | null | base asset quantity (BTC for BTCUSDT) | Traded volume in the bucket, base asset units (BTC for BTCUSDT, NOT dollars). |
[].trade_volume_buy | number | null | base asset quantity (BTC for BTCUSDT) | Buyer-initiated volume, base asset units. |
[].trade_volume_sell | number | null | base asset quantity (BTC for BTCUSDT) | Seller-initiated volume, base asset units. |
[].volume_delta | number | null | base asset quantity (BTC for BTCUSDT) | trade_volume_buy - trade_volume_sell, base asset units. Positive = net buying. |
[].trade_rate | number | null | trades per second | Average number of trades per second over the bucket. |
[].volume_estimated | boolean | true when the aggregated volume of this candle was reconstructed (history before full multi-venue coverage); false = measured. | |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
vwap | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted average price. |
cumulative_volume | number | null | base asset quantity (BTC for BTCUSDT) | Volume accumulated since 00:00 UTC used by the intraday VWAP. |
timestamp | date-time | ISO 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].vwap | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted average price. |
[].cumulative_volume | number | null | base asset quantity (BTC for BTCUSDT) | Volume accumulated since 00:00 UTC used by the intraday VWAP. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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. |
live | boolean | false | 1 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].vwap | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted average price. |
[].total_volume | number | null | base asset quantity (BTC for BTCUSDT) | Total traded volume over the period, base asset units. |
[].trade_count | integer | null | count | Number of trades. |
[].is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].vwap | number | null | quote currency (USDT for BTCUSDT) | Volume-weighted average price. |
[].total_volume | number | null | base asset quantity (BTC for BTCUSDT) | Total traded volume over the period, base asset units. |
[].trade_count | integer | null | count | Number of trades. |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_value | number | null | quote currency (USDT for BTCUSDT) | Futures price - spot price. |
basis_pct | number | null | percent (58.5 = 58.5 %) | (futures - spot) / spot, in percent. Positive = contango. |
futures_price | number | null | quote currency (USDT for BTCUSDT) | Perpetual futures price, open-interest weighted across venues. |
spot_price | number | null | quote currency (USDT for BTCUSDT) | Spot price across venues. |
timestamp | date-time | ISO 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].basis_value | number | null | quote currency (USDT for BTCUSDT) | Futures price - spot price. |
[].basis_pct | number | null | percent (58.5 = 58.5 %) | (futures - spot) / spot, in percent. Positive = contango. |
[].futures_price | number | null | quote currency (USDT for BTCUSDT) | Perpetual futures price, open-interest weighted across venues. |
[].spot_price | number | null | quote currency (USDT for BTCUSDT) | Spot price across venues. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
cumulative_rate | number | null | rate per 8 h, fraction (0.0001 = 0.01 % per 8 h) | Sum of the last three settled 8-hour funding rates (24 h). |
apr_pct | number | null | percent (58.5 = 58.5 %) | Annualised rate in percent. |
window_count | integer | null | count | Number 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].cumulative_rate | number | null | rate per 8 h, fraction (0.0001 = 0.01 % per 8 h) | Sum of the last three settled 8-hour funding rates (24 h). |
[].apr_pct | number | null | percent (58.5 = 58.5 %) | Annualised rate in percent. |
[].window_count | integer | null | count | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_rate | number | null | rate 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_at | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Instant of the next funding settlement. |
is_past | boolean | true if the forecast settlement instant is already past (the next forecast is not published yet). | |
exchange_count | integer | null | count | Number of venues in the weighted average. |
apr_pct | number | null | percent (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
live | boolean | false | 1 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
bucket | date-time | ISO 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. |
rate | number | null | rate 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_pct | number | null | percent (58.5 = 58.5 %) | Annualised rate in percent. |
exchange_count | integer | null | count | Number of venues in the weighted average. |
is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].rate | number | null | rate 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_count | integer | null | count | Number of venues in the weighted average. |
[].is_closed | boolean | true = the bucket is final and will never change; false = provisional (only with ?live=1). | |
[].apr_pct | number | null | percent (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. |
live | boolean | false | 1 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
timeframe | string | Bucket size of the row. | |
part_long | number | null | fraction (0.585 = 58.5 %) | Share of ACCOUNTS long (0.57 = 57 % of accounts are long). Accounts, not volume. |
ratio | number | null | longs / shorts | Long ACCOUNTS / short accounts (1.35 = 35 % more long accounts). Composite across venues, OI-weighted. |
venue_count | integer | null | count | Number of venues that contributed to the value. |
weighting | string | How venues are combined: oi (open-interest weighted) or volume (volume weighted). | |
is_closed | boolean | true = 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–500 | 30 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].timeframe | string | Bucket size of the row. | |
[].part_long | number | null | fraction (0.585 = 58.5 %) | Share of ACCOUNTS long (0.57 = 57 % of accounts are long). Accounts, not volume. |
[].ratio | number | null | longs / shorts | Long ACCOUNTS / short accounts (1.35 = 35 % more long accounts). Composite across venues, OI-weighted. |
[].venue_count | integer | null | count | Number of venues that contributed to the value. |
[].weighting | string | How venues are combined: oi (open-interest weighted) or volume (volume weighted). | |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_current | number | null | base asset quantity (BTC for BTCUSDT) | Total open interest across venues at the end of the window, base asset units. |
oi_previous | number | null | base asset quantity (BTC for BTCUSDT) | Total open interest at the start of the window. |
delta | number | null | base asset quantity (BTC for BTCUSDT) | oi_current - oi_previous, base asset units. |
delta_pct | number | null | percent (58.5 = 58.5 %) | Relative open interest change in percent. |
timestamp | date-time | ISO 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].oi_current | number | null | base asset quantity (BTC for BTCUSDT) | Total open interest across venues at the end of the window, base asset units. |
[].oi_previous | number | null | base asset quantity (BTC for BTCUSDT) | Total open interest at the start of the window. |
[].delta | number | null | base asset quantity (BTC for BTCUSDT) | oi_current - oi_previous, base asset units. |
[].delta_pct | number | null | percent (58.5 = 58.5 %) | Relative open interest change in percent. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
density_up | number | null | dimensionless score | Estimated liquidation density of the most attractive cluster ABOVE the price (short positions). |
dist_up | number | null | fraction (0.585 = 58.5 %) | Distance from the price to the cluster above, as a fraction of the price (0.037 = 3.7 % higher). |
density_down | number | null | dimensionless score | Estimated liquidation density of the most attractive cluster BELOW the price (long positions). |
dist_down | number | null | fraction (0.585 = 58.5 %) | Distance from the price to the cluster below, as a fraction of the price. |
attraction_up | number | null | dimensionless score | density_up / dist_up²: how strongly the cluster above pulls the price. |
attraction_down | number | null | dimensionless score | density_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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].density_up | number | null | dimensionless score | Estimated liquidation density of the most attractive cluster ABOVE the price (short positions). |
[].dist_up | number | null | fraction (0.585 = 58.5 %) | Distance from the price to the cluster above, as a fraction of the price (0.037 = 3.7 % higher). |
[].density_down | number | null | dimensionless score | Estimated liquidation density of the most attractive cluster BELOW the price (long positions). |
[].dist_down | number | null | fraction (0.585 = 58.5 %) | Distance from the price to the cluster below, as a fraction of the price. |
[].attraction_up | number | null | dimensionless score | density_up / dist_up²: how strongly the cluster above pulls the price. |
[].attraction_down | number | null | dimensionless score | density_down / dist_down²: how strongly the cluster below pulls the price. Compare with attraction_up. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
long_usd | number | null | USD | Long positions liquidated, USD. |
short_usd | number | null | USD | Short positions liquidated, USD. |
total_usd | number | null | USD | Total, 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].long_usd | number | null | USD | Long positions liquidated, USD. |
[].short_usd | number | null | USD | Short positions liquidated, USD. |
[].total_usd | number | null | USD | Total, USD. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_count | integer | null | count | Liquidations of 100,000 USD or more. |
big_usd | number | null | USD | Notional of liquidations of 100,000 USD or more. |
small_count | integer | null | count | Liquidations below 100,000 USD. |
small_usd | number | null | USD | Notional of liquidations below 100,000 USD. |
ratio | number | null | big / small | big_usd / small_usd: how much of the liquidated notional comes from liquidations of 100,000 USD or more. null when small_usd is 0. |
timestamp | date-time | ISO 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
timeframe | string | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].big_count | integer | null | count | Liquidations of 100,000 USD or more. |
[].big_usd | number | null | USD | Notional of liquidations of 100,000 USD or more. |
[].small_count | integer | null | count | Liquidations below 100,000 USD. |
[].small_usd | number | null | USD | Notional of liquidations below 100,000 USD. |
[].ratio | number | null | big / small | big_usd / small_usd: how much of the liquidated notional comes from liquidations of 100,000 USD or more. null when small_usd is 0. |
[].points | integer | null | count | Number of one-minute source points inside the bucket. |
[].is_closed | boolean | true = 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit | integer · 1–1000 | 30 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
min_usd | number | 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].side | string | long (a long position was liquidated: forced sell) or short (forced buy). | |
[].price | number | null | quote currency (USDT for BTCUSDT) | Price. |
[].quantity | number | null | base asset quantity (BTC for BTCUSDT) | Quantity traded or liquidated, in base asset units. |
[].usd_value | number | null | USD | Notional 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
value | integer | null | score from 0 to 100 | Crypto Fear & Greed Index (alternative.me). 0 = extreme fear, 100 = extreme greed. |
value_classification | string | Label 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 4 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].value | integer | null | score from 0 to 100 | Crypto Fear & Greed Index (alternative.me). 0 = extreme fear, 100 = extreme greed. |
[].value_classification | string | Label 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
total_market_cap_usd | number | null | USD | Total crypto market capitalisation. |
total_volume_usd | number | null | USD | Total crypto trading volume over 24 h. |
btc_dominance_pct | number | null | percent (58.5 = 58.5 %) | Bitcoin share of the total market cap. |
eth_dominance_pct | number | null | percent (58.5 = 58.5 %) | Ether share of the total market cap. |
others_dominance_pct | number | null | percent (58.5 = 58.5 %) | Share of every other asset. |
active_cryptocurrencies | integer | null | count | Number 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 8 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].total_market_cap_usd | number | null | USD | Total crypto market capitalisation. |
[].total_volume_usd | number | null | USD | Total crypto trading volume over 24 h. |
[].btc_dominance_pct | number | null | percent (58.5 = 58.5 %) | Bitcoin share of the total market cap. |
[].eth_dominance_pct | number | null | percent (58.5 = 58.5 %) | Ether share of the total market cap. |
[].others_dominance_pct | number | null | percent (58.5 = 58.5 %) | Share of every other asset. |
[].active_cryptocurrencies | integer | null | count | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
symbol | string | Trading pair, e.g. BTCUSDT. | |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
circulating_supply | number | null | coins | Coins in circulation. |
total_supply | number | null | coins | Total coins issued (circulating + locked), net of burns. |
max_supply | number | null | coins | Hard cap on supply. null = no cap. |
price | number | null | USD | Latest price used for market_cap and fdv. |
market_cap | number | null | USD | circulating_supply × current price, derived at request time. |
fdv | number | null | USD | Fully 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–1000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].price | number | null | USD | Daily closing price used for the derived values. |
[].circulating_supply | number | null | coins | Coins in circulation. |
[].total_supply | number | null | coins | Total coins issued (circulating + locked), net of burns. |
[].max_supply | number | null | coins | Hard cap on supply. null = no cap. |
[].market_cap | number | null | USD | circulating_supply × current price, derived at request time. |
[].fdv | number | null | USD | Fully 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).
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
series | string | any | null | — | FRED series id (e.g. DGS10). Omit to get the latest value of EVERY active series. |
响应的 8 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date | ISO 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_id | string | Series identifier. | |
category | string | Series category. | |
label | string | Human-readable name. | |
frequency | string | Publication frequency of the source (daily, weekly, monthly). | |
units | string | Unit of value as published by the source. | |
date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
value | number | null | see `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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
asset | string | Asset, e.g. BTC. | |
method | string | How the value is computed. | |
correlations | object | dimensionless ratio | Pearson correlation from -1 to 1, per macro series and window, with n = number of common days. |
correlations.dxy | object | index points | US Dollar Index. |
correlations.dxy.30d | object | ||
correlations.dxy.30d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.dxy.30d.n | integer | null | count | Number of days used. |
correlations.dxy.90d | object | ||
correlations.dxy.90d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.dxy.90d.n | integer | null | count | Number of days used. |
correlations.sp500 | object | index points | S&P 500. |
correlations.sp500.30d | object | ||
correlations.sp500.30d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.sp500.30d.n | integer | null | count | Number of days used. |
correlations.sp500.90d | object | ||
correlations.sp500.90d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.sp500.90d.n | integer | null | count | Number of days used. |
correlations.gold | object | USD per troy ounce | Gold price. |
correlations.gold.30d | object | ||
correlations.gold.30d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.gold.30d.n | integer | null | count | Number of days used. |
correlations.gold.90d | object | ||
correlations.gold.90d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.gold.90d.n | integer | null | count | Number of days used. |
correlations.vix | object | index points | CBOE Volatility Index. |
correlations.vix.30d | object | ||
correlations.vix.30d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.vix.30d.n | integer | null | count | Number of days used. |
correlations.vix.90d | object | ||
correlations.vix.90d.correlation | number | null | from -1 to 1 | Pearson correlation of daily returns. |
correlations.vix.90d.n | integer | null | count | Number 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 100 | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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. |
[].date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
[].value | number | null | see 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 500 | Number 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. |
timeframe | string | 1h | Candle size. Optional, default 1h. Each series serves only the timeframes listed in its catalogue entry; others return 400 timeframe_not_served. |
响应的 9 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
series | string | Series identifier. | |
timeframe | string | Bucket size of the row. | |
candles | object[] | OHLCV candles, most recent first. | |
candles[].time | date-time | ISO 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[].open | number | null | series unit | Open. |
candles[].high | number | null | series unit | High. |
candles[].low | number | null | series unit | Low. |
candles[].close | number | null | series unit | Close. |
candles[].volume | number | null | see `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_id | string | Series identifier. | |
[].source | string | Upstream source. | |
[].instrument_code | string | Code of the instrument at the source (informative; use series_id in requests). | |
[].category | string | Series category. | |
[].label | string | Human-readable name. | |
[].units | string | Unit of value as published by the source. | |
[].volume_kind | string | What volume measures for this instrument (broker = the source's own flow, not the whole market). | |
[].timeframes | string[] | Timeframes natively collected for the series. | |
[].depth_start | date | calendar date (YYYY-MM-DD) | First day of available history. |
[].last_candle | object | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Last candle available, per timeframe. |
[].last_candle.1m | date-time | ||
[].last_candle.5m | date-time | ||
[].last_candle.15m | date-time | ||
[].last_candle.1h | date-time | ||
[].last_candle.4h | date-time | ||
[].last_candle.1d | date-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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
scale | string | Reading scale of the score. | |
30d | object | ||
30d.score | number | null | score from -100 to +100 | Macro momentum for crypto: positive = macro tailwind (weaker dollar, growing liquidity). |
30d.components | object[] | The inputs of the score and their contributions. | |
30d.components[].metric | string | Input name. | |
30d.components[].roc_pct | number | null | percent (58.5 = 58.5 %) | Rate of change of the input over the window. |
30d.components[].contribution | number | null | dimensionless score | Contribution of the input to the score. |
90d | object | ||
90d.score | number | null | score from -100 to +100 | Macro momentum for crypto: positive = macro tailwind (weaker dollar, growing liquidity). |
90d.components | object[] | The inputs of the score and their contributions. | |
90d.components[].metric | string | Input name. | |
90d.components[].roc_pct | number | null | percent (58.5 = 58.5 %) | Rate of change of the input over the window. |
90d.components[].contribution | number | null | dimensionless score | Contribution 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_musd | number | null | millions of USD | Fed balance sheet (WALCL) - Treasury General Account (TGA) - overnight reverse repo (ON RRP). |
net_liquidity_usd | integer | null | USD | Same as net_liquidity_musd, in USD. |
unit | string | Unit of the value. | |
formula | string | Formula used. | |
components | object | The inputs of the score and their contributions. | |
components.walcl | object | ||
components.walcl.time | date | ISO 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.value | number | null | dimensionless score | Value of the series. |
components.walcl.unit | string | Unit of the value. | |
components.walcl.date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
components.tga | object | ||
components.tga.time | date | ISO 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.value | number | null | dimensionless score | Value of the series. |
components.tga.unit | string | Unit of the value. | |
components.tga.date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
components.rrp | object | ||
components.rrp.time | date | ISO 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.value | number | null | dimensionless score | Value of the series. |
components.rrp.unit | string | Unit of the value. | |
components.rrp.date | date | calendar 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_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 180 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 6 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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. |
[].date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
[].walcl_musd | number | null | millions of USD | Fed total assets (WALCL). |
[].tga_musd | number | null | millions of USD | Treasury General Account (WTREGEN). |
[].rrp_busd | number | null | billions of USD | Overnight reverse repo (RRPONTSYD). |
[].net_liquidity_musd | number | null | millions of USD | Fed 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
score | number | null | score from 0 to 100 | Share of risk-on signals × 100. |
regime | string | Regime of the value. | |
risk_on_signals | integer | null | count | Signals currently risk-on. |
available_signals | integer | null | count | Signals that could be evaluated (data available). |
total_signals | integer | null | count | Signals in the model. |
signals | object | Each signal: its condition and whether it is risk_on. | |
signals.vix | object | index points | CBOE Volatility Index. |
signals.vix.condition | string | Rule of the signal. | |
signals.vix.risk_on | boolean | Whether the signal is risk-on now. | |
signals.dxy | object | index points | US Dollar Index. |
signals.dxy.condition | string | Rule of the signal. | |
signals.dxy.risk_on | boolean | Whether the signal is risk-on now. | |
signals.yield_curve | object | ||
signals.yield_curve.condition | string | Rule of the signal. | |
signals.yield_curve.risk_on | boolean | Whether the signal is risk-on now. | |
signals.sp500 | object | index points | S&P 500. |
signals.sp500.condition | string | Rule of the signal. | |
signals.sp500.risk_on | boolean | Whether the signal is risk-on now. | |
signals.gold | object | USD per troy ounce | Gold price. |
signals.gold.condition | string | Rule of the signal. | |
signals.gold.risk_on | boolean | Whether the signal is risk-on now. | |
context | object | The raw inputs used by the signals. | |
context.vix | number | null | index points | CBOE Volatility Index. |
context.dxy | number | null | index points | US Dollar Index. |
context.dxy_7d_ago | number | null | index points | US Dollar Index seven days earlier. |
context.yield_curve_10y2y | number | null | percentage points | 10-year minus 2-year US Treasury yield. |
context.sp500 | number | null | index points | S&P 500. |
context.sp500_sma50 | number | null | index points | 50-day simple moving average of the S&P 500. |
context.gold | number | null | USD per troy ounce | Gold price. |
context.gold_7d_ago | number | null | USD per troy ounce | Gold 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
category | string | any | null | — | Filter by category, e.g. rates, inflation, liquidity, commodities. |
响应的 8 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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_id | string | Series identifier. | |
[].category | string | Series category. | |
[].label | string | Human-readable name. | |
[].frequency | string | Publication frequency of the source (daily, weekly, monthly). | |
[].units | string | Unit of value as published by the source. | |
[].date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
[].value | number | null | dimensionless score | Value 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 13 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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. |
[].ticker | string | ETF ticker. | |
[].issuer | string | ETF issuer. | |
[].period_end | date | calendar date (YYYY-MM-DD) | End of the reporting period of the filing. |
[].balance_date | date | calendar date (YYYY-MM-DD) | Date of the balance sheet the holdings come from. |
[].shares_outstanding | number | null | shares | ETF shares outstanding. |
[].nav_per_share | number | null | USD | Net asset value per share. |
[].net_assets_usd | number | null | USD | Net assets (AUM). |
[].form | string | SEC form type of the filing (10-Q, 10-K...). | |
[].filed | date | calendar date (YYYY-MM-DD) | Filing date at the SEC. |
[].filing_url | string | Link to the filing on SEC EDGAR. | |
[].btc_holdings | number | null | BTC | BTC held by the fund. |
[].holdings_estimated | boolean | true 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ticker | string | any | null | — | ETF ticker (e.g. IBIT, FBTC). Omit for every issuer. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–2000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 13 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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_end | date | calendar date (YYYY-MM-DD) | End of the reporting period of the filing. |
[].ticker | string | ETF ticker. | |
[].issuer | string | ETF issuer. | |
[].balance_date | date | calendar date (YYYY-MM-DD) | Date of the balance sheet the holdings come from. |
[].shares_outstanding | number | null | shares | ETF shares outstanding. |
[].nav_per_share | number | null | USD | Net asset value per share. |
[].net_assets_usd | number | null | USD | Net assets (AUM). |
[].form | string | SEC form type of the filing (10-Q, 10-K...). | |
[].filed | date | calendar date (YYYY-MM-DD) | Filing date at the SEC. |
[].filing_url | string | Link to the filing on SEC EDGAR. | |
[].btc_holdings | number | null | BTC | BTC held by the fund. |
[].holdings_estimated | boolean | true 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 10 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].expiry | date-time | ISO 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_days | number | null | days | Days to expiry (fractional). |
[].oi_call_usd | number | null | USD | Call open interest, USD. |
[].oi_put_usd | number | null | USD | Put open interest, USD. |
[].pc_ratio | number | null | puts / calls | Put/call open interest ratio. Below 1 = more calls than puts. |
[].max_pain_strike | number | null | USD | Strike at which option holders lose the most at expiry (max pain). |
[].top_call_strike | number | null | USD | Strike with the largest call open interest. |
[].top_put_strike | number | null | USD | Strike with the largest put open interest. |
[].iv_atm_pct | number | null | percent (58.5 = 58.5 %) | At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %). |
[].pc_signal | string | bullish (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 10 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
asset | string | Asset, e.g. BTC. | |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
delta | number | null | delta | Aggregated delta of open options, OI-weighted (per unit of underlying). |
gamma | number | null | delta per USD | Change of delta for a 1 USD move of the underlying, OI-weighted. |
theta | number | null | USD per day | Time decay per day, OI-weighted. |
vega | number | null | USD per volatility point | Value change for +1 point of implied volatility, OI-weighted. |
coverage | object | sources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all). | |
coverage.sources_active | integer | null | count | Options venues contributing. |
coverage.oi_coverage_ratio | number | null | fraction (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 4 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
asset | string | Asset, e.g. BTC. | |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
iv_atm_pct | number | null | percent (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeframe | string | 1h | Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 3 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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_pct | number | null | percent (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeframe | string | 1h | Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 6 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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. |
[].open | number | null | percent (58.5 = 58.5 %) | ATM IV at the start of the bucket. |
[].high | number | null | percent (58.5 = 58.5 %) | Highest ATM IV. |
[].low | number | null | percent (58.5 = 58.5 %) | Lowest ATM IV. |
[].close | number | null | percent (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 6 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].expiry | date-time | ISO 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_days | number | null | days | Days to expiry (fractional). |
[].max_pain_strike | number | null | USD | Strike at which option holders lose the most at expiry (max pain). |
[].pc_ratio | number | null | puts / calls | Put/call open interest ratio. Below 1 = more calls than puts. |
[].oi_call_usd | number | null | USD | Call open interest, USD. |
[].oi_put_usd | number | null | USD | Put 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
expiry | date | any | null | — | REQUIRED. Expiry date YYYY-MM-DD. Missing: 422 missing_expiry, and the error lists the active expiries. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 4 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
[].max_pain_strike | number | null | USD | Strike at which option holders lose the most at expiry (max pain). |
[].pc_ratio | number | null | puts / calls | Put/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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 11 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
asset | string | Asset, e.g. BTC. | |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
total_usd | number | null | USD | Total, USD. |
call_usd | number | null | USD | Calls, USD. |
put_usd | number | null | USD | Puts, USD. |
call_coin | number | null | base asset quantity (BTC for BTCUSDT) | Call open interest in coins. |
put_coin | number | null | base asset quantity (BTC for BTCUSDT) | Put open interest in coins. |
coverage | object | sources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all). | |
coverage.sources_active | integer | null | count | Options venues contributing. |
coverage.oi_coverage_ratio | number | null | fraction (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeframe | string | 1h | Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list. |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 7 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
delta_call_usd | number | null | USD | Change of call open interest over the bucket, USD. |
delta_put_usd | number | null | USD | Change of put open interest over the bucket, USD. |
delta_total_usd | number | null | USD | Change of total open interest over the bucket, USD. |
asset | string | Asset, e.g. BTC. | |
timeframe | string | Bucket 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeframe | string | 1h | Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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_usd | number | null | USD | Change of call open interest over the bucket, USD. |
[].delta_put_usd | number | null | USD | Change of put open interest over the bucket, USD. |
[].delta_total_usd | number | null | USD | Change 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
expiry | date | any | null | — | Restrict to one expiry (YYYY-MM-DD). Omit for every active expiry. |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 4 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].expiry | date-time | ISO 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. |
[].strike | number | null | USD | Strike price. |
[].call_oi_usd | number | string | null | USD | Call open interest at this strike, USD. null = no call listed. |
[].put_oi_usd | number | null | USD | Put 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeframe | string | 1h | Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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_usd | number | null | USD | Call open interest, USD. |
[].oi_put_usd | number | null | USD | Put open interest, USD. |
[].oi_total_usd | number | null | USD | Total 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
asset | string | Asset, e.g. BTC. | |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
pc_ratio | number | null | puts / calls | Put/call open interest ratio. Below 1 = more calls than puts. |
signal | string | bullish (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeframe | string | 1h | Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 3 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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_ratio | number | null | puts / calls | Put/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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 24 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
asset | string | Asset, e.g. BTC. | |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
underlying_price | number | null | USD | Price of the underlying used by the options venues. |
open_interest | object | USD | Options open interest in USD: total_usd, call_usd, put_usd. |
open_interest.total_usd | number | null | USD | Total, USD. |
open_interest.call_usd | number | null | USD | Calls, USD. |
open_interest.put_usd | number | null | USD | Puts, USD. |
volume | object | base asset quantity (BTC for BTCUSDT) | Volume traded, AGGREGATED across venues (spot + perpetual futures), in base asset units. |
volume.total_usd | number | null | USD | Total, USD. |
volume.call_usd | number | null | USD | Calls, USD. |
volume.put_usd | number | null | USD | Puts, USD. |
pc_ratio | number | null | puts / calls | Put/call open interest ratio. Below 1 = more calls than puts. |
pc_signal | string | bullish (pc_ratio < 0.7), neutral, or bearish (pc_ratio > 1). | |
iv_atm_pct | number | null | percent (58.5 = 58.5 %) | At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %). |
nearest_expiry | object | The next expiry: date, days left, max pain, put/call ratio, ATM IV. | |
nearest_expiry.expiry | date-time | ISO 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_days | number | null | days | Days to expiry (fractional). |
nearest_expiry.max_pain_strike | number | null | USD | Strike at which option holders lose the most at expiry (max pain). |
nearest_expiry.pc_ratio | number | null | puts / calls | Put/call open interest ratio. Below 1 = more calls than puts. |
nearest_expiry.iv_atm_pct | number | null | percent (58.5 = 58.5 %) | At-the-money implied volatility, annualised, in percent (55.2 = 55.2 %). |
coverage | object | sources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all). | |
coverage.sources_active | integer | null | count | Options venues contributing. |
coverage.oi_coverage_ratio | number | null | fraction (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 9 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
asset | string | Asset, e.g. BTC. | |
timestamp | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Measurement instant (start of the bucket for aggregated rows). |
total_usd | number | null | USD | Total, USD. |
call_usd | number | null | USD | Calls, USD. |
put_usd | number | null | USD | Puts, USD. |
coverage | object | sources_active (venues contributing) and oi_coverage_ratio (share of open interest covered, 1.0 = all). | |
coverage.sources_active | integer | null | count | Options venues contributing. |
coverage.oi_coverage_ratio | number | null | fraction (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeframe | string | 1h | Bucket size: 1m, 5m, 15m, 30m, 1h, 4h or 1d. Other values: 422 invalid_timeframe with the accepted list. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 200 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
asset | string | BTC | Asset, e.g. BTC or ETH (no quote currency). Unknown: 400 invalid_asset. |
响应的 4 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].bucket | date-time | ISO 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_usd | number | null | USD | Call volume over the bucket, USD. |
[].vol_put_usd | number | null | USD | Put 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
recommended | object | satoshis per virtual byte (sat/vB) | Recommended fee rates, rounded: fastest, half_hour, hour, economy, minimum. |
recommended.fastest | integer | null | satoshis per virtual byte (sat/vB) | Fee rate for the next block. |
recommended.half_hour | integer | null | satoshis per virtual byte (sat/vB) | Fee rate for confirmation within ~30 minutes. |
recommended.hour | integer | null | satoshis per virtual byte (sat/vB) | Fee rate for confirmation within ~1 hour. |
recommended.economy | integer | null | satoshis per virtual byte (sat/vB) | Fee rate for a low-priority confirmation. |
recommended.minimum | integer | null | satoshis per virtual byte (sat/vB) | Minimum relay fee rate. |
precise | object | satoshis per virtual byte (sat/vB) | Same fee rates, unrounded. |
precise.fastest | number | null | satoshis per virtual byte (sat/vB) | Fee rate for the next block. |
precise.half_hour | number | null | satoshis per virtual byte (sat/vB) | Fee rate for confirmation within ~30 minutes. |
precise.hour | number | null | satoshis per virtual byte (sat/vB) | Fee rate for confirmation within ~1 hour. |
precise.economy | number | null | satoshis per virtual byte (sat/vB) | Fee rate for a low-priority confirmation. |
precise.minimum | number | null | satoshis per virtual byte (sat/vB) | Minimum relay fee rate. |
fee_pressure | object | dimensionless ratio | ratio = fastest / economy fee rate, and its signal: normal (<= 2), elevated (> 2), congested (> 5). |
fee_pressure.ratio | number | null | dimensionless ratio | fastest / economy fee rate. |
fee_pressure.signal | string | Fee 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 300 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 6 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_fee | integer | null | satoshis per virtual byte (sat/vB) | Fee rate for the next block. |
[].half_hour_fee | integer | null | satoshis per virtual byte (sat/vB) | Fee rate for ~30 minutes. |
[].hour_fee | integer | null | satoshis per virtual byte (sat/vB) | Fee rate for ~1 hour. |
[].economy_fee | integer | null | satoshis per virtual byte (sat/vB) | Low-priority fee rate. |
[].minimum_fee | integer | null | satoshis 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_count | integer | null | count | Unconfirmed transactions in the mempool. |
vsize | integer | null | virtual bytes | Total virtual size of the mempool. |
total_fee | integer | null | satoshis | Total fees waiting in the mempool. |
fee_histogram | number | null[][] | satoshis per virtual byte (sat/vB) | [fee_rate, vsize] pairs: how much virtual size waits at each fee rate. |
trend | object | virtual bytes | Mempool size change over 1 h, 4 h and 24 h, and its signal (filling, draining, stable). |
trend.vsize_delta_1h | integer | null | virtual bytes | Mempool size change over 1 hour. |
trend.vsize_delta_4h | integer | null | virtual bytes | Mempool size change over 4 hours. |
trend.vsize_delta_24h | integer | null | virtual bytes | Mempool size change over 24 hours. |
trend.signal | string | filling (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 300 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 4 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_count | integer | null | count | Unconfirmed transactions in the mempool. |
[].vsize | integer | null | virtual bytes | Total virtual size of the mempool. |
[].total_fee | integer | null | satoshis | Total 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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. |
concentration | object | percent (58.5 = 58.5 %) | Mining pool concentration over the last period. |
concentration.top1_share_pct | number | null | percent (58.5 = 58.5 %) | Share of blocks mined by the largest pool. |
concentration.top3_share_pct | number | null | percent (58.5 = 58.5 %) | Share of blocks mined by the three largest pools. |
concentration.pool_count | integer | null | count | Number of pools that mined at least one block. |
concentration.signal | string | Centralisation risk from the top-3 pool share: healthy (<= 40 %), moderate (> 40 %), high_risk (> 50 %). | |
latest_reward | object | Average block reward (subsidy + fees) of the latest blocks, in satoshis and USD. | |
latest_reward.avg_reward_sats | integer | null | satoshis | Average block reward. |
latest_reward.avg_reward_usd | number | null | USD | Average block reward in USD. |
latest_reward.btc_price_usd | number | null | USD | BTC price used for the conversion. |
pools | object[] | Pools ranked by blocks mined: name, slug, block_count, rank, share_pct. | |
pools[].name | string | Name. | |
pools[].slug | string | Stable identifier. | |
pools[].block_count | integer | null | count | Blocks mined over the period. |
pools[].rank | integer | null | rank (1 = first) | Rank. |
pools[].share_pct | number | null | percent (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dataset | string | concentration | Which mining series to return: concentration (pool shares), rewards (block rewards), difficulty or fee_rates. |
timePeriod | string | any | null | — | Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 300 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_count | integer | null | count | Blocks in the period. |
[].top3_share_pct | number | null | percent (58.5 = 58.5 %) | Share of blocks mined by the three largest pools. |
[].top1_share_pct | number | null | percent (58.5 = 58.5 %) | Share of blocks mined by the largest pool. |
[].pool_count | integer | null | count | Number 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_height | integer | null | block height | Height of the latest block. |
difficulty | number | null | difficulty units | Network mining difficulty. |
block_time | object | seconds | Average block time over 24 h (avg_24h_s), its deviation from the 600 s target, and a signal. |
block_time.avg_24h_s | number | null | seconds | Average block time over 24 hours. |
block_time.deviation_s | number | null | seconds | avg_24h_s - 600. |
block_time.signal | string | 24 h block time versus the 600 s target: slow (> +30 s), fast (< -30 s) or on_target. | |
next_adjustment | object | Next difficulty adjustment: progress, expected change, date, remaining blocks and time. | |
next_adjustment.progress_pct | number | null | percent (58.5 = 58.5 %) | Progress through the current 2016-block difficulty period. |
next_adjustment.difficulty_change_pct | number | null | percent (58.5 = 58.5 %) | Expected difficulty change at the next adjustment. |
next_adjustment.estimated_retarget | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Estimated instant of the next adjustment. |
next_adjustment.remaining_blocks | integer | null | count | Blocks left before the adjustment. |
next_adjustment.remaining_time_ms | integer | null | milliseconds | Estimated time left before the adjustment. |
next_adjustment.next_retarget_height | integer | null | block height | Height 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 24h, 1w, 1mo (one month), 3m, 6m, 1y. 1m also means ONE MONTH here (legacy spelling); prefer 1mo. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 300 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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. |
[].difficulty | number | null | difficulty units | Network mining difficulty. |
[].tip_height | integer | null | block height | Height of the latest block. |
[].progress_pct | number | null | percent (58.5 = 58.5 %) | Progress through the current 2016-block difficulty period. |
[].difficulty_change_pct | number | null | percent (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_usd | number | null | USD | Total value locked in Ethereum DeFi. |
dex_volume_24h_usd | number | null | USD | DEX volume over 24 h. |
dex_volume_7d_usd | number | null | USD | DEX volume over 7 days. |
eth_market_cap_usd | number | null | USD | ETH market capitalisation. |
defi_health_ratio | number | null | fraction (0.585 = 58.5 %) | tvl_usd / eth_market_cap_usd. |
trend_30d_pct | number | null | percent (58.5 = 58.5 %) | TVL change over 30 days. |
signal | string | 30-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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 8 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_usd | number | null | USD | Total value locked in Ethereum DeFi. |
[].dex_volume_24h_usd | number | null | USD | DEX volume over 24 h. |
[].dex_volume_7d_usd | number | null | USD | DEX volume over 7 days. |
[].eth_market_cap_usd | number | null | USD | ETH market capitalisation. |
[].defi_health_ratio | number | null | fraction (0.585 = 58.5 %) | tvl_usd / eth_market_cap_usd. |
[].trend_30d_pct | number | null | percent (58.5 = 58.5 %) | TVL change over 30 days. |
[].signal | string | 30-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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_24h | number | null | ETH | ETH burnt over the last 24 h. |
net_issuance_24h | number | null | ETH | New ETH issued minus ETH burnt over 24 h. Negative = deflationary. |
annualized_rate_pct | number | null | percent (58.5 = 58.5 %) | Net issuance annualised, as a percent of supply. Negative = the supply shrinks. |
zone | string | deflationary (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_24h | number | null | ETH | ETH burnt over the last 24 h. |
[].net_issuance_24h | number | null | ETH | New ETH issued minus ETH burnt over 24 h. Negative = deflationary. |
[].annualized_rate_pct | number | null | percent (58.5 = 58.5 %) | Net issuance annualised, as a percent of supply. Negative = the supply shrinks. |
[].zone | string | deflationary (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_price | number | null | gwei | Gas price for a low-priority transaction. |
propose_gas_price | number | null | gwei | Gas price for a standard transaction. |
fast_gas_price | number | null | gwei | Gas price for a fast transaction. |
base_fee | number | null | gwei | EIP-1559 base fee (burnt). |
gas_used_ratio | number | null | fraction (0.585 = 58.5 %) | Block gas used / gas target over recent blocks. |
congestion | string | low (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_fee | number | null | gwei | EIP-1559 base fee (burnt). |
gas_used_ratio | number | null | fraction (0.585 = 58.5 %) | Block gas used / gas target over recent blocks. |
gas_ma7 | number | null | gwei | 7-day moving average of the base fee. |
gas_ma30 | number | null | gwei | 30-day moving average of the base fee. |
momentum_pct | number | null | percent (58.5 = 58.5 %) | Relative gap between the short and the long moving average, in percent. |
regime | string | high_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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 7 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_fee | number | null | gwei | EIP-1559 base fee (burnt). |
[].gas_used_ratio | number | null | fraction (0.585 = 58.5 %) | Block gas used / gas target over recent blocks. |
[].gas_ma7 | number | null | gwei | 7-day moving average of the base fee. |
[].gas_ma30 | number | null | gwei | 30-day moving average of the base fee. |
[].momentum_pct | number | null | percent (58.5 = 58.5 %) | Relative gap between the short and the long moving average, in percent. |
[].regime | string | high_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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 7 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_price | number | null | gwei | Gas price for a low-priority transaction. |
[].propose_gas_price | number | null | gwei | Gas price for a standard transaction. |
[].fast_gas_price | number | null | gwei | Gas price for a fast transaction. |
[].base_fee | number | null | gwei | EIP-1559 base fee (burnt). |
[].gas_used_ratio | number | null | fraction (0.585 = 58.5 %) | Block gas used / gas target over recent blocks. |
[].congestion | string | low (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_usd | number | null | USD | ETH price. |
btc_price_usd | number | null | USD | BTC price used for the conversion. |
eth_btc_ratio | number | null | BTC per ETH | ETH price / BTC price. |
momentum_7d_pct | number | null | percent (58.5 = 58.5 %) | Change of the ETH/BTC ratio over 7 days. |
signal | string | 7-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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 6 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_usd | number | null | USD | ETH price. |
[].btc_price_usd | number | null | USD | BTC price used for the conversion. |
[].eth_btc_ratio | number | null | BTC per ETH | ETH price / BTC price. |
[].momentum_7d_pct | number | null | percent (58.5 = 58.5 %) | Change of the ETH/BTC ratio over 7 days. |
[].signal | string | 7-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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_ratio | number | null | fraction (0.585 = 58.5 %) | Share of the ETH supply staked. |
annualized_rate_pct | number | null | percent (58.5 = 58.5 %) | Net issuance annualised, as a percent of supply. Negative = the supply shrinks. |
squeeze_index | number | null | score from 0 to 100 | Supply squeeze index: combines the staked share and net issuance. Higher = less liquid ETH available. |
level | string | low (< 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_ratio | number | null | fraction (0.585 = 58.5 %) | Share of the ETH supply staked. |
[].annualized_rate_pct | number | null | percent (58.5 = 58.5 %) | Net issuance annualised, as a percent of supply. Negative = the supply shrinks. |
[].squeeze_index | number | null | score from 0 to 100 | Supply squeeze index: combines the staked share and net issuance. Higher = less liquid ETH available. |
[].level | string | low (< 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_ratio | number | null | fraction (0.585 = 58.5 %) | Share of the ETH supply staked. |
total_staked | number | null | ETH | ETH staked (beacon chain). |
total_supply | number | null | coins | Total coins issued (circulating + locked), net of burns. |
apr_pct | number | null | percent (58.5 = 58.5 %) | Annualised rate in percent. |
fed_funds_rate_pct | number | string | null | percent (58.5 = 58.5 %) | US Fed funds rate, to compare with the staking yield. null if unavailable. |
yield_spread_pct | number | string | null | percentage points | Staking APR - Fed funds rate. null if unavailable. |
yield_signal | number | string | null | attractive (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 8 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_ratio | number | null | fraction (0.585 = 58.5 %) | Share of the ETH supply staked. |
[].total_staked | number | null | ETH | ETH staked (beacon chain). |
[].total_supply | number | null | coins | Total coins issued (circulating + locked), net of burns. |
[].apr_pct | number | null | percent (58.5 = 58.5 %) | Annualised rate in percent. |
[].fed_funds_rate_pct | number | string | null | percent (58.5 = 58.5 %) | US Fed funds rate, to compare with the staking yield. null if unavailable. |
[].yield_spread_pct | number | string | null | percentage points | Staking APR - Fed funds rate. null if unavailable. |
[].yield_signal | number | string | null | attractive (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date-time | ISO 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_supply | number | null | ETH | ETH supply reported by the source. |
eth2_staking | number | null | ETH | ETH deposited to the beacon chain, as reported by the source. |
burnt_fees | number | null | ETH | ETH burnt since EIP-1559. |
withdrawn_total | number | null | ETH | ETH withdrawn from staking. |
total_supply | number | null | coins | Total coins issued (circulating + locked), net of burns. |
burn_24h | number | null | ETH | ETH burnt over the last 24 h. |
net_issuance_24h | number | null | ETH | New ETH issued minus ETH burnt over 24 h. Negative = deflationary. |
signal | string | deflationary (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 7d, 30d, 90d, 1y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 9 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date-time | ISO 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_supply | number | null | ETH | ETH supply reported by the source. |
[].eth2_staking | number | null | ETH | ETH deposited to the beacon chain, as reported by the source. |
[].burnt_fees | number | null | ETH | ETH burnt since EIP-1559. |
[].withdrawn_total | number | null | ETH | ETH withdrawn from staking. |
[].total_supply | number | null | coins | Total coins issued (circulating + locked), net of burns. |
[].burn_24h | number | null | ETH | ETH burnt over the last 24 h. |
[].net_issuance_24h | number | null | ETH | New ETH issued minus ETH burnt over 24 h. Negative = deflationary. |
[].signal | string | deflationary (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date | ISO 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. |
date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
active_addresses | number | null | count | Addresses active on the day. |
avg_7d | number | null | count | 7-day average. |
avg_30d | number | null | count | 30-day average. |
momentum_pct | number | null | percent (58.5 = 58.5 %) | Relative gap between the short and the long moving average, in percent. |
signal | string | 7-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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 30d, 90d, 1y, 2y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 7 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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. |
[].date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
[].active_addresses | number | null | count | Addresses active on the day. |
[].avg_7d | number | null | count | 7-day average. |
[].avg_30d | number | null | count | 30-day average. |
[].momentum_pct | number | null | percent (58.5 = 58.5 %) | Relative gap between the short and the long moving average, in percent. |
[].signal | string | 7-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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date | ISO 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. |
date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
miner_stress | number | null | dimensionless score | Miner revenue / difficulty (revenue per unit of work). Read it against stress_ma30. |
stress_ma30 | number | null | dimensionless score | 30-day moving average of miner_stress. |
zone | string | healthy (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 30d, 90d, 1y, 2y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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. |
[].date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
[].miner_stress | number | null | dimensionless score | Miner revenue / difficulty (revenue per unit of work). Read it against stress_ma30. |
[].stress_ma30 | number | null | dimensionless score | 30-day moving average of miner_stress. |
[].zone | string | healthy (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date | ISO 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. |
date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
mvrv | number | null | dimensionless ratio | Market value / realised value. |
zone | string | undervalued (<= 1), fair (> 1), elevated (> 2.5), overvalued (> 3.5). | |
momentum_30d_pct | number | null | percent (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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 30d, 90d, 1y, 2y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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. |
[].date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
[].mvrv | number | null | dimensionless ratio | Market value / realised value. |
[].zone | string | undervalued (<= 1), fair (> 1), elevated (> 2.5), overvalued (> 3.5). | |
[].momentum_30d_pct | number | null | percent (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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | date | ISO 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. |
date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
nvt | number | null | dimensionless ratio | Market cap / daily on-chain transaction volume (NVT ratio). |
nvt_signal | number | null | dimensionless ratio | NVT smoothed over 90 days (NVT Signal), less noisy. |
zone | string | Zone 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.
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timePeriod | string | any | null | — | Named window: 30d, 90d, 1y, 2y or all. |
since_ms | integer | any | null | — | Lower time bound, INCLUSIVE, in epoch MILLISECONDS (13 digits). A value in seconds returns 422 invalid_time_range. |
until_ms | integer | 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). |
limit | integer · 1–5000 | 365 | Number of rows to return, most recent first. Also bounded by your plan's history window (403 history_depth beyond it). |
响应的 5 个字段
| data 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
[].time | date | ISO 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. |
[].date | date | calendar date (YYYY-MM-DD) | Calendar day the value refers to. |
[].nvt | number | null | dimensionless ratio | Market cap / daily on-chain transaction volume (NVT ratio). |
[].nvt_signal | number | null | dimensionless ratio | NVT smoothed over 90 days (NVT Signal), less noisy. |
[].zone | string | Zone 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 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
symbol | string | Trading pair, e.g. BTCUSDT. | |
timeframe | string | Bucket size of the row. | |
results | integer | null | count | Number of values per indicator. |
indicators | object | One entry per requested indicator id: its parameters, values (oldest to newest) and as_of (time of the last value). | |
indicators.rsi_fast | object | ||
indicators.rsi_fast.time | date-time | ISO 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.type | string | Indicator type. | |
indicators.rsi_fast.period | integer | null | candles | Look-back period of the indicator, in candles. |
indicators.rsi_fast.values | number | 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_of | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Time of the candle of the last value. |
indicators.macd | object | ||
indicators.macd.time | date-time | ISO 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.type | string | Indicator type. | |
indicators.macd.fast | integer | null | candles | Fast period, in candles. |
indicators.macd.slow | integer | null | candles | Slow period, in candles. |
indicators.macd.signal | integer | null | candles | MACD signal period, in candles. |
indicators.macd.values | object | quote currency (USDT for BTCUSDT) | Indicator values, oldest to newest; an object of arrays for multi-output indicators (MACD, Bollinger...). |
indicators.macd.values.macd | number | null[] | ||
indicators.macd.values.signal | number | null[] | candles | MACD signal period, in candles. |
indicators.macd.values.histogram | number | null[] | ||
indicators.macd.as_of | date-time | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Time of the candle of the last value. |
indicators.bb_mid | object | ||
indicators.bb_mid.time | date-time | ISO 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.type | string | Indicator type. | |
indicators.bb_mid.period | integer | null | candles | Look-back period of the indicator, in candles. |
indicators.bb_mid.std | number | null | standard deviations | Band width, in standard deviations. |
indicators.bb_mid.values | object | quote currency (USDT for BTCUSDT) | Indicator values, oldest to newest; an object of arrays for multi-output indicators (MACD, Bollinger...). |
indicators.bb_mid.values.upper | number | null[] | ||
indicators.bb_mid.values.middle | number | null[] | ||
indicators.bb_mid.values.lower | number | null[] | ||
indicators.bb_mid.as_of | date-time | ISO 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"
}
}
}
}