API 错误参考
本指南记录了 TeamDay API 的所有错误代码、响应格式和故障排除步骤。
错误响应格式
所有 API 错误都遵循一致的 JSON 结构:
{
"error": true,
"statusCode": 400,
"statusMessage": "Bad Request",
"message": "Detailed error description"
}
字段:
error(boolean) - 错误响应时始终为truestatusCode(number) - HTTP 状态代码statusMessage(string) - 人类可读的状态message(string) - 详细的错误说明
HTTP 状态代码
2xx 成功
这些不是错误,而是成功响应:
200 OK
含义: 请求成功
用于:
- GET 请求(列表、获取详情)
- PATCH 请求(更新)
- DELETE 请求(软删除)
- POST 请求(取消执行)
201 Created
含义: 资源成功创建
用于:
- POST 请求(创建代理、任务)
4xx 客户端错误
这些错误指示请求有问题。
400 Bad Request
含义: 无效的请求参数或缺少必需字段
常见原因:
- 缺少必需字段
- 字段值无效
- JSON 格式错误
- 查询参数无效
401 Unauthorized
含义: 身份验证失败或缺失
常见原因:
- 缺少
Authorization标头 - 无效令牌
- 令牌过期
- 令牌格式不正确
403 Forbidden
含义: 已认证但对此操作未授权
常见原因:
- 用户缺少所需权限
- 组织访问被撤销
- 资源属于其他组织
404 Not Found
含义: 资源不存在
常见原因:
- 资源 ID 无效
- 资源已删除
- 资源属于其他组织
- 端点 URL 中有拼写错误
429 Too Many Requests
含义: 超出速率限制
状态: 当前未强制执行,但将来可能实施
500 Internal Server Error
含义: 意外服务器错误
常见原因:
- 数据库连接问题
- 服务依赖失败
- 未处理的异常
- 配置错误
503 Service Unavailable
含义: 服务暂时不可用
常见原因:
- 计划维护
- 系统过载
- 依赖服务宕机
错误处理最佳实践
1. 总是检查状态代码
const response = await fetch('https://us.teamday.ai/api/v1/agents', {
headers: {
'Authorization': `Bearer ${token}`
}
})
if (!response.ok) {
const error = await response.json()
console.error(`API Error ${error.statusCode}: ${error.message}`)
}
2. 处理特定错误情况
async function handleApiError(response) {
const error = await response.json()
switch (error.statusCode) {
case 400:
// 验证错误
console.error('Invalid request:', error.message)
break
case 401:
// 认证错误
console.error('Authentication failed:', error.message)
break
case 404:
// 未找到
console.error('Resource not found:', error.message)
break
case 500:
// 服务器错误
console.error('Server error:', error.message)
break
}
}
3. 实现重试逻辑
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(url, options)
if (response.ok) {
return await response.json()
}
const error = await response.json()
// 不重试客户端错误 (4xx)
if (error.statusCode >= 400 && error.statusCode < 500) {
throw new Error(error.message)
}
// 使用指数退避重试服务器错误 (5xx)
if (i < maxRetries - 1) {
const delay = Math.pow(2, i) * 1000
await new Promise(resolve => setTimeout(resolve, delay))
continue
}
throw new Error(error.message)
} catch (err) {
if (i === maxRetries - 1) throw err
}
}
}
获取帮助
文档:
需要帮助?
最后更新: 2025 年 12 月 9 日