Skip to main content
本页是 Data API 的数据行为契约:新鲜度如何表达、四种数据状态(正常返回 / 准备中 / 旧值兜底 / 不可用)分别长什么样、你的程序该怎么处理。未就绪或错误响应不扣月配额;成功拿到数据仍按端点计量,包括缓存命中(见配额)。

1. 正常返回:看内容时间,不看响应时间

响应中的 as_of、quoted_at 等内容时间位于各数据集的业务数据中;_meta.data_freshness_seconds 表达内容距今的秒数。内容时间不是服务器处理请求的时刻,判断「数据新不新」应以对应数据的时间字段为准。 不同数据集的更新节奏天然不同:行情类是秒到分钟级,披露类(国会交易、财报)是小时到天级。各数据集的节奏见对应的目录导读。

期权最新报价

单查与批量报价返回最近可用的报价:
  • quoted_at 是报价本身的 UTC 时间,不是请求时间。休市或不活跃合约的报价时间可能较早;接口不保证报价年龄或可成交性,调用方应自行判断是否适用。
  • 批量 _meta.data_freshness_seconds 按成功报价中**最早的 quoted_at**计算;逐合约判断请查看各自的时间。
  • 单查未取得报价时返回相应错误;批量在 quotes 中返回成功报价,并在 unavailable 中列出失败合约。这两个端点不返回 202,处理方式见报价错误说明。

2. 202:数据正在准备

部分按标的准备数据的端点(目录里标注 on-demand 的),首次请求某个此前无人查询过的标的时可能返回以下响应;期权最新报价的响应方式见上文:
这不是错误:该标的的数据正在准备,通常几秒内就绪。按 retry_after_seconds 重试即可(202 本身不扣额度,重试成功返回数据则计费)。同一标的就绪后,后续请求直接返回数据。

3. 旧值兜底:stale 与 notice

对于支持旧值兜底的数据集,数据更新暂时中断时会返回最近一次的有效数据并如实标注。旧值兜底响应的 _meta 会带上 stale 标注与说明;期权最新报价请按上文的报价时间与逐项状态判断。你的程序应当:
  • 需要严格新鲜度的场景(如实时信号):检查内容时间,超出你的容忍窗口就跳过本轮;
  • 容忍旧值的场景(如日报、回顾):直接使用,无需特殊处理。
按季/按月披露的数据(机构 13F、财报、做空回补数据等)不会被标注 stale——数据是「几个月前的」本来就是这类披露的正常状态,内容时间如实给出,由你按披露节奏理解。

4. 404 与 503:一个别重试,一个请重试

这两个状态码的语义被刻意分开,请按语义处理: 同为 404,NOT_FOUND 与 RANGE_TOO_DEEP 的处理方向相反——程序分支请按 error.code 判断,不要只看 HTTP 状态码。 503 的错误体携带 recoverable: true 与 retry_after_seconds,适合程序自动处理。 Dealer GEX 与 Dealer Heatmap snapshot 只接受当前应有的固定五分钟采样点:如果该段的固定末分钟尚未归档,会返回 READ_MODEL_UNAVAILABLE,不会用上一段或段内更早一分钟代替。Dealer history 中的同类空洞则如实缺行,不会插值或补零。
一个已知的边界情况:对确定不可能存在的数据组合(例如查询一个已过期日期的快照、对不适用的标的类型查基本面),当前也可能返回带重试提示的 503。如果同一请求重试两三轮仍无进展,应当放弃并检查请求本身是否有意义,而不是无限重试。

程序模式小抄