SDK
两个官方客户端(Python 和 TypeScript),由 OpenAPI 合约生成:每个接口都是以其路径命名的类型化方法,分页自动跟进,错误是带有稳定 error.code 的类型化异常,重试遵守 Retry-After,WebSocket 数据流会自动重连。
#安装
安装包作为公开仓库 github.com/bytnode/bytnode-SDK 每个版本的附件发布,附源代码和更新日志。它们尚未发布到 PyPI 和 npm:请通过 URL 安装版本附件。
pip install https://github.com/bytnode/bytnode-SDK/releases/download/v0.2.1/bytnode-0.2.1-py3-none-any.whl
# with pandas: pip install "bytnode[pandas] @ https://github.com/bytnode/bytnode-SDK/releases/download/v0.2.1/bytnode-0.2.1-py3-none-any.whl"
export BYTNODE_API_KEY="your_key"两者都从环境变量 BYTNODE_API_KEY 读取密钥,本文档所有示例都使用这个名称。
#首次调用
from bytnode import Bytnode
client = Bytnode() # reads BYTNODE_API_KEY
rate = client.funding.rate("BTCUSDT")
print(rate.data.rate_pct, rate.data.time)
# every page of a history, followed for you, into one DataFrame
df = client.klines.iter("BTCUSDT", "1h", since="2026-10-01").to_pandas()#客户端为你做了什么
- URL 即方法。
/v1/funding/rate/history对应client.funding.rate.history(...);每一行都是使用 API 字段名的类型化模型,日期已转换。 - 分页。
.iter()逐页跟进next,直到其为null,并使用该接口允许的最大页;时间边界可为日期、ISO 字符串或 epoch 毫秒。 - 错误。每种情况一种异常(请求无效、访问被拒、超出速率……),携带
code、param和 API 的消息。 - 重试。429 和 503 等待
Retry-After;502、503、504 和网络错误以随机退避重试;月度配额用尽时立即失败。 - 数据流。带退避的重连、重新订阅、类型化消息,并根据
seq检测丢失。
#生成你自己的客户端
合约专为代码生成器设计:每个操作都有可读的 operationId(getFundingRateHistory),每个响应都有命名的模式(FundingRate、Kline、Trade……),封闭取值都是 enum(timeframe、asset、order)。其他语言可从 https://api.bytnode.com/openapi.json 生成:
# TypeScript types
npx openapi-typescript https://api.bytnode.com/openapi.json -o bytnode.d.ts
# Python client
pipx run openapi-python-client generate --url https://api.bytnode.com/openapi.json#版本
SDK 的版本遵循其自身的更新日志;每个版本由某一版合约生成,API 的每个响应都在 BytNode-Contract-Version 响应头中给出该合约版本。比较两者即可知道自生成客户端以来 API 是否有变化。见版本与迁移。
bytnode 0.2.1 · contract 2.0.0