身份验证
InOneAPI 所有 API 请求都使用项目 API Key 认证。密钥代表一个项目或子密钥的调用权限,网关会在认证后继续检查模型限制、预算、速率限制和工作区策略。
请求头
通过 HTTPS 发送 Bearer Token。不要把密钥放到浏览器、移动端包体、日志、截图或公开仓库中。
curl https://api.inoneapi.com/v1/models \
-H "Authorization: Bearer $INONEAPI_API_KEY"
JSON 请求还需要 Content-Type: application/json:
curl https://api.inoneapi.com/v1/chat/completions \
-H "Authorization: Bearer $INONEAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4.1-mini",
"messages": [
{ "role": "user", "content": "Hello" }
]
}'
密钥类型
| 类型 | 用途 |
|---|---|
| 工作区/项目密钥 | 用于服务端生产调用,建议按项目拆分。 |
| 子密钥 | 分配给成员、应用、代理或环境,可设置独立预算和模型范围。 |
| 临时测试密钥 | 用于本地调试,过期后应立即撤销。 |
密钥只在创建或揭示时显示完整值。后续页面通常只展示前缀,无法从数据库明文恢复。
权限与限制
密钥可以绑定到项目,并限制可调用模型、预算、速率和成员权限。网关认证成功后会按以下顺序处理:验证密钥状态,检查项目和成员权限,检查预算和限制,选择可用路由,再把请求转发到上游。
当模型被限制时,请求会返回 403 或模型不可用错误;当预算或速率用尽时,请求会返回 429,并可能包含 Retry-After。不要通过创建多个密钥绕过限制,这会触发异常流量检测和告警。
服务端安全
- 仅在服务端环境变量保存
INONEAPI_API_KEY。 - 轮换密钥时先创建新密钥并更新部署,再撤销旧密钥。
- 为不同环境使用不同密钥,例如 development、staging、production。
- 记录
X-Gateway-Trace-ID排查问题,不记录完整密钥、提示词或敏感输出。 - 如果密钥泄露,立即撤销,并检查最近的调用日志、预算消耗和异常告警。
常见错误
| 状态 | 含义 | 处理方式 |
|---|---|---|
| 401 | 缺少、格式错误或无效密钥。 | 检查 Authorization: Bearer ...,确认没有多余空格或过期值。 |
| 403 | 密钥有效但无权调用该项目、模型或操作。 | 检查项目归属、成员权限和模型限制。 |
| 429 | 命中速率限制、预算限制或异常保护。 | 遵循 Retry-After,降低并发,检查预算配置。 |