Foreshock
EN 订阅
文档

开始

认证

每个账户一个 bearer 密钥,暴露执法数据的接口另需 KYB,以及为什么 401 和 403 不是一回事。

更新于
2026-08-24

请求头

每个请求以 bearer token 携带密钥。

GET /v1/coverage HTTP/1.1
Host: api.foreshock.org
Authorization: Bearer fsk_EXAMPLE_0000000000000000
Accept: application/json

密钥是机密。不要进版本库、不要进 query string、不要进日志。

密钥的作用域

一个密钥只对应一个客户账户。跨客户读取不是「被拒绝」,而是不可表达:customer_id 是所有客户数据表的分区键与主键首列,一个密钥在原理上就寻址不到另一个账户的数据。

需要 KYB 的接口

契约中标注 x-kyb-required: true 的接口,还要求账户已完成机构 KYB 验证。v1 里是 GET /v1/exposure、GET /v1/coverage 与 POST /v1/decide/deposit。

非终态的执法数据在任何套餐下都不向未验证账户开放。这是产品边界,不是价格档位。

401 与 403 不同,而且这个区别重要

状态码type含义该怎么做
401.../unauthorized密钥缺失、格式错误或已吊销。停。不要用同一个密钥重试。叫人。
403.../kyb-required密钥有效;账户未完成 KYB。停。重试解决不了。
403.../forbidden密钥有效,但对这个具体资源没有权限。检查该资源是否属于本账户。

未验证账户上的有效密钥拿到的是 403,不是 401。如果你的客户端把两者合并成「认证失败,重试」,它就会对着一个只有人能解除的条件无限重试。

裁决路径上的认证失败

POST /v1/decide/deposit 上的认证失败不是裁决。任何非 2xx 响应里都没有裁决。无论状态码是什么,这笔入金在收到 200 之前一直是 HOLD。