SuperouteSuperoute超级路由中转站·“怎么选都合适!”
邀请返现
SuperRoute / Docs

SuperRoute API 调用出问题了?来这里看常见原因和解决方案

v1.0

报错与踩坑

调用出问题了?来这里看最常见的报错原因和怎么解决。

常见踩坑速查(按场景)

场景看到的现象原因修复
协议不匹配404 model_not_found
或 401 invalid_api_key
使用的 API Key 与请求协议或平台分配不匹配查看 [模型列表 → 模型接入要点](/docs/models#模型接入要点速查表),按控制台为该 Key 提供的协议配置
Base URL 写错401 / 404 / Connection errorBase URL 不是 https://api.superoute.uk,或把完整接口路径错误地重复拼接SDK、工具配置统一填写 https://api.superoute.uk;直接 HTTP 请求再使用对应完整接口路径
Key 复制错401 invalid_api_keyKey 多空格、少了字符、被禁用在控制台禁用旧 Key,建新 Key
Key 协议错401 invalid_api_key使用的 API Key 与所调用的协议或平台分配不匹配;不能仅根据 Key 的字符串前缀判断使用 SuperRoute 控制台实际生成的 API Key,并按照平台为该 Key 提供的协议配置
模型名拼错404 model_not_found大小写、空格、错协议复制 [模型列表](/docs/models) 里的完整模型名
意图跨协议调模型404 model_not_found使用某个 API Key 调用了该 Key 不支持的协议或模型按平台为该 Key 提供的协议使用对应模型和接口,不能仅凭 Key 前缀判断
限速触发429 rate_limit_exceeded并发超出档位上限实现指数退避,或升档位(fast / full 配额更高)
余额不足403 insufficient_quota账户余额 = 0充值
Prompt 缓存没命中usage 没显示 cache_read 部分没用 cache_control 标记,或 prompt 内容已变见 Prompt Caching
外接工具 403403 block / 403 Forbidden缺 User-Agent Header见 [User-Agent 说明](/docs/ai-coding-tools#外接调用-user-agent-说明)
流式卡死流中断无报错用了非流式 SDK / 没设超时换流式 SDK,加 client timeout

错误响应格式

所有错误都遵循 OpenAI 风格 响应(即使调用的是 Anthropic 协议):

{
  "error": {
    "message": "Invalid API key provided: <控制台生成的 API Key>",
    "type": "invalid_request_error",
    "code": "invalid_api_key",
    "param": null
  }
}
字段说明
message人类可读的错误描述
type错误大类
code错误具体码(用于程序判断)
param出错的参数名(如果有)

HTTP 状态码速查

4xx 客户端错误

HTTPcodetype含义
400invalid_request_errorinvalid_request_error请求参数错误
400context_length_exceededinvalid_request_error输入超过模型上下文窗口
400invalid_jsoninvalid_request_error请求体不是合法 JSON
401invalid_api_keyauthentication_errorAPI Key 无效或被禁用
401missing_api_keyauthentication_error缺少鉴权头
403insufficient_quotapermission_error余额不足
403key_disabledpermission_errorKey 已被禁用
403tier_mismatchpermission_errorKey 协议与请求不匹配
403model_not_allowedpermission_error当前档位不支持该模型
404model_not_foundnot_found_error模型不存在
404endpoint_not_foundnot_found_error接口路径不存在
413request_too_largeinvalid_request_error请求体过大
429rate_limit_exceededrate_limit_error触发限速

5xx 服务端错误

HTTPcodetype含义
500server_errorserver_errorSuperRoute 内部错误
502upstream_bad_gatewayupstream_error上游网关错误
503upstream_unavailableupstream_error上游服务不可用
504upstream_timeoutupstream_error上游响应超时
529overloadedupstream_error上游过载

详细排查

400 - invalid_request_error

常见原因+
  • 参数名拼写错误(如 max_token 应为 max_tokens)
  • 参数类型错误(如传字符串给 temperature)
  • 必填参数缺失(如 model、messages)
  • 参数值超出范围(如 temperature: 5)
  • 枚举值错误(如 tool_choice: "always" 应为 auto / none / required)
排查步骤+
  1. 仔细阅读 error.message,通常会指出哪个参数有问题
  2. 对照 Chat Completions 参数表 或 Messages 参数表
  3. 用 json.loads() 在客户端打印请求体,确认序列化正确
  4. 用 curl 重试,排除 SDK 封装问题
代码示例:捕获并打印+
from openai import BadRequestError
try:
    response = client.chat.completions.create(...)
except BadRequestError as e:
    print(f"参数错误: {e.message}")
    print(f"出错参数: {e.param}")
import anthropic
try:
    message = client.messages.create(...)
except anthropic.BadRequestError as e:
    print(f"参数错误: {e.message}")

400 - context_length_exceeded

说明+

输入 prompt 的 token 数超过模型的最大上下文窗口。

解决方案+
  1. 精简 prompt:删除冗余历史、压缩上下文
  2. 分块处理:长文档分多次输入
  3. 换模型:用长上下文模型(如 Claude Sonnet 5 1M、GPT-5.6 Terra 1.05M)
  4. 使用 Prompt 缓存:Anthropic 支持,可降低重复输入成本

401 - invalid_api_key / missing_api_key

常见原因+
  • Key 字符串复制时多了空格 / 少了字符
  • Key 已被禁用(在控制台「接口密钥」页面停用了)
  • Key 已删除
  • 鉴权头格式错误(Authorization: <API Key> 漏了 Bearer 前缀)
  • 协议不匹配:使用的 API Key 与请求协议不匹配(请以控制台为该 Key 提供的协议配置为准)
排查步骤+
  1. 打印实际的鉴权 Header,确认完整且格式正确
  2. 在控制台「接口密钥」页面确认 Key 状态为「启用」
  3. 测试时临时新建一个 Key,排除污染因素
  4. 按 SuperRoute 控制台为该 Key 提供的协议配置客户端,不要根据 Key 的固定前缀判断协议

403 - insufficient_quota

解决方案+
  1. 立即充值(superoute.uk/billing)
  2. 充值后无需等待,秒级恢复

403 - key_disabled

原因+

Key 已被管理员或用户主动禁用。

解决方案+
  1. 在控制台「接口密钥」重新启用该 Key
  2. 如 Key 已泄露,立即创建新 Key 并禁用旧 Key

403 - tier_mismatch

原因+

Key 绑定的协议与请求协议不匹配。请使用 SuperRoute 控制台为该 Key 提供的协议配置客户端;Key 的具体字符串格式(例如 sk_test_822f61571c0a4c608e88af5985ddd7fa)不能单独用来判断协议。

  • 对应 OpenAI 兼容协议时调用 /v1/chat/completions
  • 对应 Anthropic 协议时调用 /v1/messages
解决方案+

使用与请求协议匹配的配置。API Key 请从 SuperRoute 控制台生成并以平台实际分配的协议为准。


403 - model_not_allowed

原因+

当前 Key 绑定的档位不支持该模型。 例如:某些限量模型可能只对 🚀 full 档位开放。

解决方案+

查看 [模型列表](/docs/models),确认该模型在你当前档位下可用。 如需使用,创建一个绑定到合适档位的 Key。


404 - model_not_found

常见原因+
  • 模型名拼写错误(如 gpt-5-5-luna 应为 gpt-5-6-luna)
  • 模型名大小写错误(一般不敏感,但建议统一用官方小写)
  • 模型已下线(查看 [更新日志](/docs/new-document))
解决方案+

对照 [模型列表](/docs/models) 修正模型名。


413 - request_too_large

说明+

请求体超过了单次请求的体积限制(默认 20MB)。 通常由 base64 编码的大图片或大批量消息引起。

解决方案+
  1. 图片:压缩后再上传,或使用 URL 引用
  2. 消息:分批发送,或先做总结压缩
  3. 联系商务提升单请求体积限制

429 - rate_limit_exceeded

说明+

触发了限速。响应头会包含限速信息:

X-RateLimit-Limit-Requests: 500
X-RateLimit-Remaining-Requests: 0
X-RateLimit-Reset-Requests: 23s
解决方案+
  1. 实现指数退避:
    import time, random
    for attempt in range(5):
        try:
            resp = client.chat.completions.create(...)
            break
        except RateLimitError:
            wait = (2 ** attempt) + random.random()
            time.sleep(wait)
    
  2. 降低并发:使用 semaphore 控制并发数
  3. 升级档位:fast / full 档位的限速更高
  4. 多 Key 分流:创建多个 Key 轮询使用

500 - server_error

说明+

SuperRoute 平台内部错误。 会自动重试 1 次(仅 stable / full 档位)。

解决方案+
  1. 客户端实现重试(fast 档不会自动重试)
  2. 持续失败请提工单,附上请求 ID(从响应头 X-Request-Id 获取)

502 / 503 / 504 - upstream_*

说明+

上游模型服务方出现故障。 会自动重试 1 次(仅 stable / full 档位)。

解决方案+
  1. 等几分钟重试
  2. 加入 QQ 群(见文档底部)查看最新故障通知
  3. 客户端实现退避重试

529 - overloaded

说明+

上游过载。会自动重试。

解决方案+
  1. 客户端实现指数退避
  2. 错峰使用
  3. 如长期过载,可考虑降级到 fast 档(fast 档走不同通道池)

响应头说明

响应头含义
X-Request-Id本次请求的唯一 ID,排查问题时必填
X-RateLimit-Limit-Requests每分钟请求数上限
X-RateLimit-Remaining-Requests当前剩余请求数
X-RateLimit-Reset-Requests限速重置时间(秒)
X-RateLimit-Limit-Tokens每分钟 token 数上限
X-RateLimit-Remaining-Tokens当前剩余 token 数
X-Cache-HitPrompt 缓存是否命中(Anthropic only)

客户端最佳实践

import time
import random
from openai import (
    APIConnectionError,
    APITimeoutError,
    RateLimitError,
    APIStatusError,
    BadRequestError,
)

def call_with_retry(client, max_retries=3, **kwargs):
    """通用重试封装"""
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(**kwargs)
        except BadRequestError:
            # 400 不重试,参数错误
            raise
        except RateLimitError as e:
            # 429 退避后重试
            wait = (2 ** attempt) + random.random()
            print(f"429 hit, retry in {wait:.1f}s")
            time.sleep(wait)
        except (APIConnectionError, APITimeoutError, APIStatusError) as e:
            # 5xx 重试
            if attempt < max_retries - 1:
                time.sleep(2 ** attempt)
                continue
            raise
    raise Exception("Max retries exceeded")

上报问题

持续无法解决的问题?👉 加入 QQ 群(见文档底部),带上 X-Request-Id 和复现步骤