Qoder Cloud Agents API 的统一错误信封格式、错误类型与排查实践。
Qoder Cloud Agents API 使用统一的错误信封格式返回所有错误。每个错误响应包含结构化信息,便于程序化处理和问题排查。
所有错误响应遵循以下 JSON 结构:
请求格式或参数不合法。
常见触发场景:
身份认证失败。
常见触发场景:
认证通过但权限不足。
常见触发场景:
目标资源不存在。
常见触发场景:
资源状态冲突,操作无法执行。
常见触发场景:
服务端内部错误。
常见触发场景:
错误信封格式
所有错误响应遵循以下 JSON 结构:
字段说明
| 字段 | 类型 | 必有 | 说明 |
|---|---|---|---|
type | string | 是 | 固定为 "error" |
request_id | string | 是 | 来自 x-request-id 的请求关联 ID;未传入时为服务端生成的 UUID |
error.type | string | 是 | 错误类型标识 |
error.message | string | 是 | 人类可读的错误描述 |
error.param | string | 否 | 触发错误的请求参数名 |
错误类型一览
| HTTP 状态码 | error.type | 说明 |
|---|---|---|
| 400 | invalid_request_error | 请求参数无效或缺失 |
| 401 | authentication_error | 认证失败,令牌无效或缺失 |
| 403 | permission_error | 认证成功但无权操作目标资源 |
| 404 | not_found_error | 目标资源不存在 |
| 409 | conflict_error | 资源状态冲突(如重复创建) |
| 500 | api_error | 服务端内部错误 |
各错误类型详解
400 — invalid_request_error
请求格式或参数不合法。
常见触发场景:
- 缺少必需字段(如
name) - 字段值类型错误(如
string传了number) - 请求体超过 4MB 大小限制
- JSON 格式错误
401 — authentication_error
身份认证失败。
常见触发场景:
- 未提供
Authorization头 - PAT 或 SAT 格式错误
- PAT 已过期或被撤销,或 SAT 已过期
- 使用了
x-api-key而非 Bearer Token
403 — permission_error
认证通过但权限不足。
常见触发场景:
- PAT 或 SAT 无权访问目标 Agent(属于其他用户/组织)
- PAT 或 SAT 权限范围不覆盖当前操作
- 尝试操作已归档且锁定的资源
404 — not_found_error
目标资源不存在。
常见触发场景:
- Agent/Session/Environment ID 不存在
- 资源已被删除
- URL 路径拼写错误
409 — conflict_error
资源状态冲突,操作无法执行。
常见触发场景:
- 使用相同幂等键但不同请求体重复请求
- 在已终止的 Session 上继续操作
- 重复创建同名唯一资源
500 — api_error
服务端内部错误。
常见触发场景:
- 服务暂时不可用
- 内部组件异常
- 数据库连接超时
遇到 500 错误时,建议使用指数退避策略重试(等待 1s → 2s → 4s)。
错误处理最佳实践
- 解析
error.type用于程序化判断,而非 HTTP 状态码 - 记录
request_id和error.message用于日志排查 - 如果存在,检查
error.param快速定位问题字段 - 4xx 错误不要重试(除非修改了请求参数)
- 5xx 错误使用退避重试(最多 3 次)