本次发现与文档规则

官方 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 和开始时间,只取很小的样本。日期是历史区间,适合复核响应结构。它没有密钥,也不会创建交易。

文档描述有冲突的组合;本次得到 200sh
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'
本次完整响应正文json
[
  [
    "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 秒。这里只报告本次返回的区间;不能由两行数据推出所有接口、粒度和历史区间的端点包含规则。

删除 limit,用 from/to 指定区间sh
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。网络出口位置未知,单组样本不能代表所有地区、市场或后续版本。