已知 API 错误会返回具有以下结构的 JSON 正文:
{
"error": {
"message": "Human-readable description",
"code": "error_code"
}
}
错误参考
400 错误请求
| Code | 原因 | 解决方法 |
|---|
invalid_json | 请求正文不是有效的 JSON | 检查你的 JSON 语法 |
missing_model | model 字段缺失或不是字符串 | 在你的请求正文中包含 "model": "provider/name" |
missing_input | input 字段缺失或不是对象 | 在你的请求正文中包含 "input": {...} |
invalid_input | 输入与模型的 schema 不匹配 | 查看该模型的 API 参考,了解必填字段和有效值 |
model_not_found | 模型 ID 与任何可用模型都不匹配 | 查看 模型页面 获取有效的模型 ID |
401 未授权
| Code | 原因 | 解决方法 |
|---|
missing_api_key | 没有 Authorization 请求头或格式错误 | 在你的请求中包含 Authorization: Bearer sk-... |
invalid_api_key | 密钥无效、已禁用或已过期 | 创建新密钥,或在 Settings → API Keys 中重新启用现有密钥 |
402 需要付款
| Code | 原因 | 解决方法 |
|---|
insufficient_balance | 你的余额不足以创建本次 run | 在 Settings → Credits 中为你的余额充值 |
403 禁止访问
| Code | 原因 | 解决方法 |
|---|
api_key_spend_limit_exceeded | 该密钥已达到终身消费上限 | 在 Settings → API Keys 中提高消费限额 |
ip_not_allowed | 你的 IP 不在该密钥的白名单中 | 将你的 IP 添加到该密钥的允许列表,或移除白名单 |
429 请求过多
| Code | 原因 | 解决方法 |
|---|
RATE_LIMITED | 在短时间内请求过多 | 等待后重试。查看 速率限制 |
USAGE_EXCEEDED | 该密钥的使用配额已耗尽 | 联系支持或创建新密钥 |
404 未找到
| Code | 原因 | 解决方法 |
|---|
run_not_found | 你的账户没有这个 ID 的 run | 检查 run ID 是否正确,并且是否使用此 API key 创建 |
500 服务器内部错误
我们这边发生了意外错误。如果问题持续存在,请联系 support@runbase.net。
在代码中处理错误
response=$(curl -s -w "\n%{http_code}" https://runbase.net/api/v1/runs \
-H "Authorization: Bearer $RUNBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "google/nano-banana-2", "input": {"prompt": "test"}}')
http_code=$(echo "$response" | tail -1)
body=$(echo "$response" | head -1)
if [ "$http_code" -ne 201 ]; then
echo "Error $http_code: $(echo $body | jq -r '.error.message')"
fi
对于 429 错误,请实现指数退避——重试前先等待 1 秒,然后 2 秒,再 4 秒。