401 Unauthorized
401 Unauthorized 表示请求未通过身份验证。这是使用 零派智能API 时最常见的错误之一。
错误示例
{ "error": { "message": "Invalid API key", "type": "invalid_request_error", "code": "invalid_api_key" }}原因分析
| 原因 | 说明 |
|---|---|
| API Key 无效 | Key 不存在或已被删除 |
| API Key 缺失 | 请求头中没有携带 Authorization 字段 |
| Key 格式错误 | Key 中包含空格、换行符或拼写有误 |
| Key 已过期 | Key 超过有效期,已被系统自动禁用 |
| Authorization 格式错误 | 请求头格式不符合 Bearer 规范 |
排查步骤
1. 检查请求头是否携带了 API Key
# 错误:缺少 Authorization 头curl "$BASE_URL/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}]}'2. 检查 Authorization 头格式是否正确
# 错误:缺少 Bearer 前缀curl "$BASE_URL/v1/chat/completions" \ -H "Authorization: $API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}]}'# 正确:使用 Bearer 前缀curl "$BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}]}'3. 检查 Key 中是否有多余字符
# 查看环境变量值(检查前后是否有空格或换行)echo "$API_KEY" | cat -A4. 在管理后台确认 Key 状态
- 登录管理后台
- 进入 API Key 管理 页面
- 查看对应 Key 的状态是否为「正常」
- 确认 Key 没有被禁用或删除
解决方案
Key 无效或已过期
-
在管理后台创建一个新的 API Key
-
将新 Key 配置到环境变量中
Terminal window export API_KEY="sk-your-new-api-key" -
重启应用程序使环境变量生效
Key 格式错误
# Python:清理 Key 中的隐藏字符import osapi_key = os.environ.get("API_KEY", "").strip()// JavaScript:清理 Key 中的隐藏字符const apiKey = process.env.API_KEY.trim();Authorization 头格式错误
确保使用标准 Bearer Token 格式:
# Pythonheaders = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}// JavaScriptconst headers = { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json"};验证方法
修改后,发送一个简单请求验证 Key 是否生效:
curl "$BASE_URL/v1/models" \ -H "Authorization: Bearer $API_KEY"- 返回
200及模型列表 → 问题已解决 - 仍然返回
401→ 重新确认 Key 是否正确,或联系管理员检查账户状态