本次发现与文档规则
官方 Spot 文档把 limit 定义为最近数据的数量,并说明它与 from、to 冲突。本文读取到的原句为:
limit conflicts with from and to. If either from or to is specified, request will be rejected.
但 2026 年 9 月 10 日 09:04:52.959019–09:04:53.796079 UTC,我们向公开 /spot/candlesticks 接口同时传入 limit=2、from=1788912000,得到 HTTP 200 和两行数据。这是文档文字与当次服务响应之间的可观察差异,不是已经获得官方确认的规则变更。
保留参数不动,复现当次请求
这里固定 BTC_USDT、1h 和开始时间,只取很小的样本。日期是历史区间,适合复核响应结构。它没有密钥,也不会创建交易。
curl -i --max-time 20 -H 'Accept: application/json' 'https://api.gateio.ws/api/v4/spot/candlesticks?currency_pair=BTC_USDT&interval=1h&limit=2&from=1788912000'[
[
"1788912000",
"7106106.46807870",
"78778.1",
"78785.8",
"78455.8",
"78455.8",
"90.32466300",
"true"
],
[
"1788915600",
"15308996.41421130",
"78886.7",
"78886.7",
"78631.6",
"78778.1",
"194.39220900",
"true"
]
]再做一个符合文档描述的对照
第二条请求删除 limit,改用明确的 from 与 to。它于 09:04:53.796998–09:04:54.613808 UTC 返回 200,包含同样两行数据。这个对照说明,读取该小段历史区间并不需要依赖前一条组合的兼容行为。
两条响应的时间戳为 1788912000 和 1788915600,相差 3600 秒。这里只报告本次返回的区间;不能由两行数据推出所有接口、粒度和历史区间的端点包含规则。
curl -i --max-time 20 -H 'Accept: application/json' 'https://api.gateio.ws/api/v4/spot/candlesticks?currency_pair=BTC_USDT&interval=1h&from=1788912000&to=1788915600'实际程序如何选择参数
需要最近少量数据时,可使用 limit,不同时传入 from/to。需要指定历史区间时,使用 from/to 和 interval,不再传入 limit。这种写法遵循本次读到的文档,也避免把暂时允许的混合组合当成稳定契约。
做历史分页时,先确定时间单位和每页跨度,再检查返回时间戳是否前进。相邻页出现重复时按时间戳核对并去重;遇到空页或缺口时记录区间,不能把缺失数据直接补成零。本文没有进行大范围分页,因此这些是客户端防错建议,不是对服务边界行为的完整测试结论。
为什么不直接宣布“文档错误已确认”
服务可能存在尚未写入文档的兼容逻辑,也可能发生分批更新;文档读取服务也可能返回缓存。当前没有服务端版本号和官方对差异的说明,不能判断原因,更不能保证明天或其他环境仍然返回 200。
此次本地直连文档页返回 403;文章引用的是另一条可读取的官方文档 文本读取服务返回。两类来源分别保存:接口回执可核查实际 HTTP 状态,文档读取服务原文只能证明当次读取结果了这些文字,不能视为本地文档请求成功。
官方来源与公开响应
文档在 2026-09-10 核对;接口样本采集于同日 09:04:50–09:04:54 UTC。下方文件只含公开接口响应正文。
文档核对使用的文本读取服务可能包含缓存;本地直接请求文档页收到 403。网络出口位置未知,单组样本不能代表所有地区、市场或后续版本。