当你将 请求结构问题、认证问题、路径错误 和 可重试的平台故障 分开处理时,CometAPI 错误处理会变得最简单。结合 HTTP 状态码、Documentation Index
Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
Use this file to discover all available pages before exploring further.
error.code 和 error.message 来判断是修复请求还是重试请求。
快速分诊
| Status | 它通常表示什么 | Retry? | 首个操作 |
|---|---|---|---|
400 | 请求在被正常处理之前未通过验证。 | 否 | 验证 model、messages、JSON 结构和字段类型。 |
401 | API key 缺失、格式错误或无效。 | 否 | 检查 Authorization: Bearer <COMETAPI_KEY>。 |
403 | 访问被阻止,或当前请求不被允许。 | 通常否 | 使用一个已知正常的请求重试,并先移除特定于模型的字段。 |
| Path mistake | base URL 错误或 endpoint 路径错误。在 Comet 上,这可能表现为 301 重定向或 HTML,而不是干净的 JSON 404。 | 否 | 精确使用 https://api.cometapi.com/v1,并在调试时禁用自动跟随重定向。 |
429 | 速率限制或临时饱和。 | 是 | 使用带抖动的指数退避。 |
500 with error.code: invalid_request | 格式错误的请求通过服务器状态响应暴露出来。 | 否 | 在重试前修复请求体。 |
500, 503, 504, 524 | 平台、提供商或超时类故障。 | 是 | 使用退避重试,并保留 request id。 |
错误封装
许多 CometAPI 失败响应会使用如下错误体:code 留空。当状态码是 500 时,将 error.code 和 error.message 作为判断依据。
400 Bad Request
400 通常表示请求体在请求能够被正常处理之前未通过验证。
常见原因:
- 缺少必填字段,例如
model - JSON 结构无效
- 发送了类型错误的字段
- 复用了所选 endpoint 不接受的提供商特定参数
your-model-id 替换为 CometAPI Models page 中任意当前可用的 model ID。
不要假设每个格式错误的聊天请求都会返回 400。缺少必填聊天字段(例如 messages)也可能表现为 500,同时带有 error.code: invalid_request。
500 Internal Server Error
大多数 500 响应表示平台或提供商故障。对于聊天补全,一些格式错误的请求也可能表现为 500,但仍携带 error.code: invalid_request。
一个示例是省略了 messages 的请求:
500 响应带有 error.code: invalid_request,应将其视为请求问题:
- 修复请求体。
- 将 payload 与 endpoint schema 进行对比。
- 仅在更正 payload 后再重试。
500 响应未指向无效请求,请保留 request id 并使用退避重试。
401 Invalid Token
Token 失效通常会表现为如下形式:
- 请求头必须严格为
Authorization: Bearer <COMETAPI_KEY>。 - 确保你的应用没有从
.env、shell 历史记录或已部署的密钥存储中加载旧的 key。 - 如果同一个请求中某个 key 失败而另一个 key 可以正常工作,应将其视为 token 问题,而不是 endpoint 问题。
403 Forbidden
403 最常见于以下几种情况:
- 请求被平台侧规则拦截,例如 WAF 过滤
- 该 token 或路由无权使用所请求的模型或请求格式
- 所选模型拒绝了你传入的某个高级参数
- 使用一个已知可用的模型,发送一个非常简单的纯文本请求重试。
- 移除高级字段和 provider 专属参数,然后逐步加回。
- 如果响应中包含 request id,在联系支持前请先保留它。
错误的 base URL 或错误的路径
在 Comet 上,路径错误可能表现为:- 重定向
- 如果客户端会跟随重定向,则返回非 JSON 的 HTML 响应
- SDK 内部出现解析错误
- 请求始终无法正常到达 API 层
- 确认 base URL 包含
/v1。 - 确认 endpoint 路径与文档完全一致。
- 在调试路径问题时,禁用自动跟随重定向。
413 Request Entity Too Large
如果你看到 413,应首先将其视为请求大小问题。常见原因包括:
- 较大的 base64 负载
- 内联嵌入的超大图片或音频
- 非常大的 multipart 或 JSON 请求体
- 减小或压缩附加内容。
- 将大型任务拆分成更小的请求。
- 不要假设只有纯文本长度才会导致该问题。
429 Too Many Requests
应将 429 视为可重试错误:
- 使用带抖动的指数退避。
- 降低突发并发量。
- 保持请求日志开启,以便查看是哪个路由和模型最先达到饱和。
503、504 和 524
这些状态码属于服务端或超时类故障。
实用说明:
503:路由或 provider 服务暂时不可用504和524:平台、边缘层或 provider 服务之间的超时类故障
- 使用退避策略重试。
- 保留
request id、endpoint、model 和时间戳。 - 如果同样的故障在多次重试中持续出现,请携带这些上下文信息联系支持。
联系支持之前
请先收集以下信息:- HTTP 方法
- 端点路径
- 模型 ID
- 脱敏后的请求 body JSON(对于大多数 API 调用,这是最有帮助的一项)
- 如果失败的请求使用了查询参数,请一并提供
- 如果你的客户端捕获到了,提供精确的响应 body
- 完整的 HTTP 状态码
- 精确的
error.message - 任何
request id - 大致时间戳
- 同一个请求是否能在另一个模型或另一个 token 下正常工作
- 你随文件一同提交的字段名和文本值
- 文件名、文件类型和大致文件大小
- 文件是直接上传、通过 URL 引用,还是以 base64 嵌入