开放平台 API 错误与限制
开放平台 API 的错误响应体与模型接口不同:结果由 HTTP 状态码表达,JSON 响应体固定包含 success,失败时另带机器可读的 code。
成功时返回 HTTP 200:
{ "success": true, "message": "", "data": {}}失败时使用真实的 HTTP 状态码,响应体带机器可读的 code:
{ "success": false, "message": "管理密钥无效", "code": "invalid_token"}message 是本地化的提示文案,可能随版本调整,程序判断请使用 HTTP 状态码和 code。
| HTTP | code | 场景 |
|---|---|---|
| 400 | invalid_request | 参数非法,如金额越界、创建时名称为空或过长、status 取值不是 1 / 2、启用的 Key 仍过期或耗尽、过期时间非法、分页或时间范围非法、query 含未编码的 ; |
| 401 | invalid_token | 缺少 Authorization 头、格式错误、密钥不存在或已删除 |
| 401 | token_expired | 管理密钥已过期 |
| 401 | token_revoked | 管理密钥已吊销(仅存量密钥;新建密钥只能删除) |
| 403 | user_disabled | 管理密钥所属用户已被禁用 |
| 403 | insufficient_scope | 管理密钥缺少该接口所需的权限 |
| 404 | not_found | API Key 不存在或不属于你(两者不区分);或 /api/open/v1 下不存在的路径 |
| 405 | method_not_allowed | 路径存在,但不支持该 HTTP 方法 |
| 429 | rate_limited | 超过每个管理密钥的频率限制 |
| 500 | internal_error | 服务端错误,不返回内部细节 |
/api/open/v1 下未知路径返回 404,方法写错返回 405,两者都使用上面的统一错误体;code 可用于区分”换个方法重试”还是”路径或参数写错了”。
| 范围 | 限制 | 适用接口 | 超限响应 |
|---|---|---|---|
| 每个管理密钥 | 120 次/分钟 | 全部开放平台 API | 429,code 为 rate_limited |
| 每个用户 | 30 次/分钟(默认) | 账户日志、导出日志、用量统计、按模型统计、按 Key 统计 | 429,响应体可能为空 |
| 每个客户端 IP | 180 次/180 秒(默认) | 全部 /api 接口共享 | 429 |
| 每个客户端 IP | 100 次/20 分钟(默认) | 敏感接口,如 获取完整 API Key | 429,响应体可能为空 |
请按 HTTP 状态码处理限流。遇到 429 时请降低频率并稍后重试。
模型接口使用另一套错误结构和限流规则,见常见错误。