Quick Start
错误码
API 错误码及故障排查指南
错误码参考
当 API 请求失败时,响应会包含一个 HTTP 状态码和一个错误对象,详细说明出错原因。下表列出了所有可能的错误码:
| HTTP 状态码 | 错误码 | 说明 | 解决方案 |
|---|---|---|---|
| 400 | invalid_request | 请求体格式错误或缺少必填字段 | 检查请求参数和格式 |
| 401 | authentication_failed | API Key 无效或缺失 | 确认 API Key 正确无误 |
| 403 | permission_denied | 您的账号无权访问该资源 | 检查账号权限和订阅状态 |
| 404 | not_found | 请求的资源不存在 | 确认端点 URL 和模型名称 |
| 429 | rate_limit_exceeded | 请求过于频繁,超出速率限制 | 降低请求频率或等待后重试 |
| 500 | internal_error | 服务器内部错误 | 短暂等待后重试;如持续出现请联系支持团队 |
| 503 | service_unavailable | 服务因高负载暂时不可用 | 使用指数退避策略重试 |
错误响应格式
错误响应遵循以下结构:
{
"error": {
"code": "authentication_failed",
"message": "Invalid API Key provided.",
"type": "error"
}
}错误处理最佳实践
实现重试逻辑
并非所有错误都应该重试,请参考以下指南:
- 可重试错误(429、500、503): 这些是可能自行恢复的临时性错误。建议实现带指数退避的自动重试。
- 不可重试错误(400、401、403、404): 这些错误表明请求或凭证存在问题。请先修复根本原因再重试。
指数退避策略
重试失败的请求时,使用指数退避策略以避免对服务器造成过大压力:
import time
import random
def make_request_with_retry(func, max_retries=5):
for attempt in range(max_retries):
try:
return func()
except Exception as e:
if attempt == max_retries - 1:
raise e
# 带随机抖动的指数退避
delay = min(2 ** attempt + random.random(), 60)
print(f"请求失败,{delay:.1f}秒后重试...(第 {attempt + 1}/{max_retries} 次尝试)")
time.sleep(delay)优雅处理速率限制
如果收到 429 rate_limit_exceeded 错误:
- 遵守 Retry-After 头: 如果响应包含
Retry-After头,请至少等待指定时间后再重试。 - 降低并发量: 减少并行请求数量,确保在速率限制范围内。
- 实现请求队列: 将请求排队,以可控的速率依次处理。
记录错误日志
始终记录错误响应的完整信息,包括完整的错误对象、请求 ID(如有)和时间戳。这些信息在联系支持团队排查持续性问题时非常重要。
发送前验证请求
通过在发送前验证请求数据,减少 400 invalid_request 错误:
- 确保所有必填字段都已填写。
- 确认模型名称与可用模型之一匹配(
mimo-v2-pro、mimo-v2-omni、mimo-v2-tts、mimo-v2-flash)。 - 检查参数值在可接受范围内。
- 确认 API Key 已设置且不为空。
MiMo API 文件