调用 API 前必须先获取 API Key
所有 API 请求均需通过 X-API-Key 请求头进行身份认证。没有有效的 API Key,任何端点都无法调用。
概述
ImgRoute API 使用统一的错误响应格式,所有错误都会返回结构化的 JSON 响应,便于客户端解析和处理。
错误响应格式
{
"success": false,
"error": "错误描述",
"code": "ERROR_CODE"
}
HTTP 状态码
| 状态码 | 含义 | 典型场景 |
| 400 | 请求参数错误 | 缺少必填参数、参数格式错误、尺寸不匹配 |
| 401 | 认证失败 | 未提供 API Key、API Key 无效 |
| 403 | 权限不足 | 套餐不支持此功能、存储已达上限 |
| 404 | 资源不存在 | 图片或相册 ID 不存在 |
| 429 | 请求过于频繁 | QPS 超限或日配额用尽 |
| 500 | 服务器内部错误 | 系统异常,请稍后重试 |
| 503 | 服务暂不可用 | IO 节点维护或过载 |
完整错误码列表
参数错误 (400)
| 错误码 | 说明 |
MISSING_FILE_SIZE | 缺少 file_size 参数 |
MISSING_FILE_NAME | 缺少 file_name 参数 |
MISSING_MIME_TYPE | 缺少 mime_type 参数 |
MISSING_WIDTH | 缺少 width 参数 |
MISSING_HEIGHT | 缺少 height 参数 |
INVALID_WIDTH | width 必须为正整数 |
INVALID_HEIGHT | height 必须为正整数 |
INVALID_DIMENSION | width/height 非法或不为正整数 |
DIMENSION_MISMATCH | 实际图片尺寸与声明不一致 |
INVALID_FILE_SIZE | file_size 必须为正整数 |
FILE_TOO_LARGE | 单文件超出套餐限制 |
MISSING_NAME | 相册名称为空 |
INVALID_PARAMS | 参数非法或冲突 |
MISSING_PARAMS | 缺少必填参数 |
VALIDATION_ERROR | 参数校验失败 |
认证错误 (401)
| 错误码 | 说明 |
MISSING_API_KEY | 未提供 API Key |
INVALID_API_KEY | API Key 无效 |
权限错误 (403)
| 错误码 | 说明 |
PLAN_NOT_SUPPORTED | 当前套餐不支持此接口 |
FORBIDDEN | 无权操作此资源 |
STORAGE_LIMIT_REACHED | 存储总量已达上限 |
限流错误 (429)
| 错误码 | 说明 |
DAILY_LIMIT_REACHED | 超过今日上传限制 |
RATE_LIMITED | 触发 QPS 限制 |
错误处理代码示例
import requests
def upload_image(file_path):
try:
presign_resp = requests.post(
"https://imgroute.com/api/v1/upload",
headers={"X-API-Key": API_KEY},
json={...}
)
if not presign_resp.ok:
error = presign_resp.json()
print(f"预签名失败: {error['code']} - {error['error']}")
return None
upload_url = presign_resp.json()["data"]["upload_url"]
with open(file_path, "rb") as f:
upload_resp = requests.post(upload_url, files={"file": f})
if not upload_resp.ok:
error = upload_resp.json()
print(f"上传失败: {error['code']} - {error['error']}")
return None
return upload_resp.json().get("cdn_url")
except requests.exceptions.RequestException as e:
print(f"网络错误: {e}")
return None
重试策略建议
- 4xx 客户端错误:不要重试,修复请求后再试
- 429 限流:根据 Retry-After 头等待后重试
- 5xx 服务器错误:使用指数退避重试
- 网络错误:检查网络连接,使用指数退避重试