面向代码与 LLM 的 API 约定
适用于所有市场数据族的规则。它们解释了为什么对同一端点的两次调用结果可能不同,为什么一个数字不能与另一个直接比较,以及聚合结果中缺少某个交易所意味着什么。
这些规则适用于所有通道:REST、WebSocket 数据流,以及 AI 智能体读取同样市场数据的 MCP 服务器,名称与单位相同。
#交易对
共跟踪 104 种资产:102 个 USDT 本位永续合约和两种稳定币,后者仅限现货。实时列表由 /v1/symbols 提供,以其为准。
| 交易对 | 资产 | 采集的市场 |
|---|---|---|
BTCUSDT | Bitcoin | spot + perpetual |
ETHUSDT | Ethereum | spot + perpetual |
SOLUSDT | Solana | spot + perpetual |
XRPUSDT | XRP | spot + perpetual |
DOGEUSDT | Dogecoin | spot + perpetual |
BNBUSDT | BNB | spot + perpetual |
TRXUSDT | TRON | spot + perpetual |
SUIUSDT | Sui | spot + perpetual |
HYPEUSDT | HYPE | spot + perpetual |
XLMUSDT | Stellar | spot + perpetual |
XMRUSDT | Monero | spot + perpetual |
LINKUSDT | Chainlink | spot + perpetual |
ADAUSDT | Cardano | spot + perpetual |
LTCUSDT | Litecoin | spot + perpetual |
UNIUSDT | Uniswap | spot + perpetual |
GRAMUSDT | Gram (formerly Toncoin) | spot + perpetual |
AVAXUSDT | Avalanche | spot + perpetual |
HBARUSDT | Hedera | spot + perpetual |
NEARUSDT | NEAR Protocol | spot + perpetual |
TAOUSDT | Bittensor | spot + perpetual |
ZECUSDT | Zcash | spot + perpetual |
BCHUSDT | Bitcoin Cash | spot + perpetual |
CCUSDT | Canton | spot + perpetual |
QNTUSDT | Quant | spot + perpetual |
ENAUSDT | Ethena | spot + perpetual |
AAVEUSDT | Aave | spot + perpetual |
ONDOUSDT | Ondo | spot + perpetual |
PUMPUSDT | Pump.fun | spot + perpetual |
WLDUSDT | Worldcoin | spot + perpetual |
ASTERUSDT | Aster | spot + perpetual |
DOTUSDT | Polkadot | spot + perpetual |
WLFIUSDT | World Liberty Financial | spot + perpetual |
MORPHOUSDT | Morpho | spot + perpetual |
SKYUSDT | Sky (formerly Maker) | spot + perpetual |
ETCUSDT | Ethereum Classic | spot + perpetual |
ICPUSDT | Internet Computer | spot + perpetual |
ARBUSDT | Arbitrum | spot + perpetual |
VVVUSDT | Venice Token | spot + perpetual |
JSTUSDT | JUST | spot + perpetual |
ALGOUSDT | Algorand | spot + perpetual |
KASUSDT | Kaspa | spot + perpetual |
POLUSDT | Polygon (formerly MATIC) | spot + perpetual |
JUPUSDT | Jupiter | spot + perpetual |
RENDERUSDT | Render | spot + perpetual |
ATOMUSDT | Cosmos | spot + perpetual |
FILUSDT | Filecoin | spot + perpetual |
INJUSDT | Injective | spot + perpetual |
AEROUSDT | Aerodrome Finance | spot + perpetual |
LITUSDT | Lighter | spot + perpetual |
ZROUSDT | LayerZero | spot + perpetual |
APTUSDT | Aptos | spot + perpetual |
CAKEUSDT | PancakeSwap | spot + perpetual |
STXUSDT | Stacks | spot + perpetual |
STABLEUSDT | Stable | spot + perpetual |
AKEUSDT | Akedo | spot + perpetual |
NIGHTUSDT | Midnight | spot + perpetual |
DASHUSDT | Dash | spot + perpetual |
TIAUSDT | Celestia | spot + perpetual |
PYTHUSDT | Pyth Network | spot + perpetual |
VETUSDT | VeChain | spot + perpetual |
CRVUSDT | Curve DAO | spot + perpetual |
TRUMPUSDT | Official Trump | spot + perpetual |
STRKUSDT | Starknet | spot + perpetual |
PENGUUSDT | Pudgy Penguins | spot + perpetual |
FETUSDT | Artificial Superintelligence Alliance | spot + perpetual |
VIRTUALUSDT | Virtuals Protocol | spot + perpetual |
GRASSUSDT | Grass | spot + perpetual |
SEIUSDT | Sei | spot + perpetual |
BSVUSDT | Bitcoin SV | spot + perpetual |
XPLUSDT | Plasma | spot + perpetual |
PENDLEUSDT | Pendle | spot + perpetual |
FFUSDT | Falcon Finance | spot + perpetual |
SPXUSDT | SPX6900 | spot + perpetual |
XTZUSDT | Tezos | spot + perpetual |
LDOUSDT | Lido DAO | spot + perpetual |
SHIBUSDT | Shiba Inu | spot + perpetual |
PEPEUSDT | Pepe | spot + perpetual |
CROUSDT | Cronos | spot + perpetual |
MUSDT | MemeCore | spot + perpetual |
MNTUSDT | Mantle | spot + perpetual |
ETHFIUSDT | Ether.fi | spot + perpetual |
RAYUSDT | Raydium | spot + perpetual |
SUNUSDT | Sun | spot + perpetual |
PIEVERSEUSDT | Pieverse | spot + perpetual |
KITEUSDT | Kite | spot + perpetual |
IMXUSDT | Immutable | spot + perpetual |
MONUSDT | Monad | spot + perpetual |
OPUSDT | Optimism | spot + perpetual |
CFXUSDT | Conflux | spot + perpetual |
LUNCUSDT | Terra Luna Classic | spot + perpetual |
GRTUSDT | The Graph | spot + perpetual |
KMNOUSDT | Kamino | spot + perpetual |
CVXUSDT | Convex Finance | spot + perpetual |
JTOUSDT | Jito | spot + perpetual |
KAIAUSDT | Kaia | spot + perpetual |
ARUSDT | Arweave | spot + perpetual |
BATUSDT | Basic Attention Token | spot + perpetual |
ENSUSDT | Ethereum Name Service | spot + perpetual |
COMPUSDT | Compound | spot + perpetual |
SYRUPUSDT | Maple Finance | spot + perpetual |
JASMYUSDT | JasmyCoin | spot + perpetual |
RUNEUSDT | THORChain | spot + perpetual |
USDCUSDT | USDC | spot |
USDTUSDC | USDT | spot |
symbol 为必填
适用于所有针对单一资产的接口,不区分大小写(btcusdt 同样有效;响应信封返回规范形式 BTCUSDT,asset 与 series 遵循同一规则)。缺失时请求返回 422;未知或已停用时返回 422,并附可接受值列表。没有默认交易对,也没有回退:给没有指定的人返回比特币,会得到一个正确但归属错误资产的数字。
相反,全市场数据不接受任何交易对:恐惧与贪婪指数、全球市场、宏观、ETF、比特币网络、BTC 与 ETH 链上数据。期权通过 ?asset=BTC 或 ?asset=ETH 指定。
#周期
大多数按区间的接口有七个取值:
1m5m15m30m1h4h1d
K 线(/v1/klines)和技术指标还接受第八个取值——周线(从周一 00:00 UTC 开始),因为它们直接基于 K 线构建:
1m5m15m30m1h4h1d1w
例外情况:期权接口不接受 1m(其快照大约每分钟一次),日内宏观品种不接受 30m,/v1/btc/fees/history 和 /v1/global/history 的可选周期为 1h、4h 或 1d。合约为每个接口给出确切列表(enum),市场数据族目录(/v1/macro/intraday/series)给出每个品种的周期。
不在列表中的值会返回 422 invalid_timeframe 并列出可接受的值,绝不会悄悄回退到其他周期。所有校验错误都是 422,包括 POST /v1/indicators 的正文和期权历史接口。请依据 error.code 进行分支处理:它会指明出错的参数。与 symbol 一样,timeframe 和 order 不区分大小写(1H 即 1h),但 1M 除外:它在别处表示一个月,这里会被拒绝,因为 1m 表示一分钟。
#多交易所聚合
任何响应都不会标明交易所。多交易所指标到达时已经合并:这是平台的约定,也是多个集成变成一个集成的原因。按数量性质分为三种合并规则:
| 性质 | 类型 | 说明 |
|---|---|---|
sum | additive | 成交量、持仓量、成交笔数、爆仓、订单簿深度。缺少一个交易所会让数字机械地偏低。 |
open-interest-weighted average | rates and prices | 资金费率和基差。持仓最多的交易所权重最大,这正是综合值具有代表性的原因。 |
volume-weighted average | average prices | 均价。均价的自然权重就是产生它的成交量。 |
整个 BytNode 中唯一的例外:/v1/spread/interexchange 会标明交易所,因为价差离开交易所就没有意义。其他地方都不存在 exchange 参数:传入会返回 422。
#已收盘 K 线与进行中的周期
所有按窗口切分数据的路由都在每一行带有 is_closed 布尔值,无论你是否请求:K 线、成交 K 线、CVD、买卖比、成交规模、大小额爆仓、订单簿、跨交易所价差——以及所有 /history 路由的每一行(基差、持仓量、资金费率、爆仓、宏观、链上……)。它们的最新值是 timeframe(必填)最近一个已收盘的分桶。基于滚动窗口计算的最新值(累计爆仓、持仓量变化、累计资金费率、期权持仓量变化)始终为最终值,不带 is_closed:time 是窗口终点,window_start_at 与 window_s 给出起点与时长。
| 取值 | 类型 | 说明 |
|---|---|---|
true | boolean | 该值为最终值:BytNode 不会重新计算,可以存储、求和、与图表对照。多交易所窗口在所有预期来源交付后即收盘,最迟在窗口结束后 max(20 秒, 时长的 1%) 收盘,之后固定。CVD 等待更久:在窗口结束 90 秒后收盘。订单簿是每个分桶结束时的快照:返回的每一行都已是最终值。会修订自身数据的来源(宏观、链上)仍可能重新发布已收盘的值。 |
false | boolean | 该值是暂定的。连续两次调用可能对同一行返回不同的数字。 |
默认只提供已收盘的窗口。要查看进行中的周期,请添加 ?live=1:
# The latest CLOSED hourly candle: its value will not move again.
curl -H "X-API-KEY: $BYTNODE_API_KEY" \
"https://api.bytnode.com/v1/cvd?symbol=BTCUSDT&timeframe=1h"
# The candle IN PROGRESS: provisional, flagged is_closed: false.
curl -H "X-API-KEY: $BYTNODE_API_KEY" \
"https://api.bytnode.com/v1/cvd?symbol=BTCUSDT&timeframe=1h&live=1"关于 ?live=1 需要了解的
- 它是可选的。不加时,响应与之前完全相同。
- 仅适用于声明了它的最新值接口:
/v1/klines、/v1/cvd、/v1/trades-kline(及其/spot和/futures变体)、/v1/funding/rate和/v1/spread/interexchange;在其他接口上它是未知参数(422)。/history接口按定义只提供已收盘的窗口。 - 绝不会返回
null。如果进行中的周期尚未收到任何数据(市场平静),则返回最近一个已收盘的窗口。 - 收盘时数值不会跳变。暂定值与最终值出自同一定义:周期结束时,该行会定格在其当时显示的数字上。
可达到的时效:成交、K 线、CVD 和价差约两秒。订单簿没有进行中的周期:每一行都是一个已收盘分钟的快照,因此不接受 live。
#单位与刻度
同一个比例绝不会有两种写法。字段的后缀决定其刻度,这一规则适用于所有市场数据族,从市场核心到外围数据:
| 后缀 | 类型 | 说明 |
|---|---|---|
…_pct | percentage | 百分比:58.5 表示 58.5%。例如 basis_pct、oi_change_pct、rate_pct、apr_pct。 |
…_ratio | quotient | 无量纲的商。整体中的占比是小数:0.585 表示 58.5%(buy_ratio、staking_ratio)。两个量之比可以大于 1,也可以带符号:put_call_ratio 1.2 表示每个看涨期权对应 1.2 个看跌期权,imbalance_ratio 取值 −1 到 1。 |
…_bps | basis points | 基点:1 个基点等于 0.01%。例如 premium_bps、max_spread_bps。 |
#时间戳与排序
- 数据的时间戳采用 ISO 8601 格式,UTC 时区,带
Z后缀,毫秒固定为三位:2026-08-29T11:38:00.000Z。time始终采用此格式,日度序列也不例外(某一天记为当天 UTC 零点),且不再另设date键;单独的日期(2026-08-29)只出现在表示业务日期的键中,例如filed_date或oldest_input_date。time遵循两条规则之一,每个接口的参考文档会说明是哪一条:对于按 bucket 划分的序列(K 线、CVD、按 bucket 的订单簿、按 8 小时周期的资金费率),它是 bucket 的起点,而不是终点;对于时点值(最新值、滚动窗口、预测、综合指标),它是该值所对应的时刻——滚动窗口的终点、预测所针对的结算时刻、综合指标中最新的输入(同时给出oldest_input_date)。按 bucket 划分的路由,其最新值是最近一个已收盘的 bucket,与其/history的第一行一样以 bucket 的起点为时间:/v1/klines、/v1/cvd、/v1/buy-sell-ratio、/v1/trades/avg-size、/v1/liquidations/big-small-ratio、/v1/orderbook(均必须提供timeframe)。/v1/options/max-pain/history的响应包装以到期日(YYYY-MM-DD)回显expiry,无论你发送的是哪种形式。 - 请求边界(
since_ms、until_ms和before_ms)以自 Unix 纪元起的毫秒表示。since_ms与until_ms是包含的(精确到毫秒),before_ms是不包含的。since_ms=0表示数据的起点。负数边界、since_ms大于until_ms(相等时读取该毫秒)或大于等于before_ms、同时给出until_ms与before_ms、以秒、微秒或纳秒给出的边界,或任何其他早于 2009-01-03(比特币第一个区块)的边界,都会在执行前返回422。 - 值数组(指标的序列、CVD 的内部序列)按从旧到新排列。
- 历史列表默认按从新到旧返回(最新的一行排在最前面),使用
order=asc时则按从旧到新返回。 - 一天从 UTC 午夜开始:这是日度序列的对齐点。