错误响应格式
所有错误返回一致的 JSON 格式,并可选包含 Agent-First hints:message, type, code, param)始终存在。提示字段(did_you_mean, suggestions, hint, retryable, retry_after, balance_usd, estimated_cost_usd)是用于 AI agent 自我纠正的可选扩展。详情见 Agent-First API guide。
兼容 OpenAI 的端点使用 LemonData 的稳定网关错误类型。兼容 Anthropic 和 Gemini 的端点使用它们各自原生的错误类别和响应格式。
HTTP 状态码
| 代码 | 描述 |
|---|---|
| 400 | 错误请求 - 参数无效 |
| 401 | 未授权 - API key 无效或缺失 |
| 402 | 需要付款 - 余额不足 |
| 403 | 禁止 - 访问被拒或模型不允许 |
| 404 | 未找到 - 模型或资源未找到 |
| 413 | 负载过大 - 输入或文件大小超限 |
| 429 | 请求过多 - 超出速率限制 |
| 500 | 服务器内部错误 |
| 502 | 错误网关 - 上游提供商错误 |
| 503 | 服务不可用 - 服务暂时不可用 |
| 504 | 网关超时 - 请求超时 |
错误类型
认证错误 (401)
| 类型 | 代码 | 描述 |
|---|---|---|
invalid_api_key | invalid_api_key | API key 缺失或无效 |
expired_api_key | expired_api_key | API key 已被撤销 |
支付错误 (402)
| 类型 | 代码 | 描述 |
|---|---|---|
insufficient_balance | insufficient_balance | 账户余额过低(兼容 OpenAI 的端点) |
insufficient_balance_error | insufficient_balance | 账户余额过低(兼容 Anthropic 的端点) |
quota_exceeded | quota_exceeded | API key 使用限额已达 |
访问错误 (403)
| 类型 | 代码 | 描述 |
|---|---|---|
access_denied | access_denied | 访问资源被拒绝 |
access_denied | model_not_allowed | 该 API key 不允许使用此模型 |
验证错误 (400)
| 类型 | 描述 |
|---|---|
invalid_request_error | 请求参数无效 |
context_length_exceeded | 输入超出模型的上下文长度 |
model_not_found | 请求的模型在当前公共合约中不可用 |
model_not_found。
速率限制错误 (429)
当超过速率限制时:Retry-After 头和 retry_after 字段都指示在重试前应等待的确切秒数。
负载过大 (413)
当输入或文件大小超过限制时:- 图像文件过大(最大 20MB)
- 音频文件过大(最大 25MB)
- 输入文本超过模型上下文长度
上游错误 (502, 503)
| 类型 | 描述 |
|---|---|
upstream_error | 提供方返回错误 |
all_channels_failed | 没有可用的提供方 |
timeout_error | 请求超时 |
在 Python 中处理错误
在 JavaScript 中处理错误
最佳实践
实现指数退避
实现指数退避
当受到速率限制时,在重试之间逐步延长等待时间:
设置超时
设置超时
始终设置合理的超时时间以避免请求挂起:
记录错误以便调试
记录错误以便调试
记录完整的错误响应,包括请求 ID 以便支持:
处理模型特定错误
处理模型特定错误
一些模型有特定要求(例如,最大 tokens、图像格式)。在发起请求前验证输入。