# 鉴权

https://modelportal.ai/docs/authentication?lang=zh

所有模型调用都用控制台「密钥」页创建的 API 密钥鉴权。三种协议各自沿用官方 SDK 的写法：

| 协议 | 接口 | 密钥放在哪里 |
| --- | --- | --- |
| OpenAI 兼容 | `https://modelportal.ai/v1/*` | 请求头 `Authorization: Bearer YOUR_API_KEY` |
| Anthropic 兼容 | `https://modelportal.ai/v1/messages` 等 | 请求头 `x-api-key: YOUR_API_KEY`，或 `Authorization: Bearer YOUR_API_KEY` |
| Gemini 兼容 | `https://modelportal.ai/v1beta/*` | 请求头 `x-goog-api-key: YOUR_API_KEY`、查询参数 `?key=YOUR_API_KEY`，或 `Authorization: Bearer YOUR_API_KEY` |

- OpenAI 与 Anthropic 接口不接受放在 URL 查询参数里的密钥。
- Gemini 接口同时带了几处密钥时，几处必须相同，否则拒绝。
- 平台接口 `/api/v1/*` 里公开的模型列表不需要鉴权；控制台用的接口走登录会话，不接受 API 密钥。

## 鉴权失败时

| HTTP | 错误码 | 原因 |
| --- | --- | --- |
| 401 | `invalid_api_key` | 密钥缺失、写错或已撤销 |
| 401 | `key_inactive` | 密钥已暂停或已过期 |
| 403 | `key_restricted` | 模型不在密钥的可用模型里，或来源 IP 不在密钥的白名单里 |

## 保管密钥

- 密钥只在服务端使用。浏览器和移动应用里的代码可以被任何人取出，需要在前端调用时，经你自己的后端转发。
- 按应用或环境分开建密钥，给每把设可用模型和消费上限，出问题时只停用其中一把。
- 怀疑泄露时立即在密钥页撤销，再新建一把，详见[密钥管理](/docs/api-keys)。
