错误
错误一律是 application/problem+json(RFC 9457)。请依 code 分支;detail
是给人看的,可能改写。
{
"type": "https://data.cyberun.cloud/docs/errors#invalid_argument",
"title": "Bad Request",
"status": 400,
"code": "invalid_argument",
"detail": "symbols is 1 to 100 comma-separated symbols",
"param": "symbols"
}
服务器能估计等待时间时会带 retry_after。pending 与 ready 只出现在
data_pending。
错误码
| 代码 | HTTP | 意思 | 该怎么做 |
|---|---|---|---|
unauthenticated | 401 | 密钥缺少、格式错误、过期或已撤销 | 修正密钥;不要原样重试 |
forbidden | 403 | 密钥缺少 kind、权限、盘口档数或 scope | 请管理员补上缺少的部分 |
not_found | 404 | 没有这个路由、商品、导出或文件 | 检查路径或代号;导出过期就重新提交 |
invalid_argument | 400 | 参数缺少、格式错误或超出范围 | 修正请求;param 指出字段 |
ambiguous_symbol | 409 | 一个拼法在该日对到多个商品 | 用完整代号或 instrument_id |
unsupported_resolution | 400 | K 线比数据更细、数据集不支持,或商品没有历史 | 改用较粗周期或别的数据集 |
version_unavailable | 410 | 旧的 catalog_version 或 resume_token 已不保留 | 去掉固定版本重查,或重新订阅 |
resource_exhausted | 413 或 429 | 请求或答案太大,或碰到流上限 | 缩小请求;429 依 retry_after 重试 |
quota_exceeded | 429 | 每把密钥的请求、输出、任务或流上限已用完 | 等 retry_after 后重试;请管理员调大政策 |
data_pending | 503 | 交易日、导出档或前一日还在准备 | 依 retry_after 用同一请求重试 |
resync_required | 503 | 流用户端落后,队列溢出 | 用最后的 resume_token 重连 |
unavailable | 503 | 相依服务或日历暂时不可用 | 退避重试 |
internal | 500 | 未预期的服务器错误 | 重试一次,再回报时间或请求信息 |
JSON 内容过大与 MCP 答案过大回 413;流订阅超过上限回 429,数字见
限制。同一个代码可能有两种状态;请依代码分支,状态只用于
显示。
重试
data_pending:用同一请求重试。不要重新创建工作;缺少的 instrument-day 已 在队列中。unavailable、internal:指数退避加 jitter。resource_exhausted且 429:等retry_after后重试。quota_exceeded:等retry_after;一直碰到代表政策对这个工作量太小。version_unavailable:不要重试固定版本;去掉 pin 或重新订阅。- 其他:先修正请求或密钥。
Python SDK 会重试忙碌响应与网络错误;PendingTimeout 代表等到
pending_timeout 数据还在准备。
认证与权限
除了 GET /v2/openapi.json,每个 /v2 路由都需要
Authorization: Bearer vmk_...。目录需要任何有效密钥。数据需要数据集 kind、
history,快照还需要盘口档数。实时需要 live;导出除了数据权限还需要
export。