限流与错误
所有合作伙伴读取请求共享以下限制:
| 窗口 | 请求数 | 重置时间 |
|---|---|---|
| 分钟 | 300 | 下一个固定分钟边界 |
| 日 | 50,000 | UTC 00:00 |
两项限制均按合作伙伴计算,汇总其全部密钥、端点、IP 地址和应用实例。这是固定窗口限制,不保证每秒可用请求数。申请替换密钥不会重置任何计数器。
每个到达合作伙伴限流器的已授权读取请求,都会在路由前消耗共享配额。HEAD 也计数,后续参数错误、404 或端点拒绝不会返还配额。浏览器 OPTIONS 预检不消耗该认证读取配额。
此外还有端点/IP 限制及边缘防护。密钥查询与浏览器预检另有每 IP、每应用实例每分钟 600 次的限制。因此即使伙伴配额未耗尽,也可能收到 429;配额不是容量预留。密钥或限流服务不可用时会拒绝请求,而不是放开无限访问。
重试策略
跳转到“重试策略”遇到 429 时,遵守 Retry-After(秒,若存在)。合作伙伴配额拒绝会携带该头。至少等待指定时长,并增加随机抖动,避免同步重试。端点或上游拒绝可能有不同错误码,也可能不含该头,此时使用有上限的指数退避。
尚未开放的端点: 发现、持币人、发行活动、池概况、K 线及成交记录目前因发行平台索引未启用而返回 503。即使响应包含 Retry-After,也不要在宣布开放前轮询这些端点。现在可阅读其接口约定及示例。
临时 502 或 503 也应遵守存在的 Retry-After。限制重试次数,持续失败后展示不可用状态。不要紧密循环重试 400、401、403、404 或 405;先修正请求、密钥、来源或可用性问题。
function retryDelayMs(response, attempt) { if (![429, 502, 503].includes(response.status)) return null; if (attempt >= 3) return null; const value = response.headers.get('retry-after'); const seconds = value !== null && /^\d+$/.test(value) ? Number(value) : null; const base = seconds !== null ? seconds * 1000 : Math.min(30_000, 1000 * 2 ** attempt); return base + Math.floor(Math.random() * 1000);}使用返回的延迟安排后续请求。每日配额等待可能长达数小时,不要让面向用户的 HTTP 请求一直保持连接。复用近期数据时标注新鲜度,合并支持批量的价格查询,并在后端合并并发的相同请求。剩余配额和重置响应头不属于本 API 约定。
认证与配额错误
跳转到“认证与配额错误”合作伙伴访问错误采用以下 JSON 结构:
{ "error": { "code": "partner_key_invalid", "message": "A valid partner API key is required." }}| HTTP 状态 | 错误码 | 处理方式 |
|---|---|---|
401 |
partner_key_invalid |
检查完整密钥及请求头。密钥可能格式错误、未知或已撤销;联系 Blast 更换。 |
403 |
partner_read_forbidden |
使用只读参考列出的端点。 |
403 |
partner_origin_forbidden |
请 Blast 登记精确的浏览器来源,并使用对应伙伴的密钥。检查预检请求头。 |
405 |
partner_read_only |
使用 GET 或 HEAD。 |
429 |
partner_rate_limited |
已达到伙伴配额或密钥查询 IP 限制。遵守 Retry-After。 |
503 |
partner_api_unavailable |
密钥验证或限流存储不可用,稍后重试。 |
缺少伙伴请求头时会走网站普通访问规则,可能返回另一种 401 错误码。每次 API 调用都应发送该头。HEAD 响应和浏览器拦截的 CORS 失败不会暴露 JSON 错误正文。
端点错误与不可用数据
跳转到“端点错误与不可用数据”端点保留自身错误码,包括 invalid_parameter、not_found、rate_limited 和 service_unavailable。发行平台还可能使用 LAUNCHPAD_QUERY_INVALID 或 LAUNCHPAD_RATE_LIMITED 等错误码。先处理 HTTP 状态,再据错误码提供更具体的信息。
即使密钥有效,未知资源或不支持的交易平台/路由组合仍可能返回 404。请检查资源 ID 和支持的路由。合作伙伴读取权限与前端是否开放无关;无效或已撤销密钥返回 401。
发现和搜索还会在 section 对象内表达失败。200 搜索响应可包含不可用分组,同时其他分组可读。应按各分区状态渲染,不要将不可用数据替换为空列表或零。503 可能包含分区,而非上述错误结构。