错误与限制
错误信封
所有端点的所有错误,形状都一样:
{
"type": "error",
"error": {
"type": "bad_request_error",
"message": "invalid params, content must include a non-empty text item (prompt is required) (2013)",
"http_code": "400"
},
"request_id": "021785229015510a2c883cf675b9804d"
}
两个容易踩的细节,都是从 MiniMax 官方 API 继承来的:
- 数字错误码在
message里、写在括号中 —— 没有单独的code字段; http_code是字符串,不是数字。
request_id 在每个响应(包括成功)的 X-Request-Id 头里都有。
求助时请带上它。你也可以自己传一个,我们会沿用。
错误码
| HTTP | error.type | 码 | 含义 |
|---|---|---|---|
| 400 | bad_request_error | 2013 | 参数不合法,或 task id 不存在 |
| 401 | authorized_error | 1004 | 鉴权失败 |
| 402 | insufficient_balance_error | 1008 | 余额不足以覆盖预估 |
| 422 | unprocessable_entity_error | 1026 | 提示词命中内容过滤 |
| 429 | rate_limit_error | 1002 | 触发限流或预算上限 |
| 500 | server_error | 1000 | 我们的问题 |
| 503 | overloaded_error | 1039 | 没有 worker 能服务这种请求 |
哪些值得重试
429 和 503 值得带退避重试。500 值得重试一次。
400、401、402、422 无论重试多少次都会以同样的方式失败 ——
去改请求、改密钥、或者充值。
任务失败 ≠ 请求失败
已经被接收、之后失败的任务,通过查询接口报告,不走 HTTP 错误:
{
"task": {
"status": "failed",
"error": { "code": "1000", "message": "…" }
}
}
注意 task.error.code 是字符串,而且没有 http_code。
它和上面的信封是两种不同的形状。
失败的任务不收费:提交时预扣,失败时全额退回。
限流
每个账号四项互相独立的限制:
| 限制 | 默认值 | 保护对象 |
|---|---|---|
| 每分钟请求数 | 60 | API 本身 |
| 并发任务数 | 4 | TPU 集群 |
| 每日输出秒数 | 3600 | 失控的循环 |
| 月度消费 | $1000 | 你的账单 |
并发同时计入排队中和运行中的任务。否则一个账号可以一次塞进一万条, 别人要等一整天。
四项都可以调整 —— 找我们说一声。
生成限制
| 分辨率 | 768p |
| 时长 | 5–15 秒 |
| 帧率 | 24 fps |
| 音频 | 32 kHz 立体声,AAC |
| 参考图 | 9 张 |
| 参考视频 | 3 段,每段 2–15 秒 |
| 参考音频 | 3 段,每段 2–15 秒 |
| 单请求素材数 | 12 |
| 请求体 | 64 MB |
内容过滤
提示词在到达 TPU 之前会过一遍过滤。被拒返回 422、码 1026。
过滤会有误判;如果你认为遇到了,把 request_id 发给我们。