文档目录
TROUBLESHOOTING

从状态码定位问题

先确认请求是否完整到达,再区分鉴权、权限、限流和上游错误。下面的顺序可以减少无效重试,也更容易保留诊断证据。

适用:Responses / Chat Completions / Codex不要在日志中输出完整 API Key

五步快速检查

确认 Base URL

应为 https://www.tokensupply.net/v1,避免重复拼出 /v1/v1

确认 API Key

使用 Bearer 请求头,检查 Key 是否启用、是否过期及是否分配了分组。

查询模型列表

用同一枚 Key 调用 GET /v1/models,并原样使用返回的模型 ID。

缩小请求

用最短非流式请求排除工具调用、长上下文和客户端流处理问题。

记录诊断信息

保存发生时间、HTTP 状态码、响应错误和请求标识;密钥只保留末四位。

常见 HTTP 状态码

400请求无效检查 JSON、必填的 modelstream 类型和请求体是否被中途截断。
401鉴权失败确认 Bearer Key 正确、完整且仍然有效。不要用 URL 查询参数传 Key。
403权限或余额检查余额、Key 分组、模型权限、Key 状态和分组限制;不要把所有 403 都当成密钥错误。
426需要升级协议请求进入 WebSocket GET 入口但未 Upgrade。普通调用改用 POST,或关闭客户端 WebSocket。
429限流或容量尊重服务返回的等待信息,使用指数退避和随机抖动;不要立即并发重试。
5xx服务或上游异常短暂等待后有限重试。持续出现时保留请求标识、时间和模型,交给支持人员定位。

请求体读取或解析失败

Failed to read request body

服务没有读到一个完整请求体。常见原因是客户端主动取消、网络中断、代理提前关闭上传连接,或发送内容超过服务允许的大小。这与 JSON 语法错误不是同一件事。

Request body is empty

请求没有正文。确认请求方法是 POST、请求库确实写入 body,并设置了 Content-Type: application/json

Failed to parse request body

正文已到达,但不是有效 JSON。重点检查尾随逗号、引号、转义字符,以及命令行 shell 对 JSON 的二次解析。

先用最小 cURL 验证如果最小请求成功,故障通常在原客户端、代理、请求生成或超时配置,而不是 API Key 与模型本身。

流式输出中断

  • 确保代理没有缓冲 SSE,并允许足够长的读取时间。
  • 客户端应持续消费响应;暂停读取可能产生背压或触发超时。
  • 用户主动停止生成会取消请求,服务端可能记录 context canceled,这通常不是平台故障。
  • 在收到首个流事件后,后续错误可能位于事件流内;不要只检查初始 HTTP 200。

若流式失败但非流式成功,先检查客户端事件解析、代理缓冲和超时。不要用无限重试掩盖持续性错误。

安全重试策略

错误类型是否重试建议
400 / 401 / 403 / 426修正后再试配置或请求不会因等待而自行恢复,直接重复只会制造更多失败。
429可以指数退避并加入随机抖动,限制总次数和并发量。
502 / 503 / 504可以仅对可安全重复的请求进行有限重试,并保留最终错误。
流已输出部分内容谨慎重试可能产生重复输出或重复副作用,需要由业务层去重。
不要重试所有错误鉴权、余额、模型权限和无效 JSON 必须先修正。对这些错误自动重试会放大负载,也可能触发额外限制。

提交有效的故障信息

联系支持时提供:发生时间和时区、接口路径、模型 ID、HTTP 状态码、完整错误文本、客户端名称与版本,以及请求标识。API Key 仅提供末四位,输入内容先删除敏感数据。

绝不发送完整密钥聊天记录、截图和工单都不是存放 API Key 的位置。怀疑泄露时立即禁用旧 Key 并创建新 Key。