错误参考

查询各服务返回的错误码、机器可读reason与重试策略,覆盖JSON-RPC与Data API等全部服务;被拒绝的调用不计费,响应中的docs_url会指向本页稳定锚点,完整错误目录可从/errors.json读取。

本参考文档收录 BlockVectra 服务的完整错误码与机器可读原因码(reason),明确标示被拒绝调用的计费规则、重试策略、退避时间以及面向 AI Agent 与自动化客户端的建议处理动作。

如需机器读取,可通过 /errors.json 获取完整的 JSON 格式错误目录。错误响应中携带的 docs_url 直接链接到本页面的稳定锚点:https://docs.blockvectra.com/en/errors/#<reason>(无 reason 的错误使用错误码锚点,如 #<code-number>)。

JSON-RPC 错误

HTTP错误码原因码含义是否计费能否重试等待时间(Retry-After)Agent 建议动作
401-32024missing_api_key请求缺少 API key,未在请求路径或请求头中提供否否—JSON-RPC 接口(/v1/{chain})在请求路径(/v1/{chain}/<api_key>)或 x-api-key 请求头中传入 API key;Data API(/v1/data/*)与充值接口(/v1/topup/*)仅接受 x-api-key 请求头。
401-32024invalid_api_keyAPI key 未知、已停用或已吊销:JSON-RPC 与 Data API 均返回 HTTP 401 和 invalid_api_key 错误信封(JSON-RPC:error.code 为 -32024、error.data.reason 为 invalid_api_key;Data API:error.code 与 error.data.reason 均为 invalid_api_key)。否否—检查 key,必要时在控制台或用程序化开户重新登录建新 key(链接「会话或 key 丢了怎么办」小节)。
403-32025key_expiredAPI key 的有效期已过;需在控制台创建新 key否否—API key 已到期;在控制台或通过程序化开户创建新 key。
403-32025key_cap_exhaustedAPI key 的终身 CU 限额(创建时在 cu_cap 中设置)已用尽;需在控制台创建新 key否否—API key 终身 CU 上限已耗尽;在控制台或通过程序化开户创建新 key。
503-32021auth_unavailable服务端临时无法校验 key,不是你的 key 有问题否是遵循 Retry-After 响应头(秒)服务端临时无法校验 key,不是你的 key 有问题;可重试,按 Retry-After 等待后重试,不要因此重建 key。
404-32600unknown_chain请求的链标识不存在或不受支持否否—通过 GET /v1/chains 或 list_chains 工具获取受支持的链列表,核对 URL 路径中的链名。
404unknown_endpointunknown_endpointData API 请求方法与路径不匹配任何已知操作否否—核对请求方法与 URL 路径是否符合 Data API 文档要求。
200-32700parse_errorJSON 解析错误,请求体不是合法的 JSON 语法否否—核实请求体为合法的 JSON 语法后再发送。
200-32600invalid_requestJSON-RPC 请求格式不合法、成员名存在二义性或不是合法的对象/数组否否—检查请求体结构;修正 jsonrpc: '2.0'、id 与 method 字段后再发送。
200-32602invalid_params方法参数不合法(如不支持的 tracer 或超时时间超限)否否—调整方法参数;核对该链支持的 tracer 列表与超时限制。
200-32602logs_range_too_largeeth_getLogs 查询的区块跨度超过该链允许的上限否否—缩窄日志查询的区块范围至 GET /v1/chains 中的 max_logs_block_range 上限以内。
429-32005public_rate_limit公开端点的请求频率超出上限否是遵循 Retry-After 响应头(秒)按 Retry-After 响应头等待后重试,或带上 API key 请求(免费获取)。
429-32005public_pool_busy公开端点暂时繁忙否是遵循 Retry-After 响应头或等待数秒后退避重试退避后重试,或带上 API key 请求(免费获取)。
200-32601method_not_public该方法不在公开端点支持的方法列表中否否—改用公开端点支持的方法,或带上 API key 请求(免费获取)。
200-32601method_not_allowed方法在该链上不可用或已被策略禁用否否—通过 GET /v1/chains 查询该链的 methods.allow 与 methods.deny 策略确认支持的方法。 哪些链不支持发送交易由 GET /v1/chains 的 methods.allow 决定。
200-32601subscription_not_available目标链不提供该 WebSocket 订阅否否—通过 GET /v1/chains 查看该链支持的 subscriptions 订阅类型。
200-32602logs_filter_requiredlogs 订阅须指定合约地址(address)或 topic0(topics 的第一个位置非空)否否—在 logs 过滤参数中指定 address 或非空的 topic0。
200-32600batch_too_large批量请求包含的调用数超过单批上限否否—将批量请求拆分为更小的批次,使单批调用数在上限以内。
413request_too_largerequest_too_largeData API 请求体大小超过上限否否—减小请求体体积后再发送。
200-32000not_found请求的交易、区块或资源不存在否否—若为刚广播的交易或最新出块,等待链同步后重试;否则核对区块号或哈希值。
200-32011state_window历史状态超出节点保留的最长区块窗口否否—仅查询 GET /v1/chains 中 state_window_blocks 范围内的区块,或改用 Data API 查询历史数据。
200-32011range_not_indexed请求的历史区间尚未完整索引否否—将历史查询缩小至已索引的区间,不要原样重试未覆盖的区间。
200-32011history_not_ready请求的近期历史数据尚未完成索引否是等待索引追上目标数据;若有 error.data.retry_after_seconds,按其等待等待索引追上后重试;若返回 error.data.retry_after_seconds,按指定秒数等待。
429-32005key_rate_limitAPI key 的计算单元(CU)速率上限超限否是遵循 Retry-After 响应头(秒)休眠 Retry-After 指定的秒数后重试,或平摊请求流量。
429rate_limitedrate_limited接口或 GET /v1/account 请求频率超限(GET /v1/account 每个 key 每秒最多 5 次请求)否是遵循 Retry-After 响应头(秒)休眠 Retry-After 指定的秒数后重试。
429-32005concurrency_limit在途并发请求数超过上限否是遵循 Retry-After 响应头或等待当前调用完成限制客户端并发池大小,等待已有请求完成。
429-32005free_plan_call_limit免费套餐每秒调用次数上限超限否是等待 1 秒后重试降低请求发送频率,或充值升级为付费账户解锁更高吞吐量。
429-32022request_exceeds_burst单次请求的 CU 权重超过单 key 突发上限容量否否—无需等待(等待不会成功);须拆解批量请求或降低方法参数以适应突发容量。
429-32022free_plan_batch_too_large单批调用数超过免费套餐每秒调用次数限制否否—无需等待;须将单批请求调用数拆小至免费套餐限额以内,或进行充值。
429-32005ws_connection_limit该 key 或账户的 WebSocket 连接数已达上限否否—关闭闲置的 WebSocket 连接或复用已有连接。
200-32022subscription_limit当前连接持有的订阅数(或 newHeads 订阅数)已达上限否否—退订不需要的现有订阅,或开启新的连接。
200-32005ws_filter_capacity日志过滤器容量已满否否—退订现有 logs 订阅或使用更窄的过滤规则。
200-32026ws_push_overloaded积压的推送通知过多,暂时无法接受新订阅否是使用退避稍后重试,或重新建立连接结合指数退避重试 eth_subscribe,或重新建立连接;已建立的订阅不受影响,继续接收通知。
200-32005overloaded服务暂时过载否是等待数秒并使用指数退避重试结合抖动进行退避后重试请求。
402-32020balance_exhausted账户余额不足或已耗尽;余额已知时 error.data 附带 balance_units 与 balance_cu否否—链上充值:在控制台或通过 `GET /v1/topup/deposit-address`(MCP 工具 `get_deposit_address`)获取充值地址,详见Agent 充值指南,或在控制台使用额度重置机会(如符合条件)。余额已知时 error.data 附带 balance_units(透支时可为负)与 balance_cu。
402-32020free_grant_exhausted免费套餐周期额度已耗尽;余额已知时 error.data 附带 balance_units 与 balance_cu否否—链上充值:在控制台或通过 `GET /v1/topup/deposit-address`(MCP 工具 `get_deposit_address`)获取充值地址,详见Agent 充值指南、在控制台使用额度重置机会,或等待下一个周期补足额度。余额已知时 error.data 附带 balance_units(透支时可为负)与 balance_cu。
503-32021billing_unavailable计费状态暂不可确认(新创建 key 正在同步或服务暂时繁忙)否是遵循 Retry-After 响应头(秒)非余额问题,新创建的 key 通常数秒内完成同步;按 Retry-After 等待后重试即可。
200-32010node_syncing底层链节点正在同步中,调用暂时不可用否是等待数秒后重试等待节点同步完成,或查询 GET /v1/status 查看状态。
200-32603upstream_unavailable底层链节点暂不可用、应答超时或返回畸形响应否是等待数秒后重试退避重试;可通过 GET /v1/status 查看节点健康度。
504504upstream_timeout底层数据服务未在时限内应答否是稍后重试结合指数退避稍后重试请求。
200-32000response_too_large底层节点返回的响应体超过服务端大小上限否否—缩窄查询范围(如缩小 eth_getLogs 区块区间或减少 trace 请求范围)。
200-32603internal_error处理请求时发生内部错误否否—稍后重试;若持续失败请记录时间并联系支持团队。
2004444—请求的区块已被底层节点裁剪否否—目标区块已超出节点的裁剪保留期,可改用 Data API 获取历史区块信息。
200-32000—底层节点历史状态不存在或数据已被裁剪否否—缩窄查询到状态窗口以内,或改用 Data API 查询历史数据。
200-32002—底层节点批量执行超时否是等待数秒后使用较小的批次重试减少单批调用数量后重试。
200-32003—底层节点批处理响应体过大否否—拆分批次以减小单个响应体大小。
200-32601—方法在该链上不可用或已被策略禁用否否—通过 GET /v1/chains 查询该链的 methods.allow 与 methods.deny 策略确认支持的方法。 哪些链不支持发送交易由 GET /v1/chains 的 methods.allow 决定。
200-32603—处理请求时发生内部错误否是稍后重试稍后重试;若持续失败请记录时间并联系支持团队。
200-32600—批量请求被底层节点整体放弃拒绝否否—检查批次中各调用的参数规范;拆分后重试。
200*—底层节点执行层返回的业务错误(如合约执行回滚 execution reverted、节点参数校验拒绝)是否—节点已执行计算并按方法权重计费。检查回滚原因或调用参数,切勿盲目原样重试。
408408—从收完请求头到返回响应超过 35 秒超时可能是读请求等待数秒后重试已转发给节点的调用在节点应答后照常计费。读请求可退避重试;写请求(如 eth_sendRawTransaction)须先按交易哈希查状态,切勿盲目重发。

WebSocket 关闭码

WebSocket 连接关闭码与客户端建议处理动作。

错误码原因码含义能否重试等待时间(Retry-After)Agent 建议动作
1001—连接空闲超时断开是根据需要重新连接根据需要重新连接。
1003—不支持二进制数据帧否—切勿盲目自动重连;仅发送 UTF-8 文本帧。
1009—单条请求消息体积超过 1 MiB 上限否—切勿盲目自动重连;拆分大请求以满足 1 MiB 限制。
1012—服务重启维护是退避后重新连接结合抖动退避重新建立连接,重新订阅并补全遗漏数据。
1013—目标链不可用或服务过载是使用指数退避后重新连接使用带抖动的全指数退避重新连接,重新订阅并回溯补全遗漏数据。
4402—账户余额不足否—切勿盲目自动重连;链上充值:在控制台或通过 `GET /v1/topup/deposit-address`(MCP 工具 `get_deposit_address`)获取充值地址,详见Agent 充值指南,或在控制台使用额度重置机会(如符合条件)。
4404—API key 无效、已停用或已吊销否—切勿盲目自动重连;在控制台核验或轮换 API key 后再连接。
4408—会话推送队列超过 512 KiB(524,288 字节)时服务端关闭连接并丢弃待发通知;客户端可能收不到关闭帧(浏览器报 1006),意外断开按 4408 处理。是退避重连,并减少订阅或加快读取意外断开(没收到关闭帧,浏览器报 1006)按 4408 处理:退避重连,并减少订阅或加快读取;重新建立订阅并通过 eth_getLogs 补全数据。
4429—推送消息速率超出上限是减少订阅或退避重连减少订阅数量或退避后重连。
4503—计费服务暂时不可用是使用指数退避后重新连接使用全抖动指数退避重新连接并重新订阅。

Data API 错误

区块链 Data API 端点(/v1/data/{chain}/)返回的结构化错误。

HTTP错误码原因码含义是否计费能否重试等待时间(Retry-After)Agent 建议动作
400bad_request—查询参数重复、查询字符串格式非法或请求格式错误否否—检查查询参数;确保 limit 等参数只出现一次,并核对参数格式。
409not_indexed_yet—请求的区块号或窗口超过 as_of_block,或哈希解析出的区块高于 as_of_block(除尚无区块的链外附带 indexed_through)否是等待数秒至 indexed_through 到达目标区块轮询等待至目标区块或 to_block 不高于 indexed_through,或等待该链开始写入区块。
409window_too_large—区块窗口跨度超过 100,000 块且未设置 clamp=true否否—缩窄区块区间至 100,000 块以内,或在查询参数中传入 clamp=true。
409too_many_pools—该代币命中的流动性池超过 200 个,须改按池维度查询否否—按具体的流动性池地址查询,而非按代币维度全量匹配。
409span_exceeded—请求的时间跨度超过 90 天上限否否—将 from_time 与 to_time 的时间跨度缩窄至 90 天以内。
422no_coverage—该链不支持该特性,或请求的区块早于历史覆盖起点否否—查询前查看 GET /v1/data/chains 的 `features` 与 `coverage.from_block`(或免费的 GET /v1/status 的 `data_features`)。
503unavailable—数据服务暂时不可用否是等待数秒并使用指数退避重试使用指数退避稍后重试。
402insufficient_balance—付费余额或免费额度已耗尽;余额已知时 error.data 附带 balance_units 与 balance_cu否否—链上充值:在控制台或通过 `GET /v1/topup/deposit-address`(MCP 工具 `get_deposit_address`)获取充值地址,详见Agent 充值指南,或等待免费额度补足。
429cost_exceeds_burst—单次请求的开销超过该 key 的突发容量否否—把请求拆小;原样重试永远不会成功。
503gateway_overloaded—Data API 当前可用容量不足否是Retry-After:1 秒降低本账户各 key、各链的并发请求数,按 Retry-After 等待后重试;error.data.reason 为 null。

控制台、账户与水龙头 API 错误

管理端点、认证接口与水龙头返回的错误。

HTTP错误码原因码含义是否计费能否重试等待时间(Retry-After)Agent 建议动作
409topup_disabled—充值暂停或当前没有可用的充值网络;新地址无法分配,但已分配的地址仍归该账户否否—通过 GET /v1/topup/status 查询充值状态;待充值服务恢复后重试。
503deposit_unavailable—暂时无法分配充值地址;按 Retry-After 响应头重试否是遵循 Retry-After 响应头(秒)并使用指数退避重试按 Retry-After 响应头时间重试,使用指数退避策略。
400invalid_requestinvalid_username用户名去除首尾空白后超过 64 个 Unicode 字符,或含控制字符(Cc)或孤立代理字符(Cs)否否—首尾空白会被去除,空结果按 null 处理;其他用户名最多 64 个 Unicode 字符,且不能含控制字符(Cc)或孤立代理字符(Cs)。
400invalid_requestexpires_at到期时刻不在未来或超过最长有效期否否—将 expires_at 设置为允许有效期内(默认 365 天)的未来 RFC 3339 时间戳,或使用 expires_in_secs。
400invalid_requestcu_capcu_cap 上限越界(须为 1–9007199254740991 的整数)否否—调整 cu_cap 为 1–9007199254740991 之间的整数,或不填表示不设终身 CU 上限。
400siwe_invalidexpired以太坊登录(SIWE)消息已过期或 nonce 已被使用否是立即获取新的 challenge 并在签名后提交重新调用 /v1/auth/siwe/challenge 获取新的 challenge,签名新消息后再登录。
400siwe_invalidchain_mismatchSIWE 消息中的 chainId 与服务端不匹配否否—在构造 SIWE 消息时使用 /v1/auth/siwe/challenge 返回的 chainId。
400siwe_invaliddomain_mismatchSIWE 消息中的 domain 与服务端主机名不匹配否否—确保 SIWE 消息中的 domain 与 uri 与 challenge 返回的主机名一致。
400siwe_invalidsignatureSIWE 签名验证失败否否—核实签名是否由消息中指定的以太坊地址对应的私钥签署。
409key_limit_reachedactive_keys未吊销且未过期的 API key 数量已达账户上限(包括已禁用的 key)否否—在创建新 key 之前,先在控制台或接口吊销一把闲置的 key。
409no_reset_availablenothing_to_reset当前余额已不低于重置目标;此次重置机会予以保留不消耗否否—当前无需重置;可在额度耗尽后再使用重置机会。
429rate_limiteddaily_creations单账户 24 小时新建 API key 数量达到上限否是遵循 Retry-After 响应头(秒)遵循 Retry-After 等待创建配额恢复;轮换同样消耗该配额。
429signup_rate_limitedper_ip当前 IP 网段的新开户配额已用尽否是遵循 Retry-After 响应头(秒)遵循 Retry-After 响应头等待后再尝试开户。
429signup_rate_limitedglobal全局新用户开户频率已达上限否是遵循 Retry-After 响应头(秒)遵循 Retry-After 响应头等待后再尝试开户。
400oauth_invalid—OAuth 授权参数错误,或回调的 state 未知、过期或已使用否是—重新从 /v1/auth/{provider}/start 发起授权流程。
400login_code_invalid—Login code 未知、过期、已被使用,或 PKCE verifier 不匹配否否—重新发起登录以获取新的 login code。
401unauthenticated—缺少会话凭证,或会话令牌无效、已过期或已被吊销;调用充值接口(/v1/topup/*)时,如果带了 Authorization 头但不是有效的控制台会话令牌,也会返回这个码否否—重新登录以获取新的 Bearer 会话令牌;调用充值接口时,改用 x-api-key 请求头传 API key。
403user_disabled—账户已被停用否否—联系 contact@blockvectra.com 获取账户支持。
404provider_disabled—该 OAuth 认证方式暂未开启否否—使用以太坊钱包登录(SIWE)或其他已启用的登录方式。
409identity_in_use—该身份(钱包地址或 OAuth 账号)已被其他账户绑定否否—从旧账户解绑该身份,或使用其他身份进行绑定。
409identity_limit_reached—该账户绑定的身份数量已达上限(5 个)否否—解绑不需要的旧身份后再绑定新身份。
409last_identity—不能解绑账户唯一的身份否否—先绑定其他身份,然后才能解绑当前身份。
409key_not_active—无法对已禁用、已吊销或已到期的 API key 进行轮换否否—创建新的 API key,或仅对处于 active 状态的 key 进行轮换。
409no_reset_available—当前账户没有可用的额度重置机会否否—链上充值:在控制台或通过 `GET /v1/topup/deposit-address`(MCP 工具 `get_deposit_address`)获取充值地址,详见Agent 充值指南,或等待后续活动周期。
413payload_too_large—请求体超过 64 KiB 大小上限否否—减小请求体体积,确保在 64 KiB 以内。
503signup_paused—全局新用户注册暂时熔断暂停,已有用户可照常登录否是稍后重试注册新用户注册暂时维护;请稍后再试,已有账户登录不受影响。
503usage_unavailable—用量统计服务暂时不可用(仅影响 /usage)否是等待数秒后重试仅影响 /usage 端点,其他接口正常可用;稍后重试查询用量即可。
500internal—服务端发生未预期的内部错误否是稍后重试使用指数退避稍后重试。
400invalid_addressinvalid_address收款地址格式或校验和无效否否—使用 0x 加 40 位十六进制字符,小写或符合 EIP-55 校验和;检查 data.field(/address)。
503faucet_emptyfaucet_empty水龙头余额不足以支付本次领取金额和交易手续费否是遵循 Retry-After 响应头(秒)按 Retry-After 等待后重试;未收到受理响应时,不要假定测试 ETH 已发放。
503service_unavailableservice_unavailable水龙头领取处理暂不可用,或上一笔领取尚无回执否是遵循 Retry-After 响应头(秒)按 Retry-After 等待后重试;未收到受理响应时,不要假定测试 ETH 已发放。

推送 API 错误

Webhook 订阅管理与事件历史接口(/v1/push/)返回的错误。

HTTP错误码原因码含义是否计费能否重试等待时间(Retry-After)Agent 建议动作
400invalid_request—请求字段、地址、分页或区块区间无效。否否—检查 data.field 与 data.invalid,修正请求。
401missing_api_key—缺少 x-api-key。否否—在 x-api-key 请求头中提供 API key。
401invalid_api_key—API key 未知、已停用或已吊销。否否—使用本账户有效的 key。
402insufficient_balance—事件历史查询余额或免费额度已耗尽。否否—查看 data.reason(balance_exhausted 或 free_grant_exhausted)及可用的 data.balance_units / data.balance_cu;通过 data.topup_url 或 data.deposit_address_url 充值。
403key_cap_exhausted—事件历史查询所用 API key 的 CU 总额度已耗尽。否否—查看 data.cu_cap,在控制台创建新 key。
403key_expired—API key 已过期。否否—使用本账户未过期的 key。
404not_found—路由、方法或订阅不存在。否否—检查路径、方法与订阅所属账户。
409limit_reached—账户订阅数或地址订阅对数达到上限。否否—查看 data.limit 与 data.max,减少订阅或地址。
413request_too_large—请求体超过端点限制。否否—拆分地址批次或缩小请求体。
422chain_not_available—链不可用于推送或未加入该订阅。否否—核对 GET /v1/push/chains 与订阅的 chains。
422chains_required—至少需要指定一条链。否否—提供非空 chains 对象;停止监听时使用 offline 状态。
422confirmations_out_of_range—确认数超出该链范围。否否—选择 data.min 到 data.max 范围内的 confirmations。
422destination_not_allowed—接收 URL 不符合要求。否否—检查 data.rule,使用端口 443 的 HTTPS 主机名,不含用户信息或 fragment。
422block_out_of_range—区块范围超出可重放或历史查询范围。否否—按 data.min_block 与 data.max_block 调整区块范围。
429cost_exceeds_burst—历史查询费用超过 key 的突发容量。否否—查看 data.reason(request_exceeds_burst)与 data.max,提高突发容量后再试;原样重试无效。
429rate_limited—管理接口或历史查询达到速率限制。否是等待 Retry-After 指定的秒数。历史查询查看 data.reason(key_rate_limit 或 free_plan_call_limit);等待 Retry-After 指定秒数并降低请求频率或并发。
500internal_error—服务发生异常。否否—保留 x-bv-request-id 并联系支持。
503auth_unavailable—API key 校验暂不可用。否是等待 Retry-After 指定的秒数。等待 Retry-After 指定秒数后重试。
503billing_unavailable—历史查询计费状态暂不可用。否是等待 Retry-After 指定的秒数。等待 Retry-After 指定秒数后重试。
503upstream_unavailable—推送服务暂不可达。否是等待 Retry-After 指定的秒数。等待 Retry-After 指定秒数后重试。
503service_unavailable—推送服务或地址容量暂不可用。否是等待 Retry-After 指定的秒数。等待 Retry-After 指定秒数后重试。

Webhook 订阅或重放错误参阅推送恢复指南。接收端先实现原始正文验签,稳定币收款示例提供事件去重、收款校验、缺口补扫与重组核对路径。计量方式见计费规则,连接型订阅的恢复见 WebSocket 重连。

遇到 logs_range_too_large 时,查看 eth_getLogs 方法参数,并按区块范围限制与分段查询指南缩小查询跨度。

Robinhood Chain 上的领取资格及共用错误码的处理方式,见测试网水龙头指南。

排查 eth_estimateGas 或 eth_call 的参数编码时,按 EIP-1474 的 value encoding 处理 Quantity 与 Data:大整数不要用 JavaScript Number 编码,不要 catch 后默认归零,先读取实际返回的 code、reason 及 HTTP status 再判断——invalid params 不应自动当作 slippage 或重试/退避条件。

最后更新: