错误处理

SilvaMux 使用两种错误格式,取决于你调用的是 Gateway API 还是 Billing API。

Gateway API 错误

Gateway API(模型调用接口)使用 OpenAI 兼容的错误格式:

{
  "error": {
    "message": "具体错误信息",
    "type": "gateway_error",
    "code": "ERROR_CODE"
  }
}

常见错误码

错误码 HTTP 状态码 说明
MODEL_REQUIRED 400 请求体缺少 model 字段
MODEL_NOT_FOUND 400 模型不存在或不可用
MODEL_ACCESS_DENIED 403 组织没有访问该模型的权限
UNAUTHORIZED 401 认证失败
RATE_LIMITED 429 请求频率超出限制
INSUFFICIENT_BALANCE 402 余额不足
PRE_DEDUCT_FAILED 400/402 预扣费失败
UPSTREAM_UNAVAILABLE 502 上游服务不可用
INTERNAL 500 内部错误

上游错误透传

当上游模型供应商返回 4xx/5xx 错误时,SilvaMux 会将错误响应原样透传(敏感信息会被脱敏处理),HTTP 状态码保持一致。此时不会产生扣费。

Billing API 错误

Billing API(管理接口)使用 RFC 7807 风格的错误格式:

{
  "status": 400,
  "detail": "具体错误信息",
  "type": "tag:hub,2026-03:ERROR_CODE"
}

验证错误会包含 errors 数组:

{
  "status": 422,
  "detail": "validation failed",
  "type": "tag:hub,2026-03:VALIDATION_FAILED",
  "errors": [{ "location": "body.email", "message": "required" }]
}

常见错误码

错误码 HTTP 状态码 说明
INVALID_REQUEST_BODY 400 请求体格式错误
VALIDATION_FAILED 422 字段验证失败
MISSING_AUTH_TOKEN 401 缺少认证 token
INVALID_TOKEN 401 token 无效
TOKEN_EXPIRED 401 token 已过期
REFRESH_TOKEN_INVALID 401 refresh token 无效或已过期
MEMBERSHIP_NOT_FOUND 403 不是该组织成员
ORGANIZATION_NOT_FOUND 404 组织不存在
PROJECT_NOT_FOUND 404 项目不存在
API_KEY_NOT_FOUND 404 API Key 不存在
INTERNAL 500 内部错误

重试建议

HTTP 状态码 建议
400 不要重试,修正请求参数
401 不要重试,检查认证信息
402 不要重试,充值后再试
403 不要重试,联系管理员
429 等待后重试,建议指数退避
500 可以重试,建议间隔 1-5 秒
502 可以重试,上游暂时不可用

请求 ID

每个请求都会返回 X-Request-Id header(格式为 REQ-xxxx)。排查问题时请提供此 ID。你也可以在请求中自行设置 X-Request-Id header,系统会沿用你指定的值。