401 invalid_api_key:API Key 无效怎么解决
401高频认证401api-key30 秒结论
401 只有一个意思:你的 Key 没有被接受。 90% 的情况是复制时带了空格、环境变量名写错,或者用错了环境的 Key。
先用 curl 直接请求一次——curl 能过就是客户端配置问题,curl 也不过就是 Key 本身的问题。
报错原文对照
// OpenAI
{'error': {'message': 'Incorrect API key provided: sk-xxx. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'code': 'invalid_api_key'}}
// Anthropic
{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"}}
// 中转站常见
{"error":{"message":"无效的令牌","type":"new_api_error"}}
{"error":{"message":"令牌已过期","type":"new_api_error"}}
原因排序
| 概率 | 原因 | 怎么确认 |
|---|---|---|
| 40% | Key 复制时带了空格或换行 | echo "$KEY" | cat -A 看首尾 |
| 25% | 环境变量名不对 | 客户端要求的变量名可能不是 OPENAI_API_KEY |
| 15% | 用错了 Key(测试/正式、不同站点) | 拿 Key 前 8 位对一下后台 |
| 10% | Key 已被禁用或删除 | 后台看状态 |
| 10% | 请求头格式不对 | 应该是 Authorization: Bearer sk-xxx 或 x-api-key: sk-xxx |
修法
第一步:剥离客户端,用 curl 验证
# OpenAI 兼容
curl https://api.example.com/v1/models \
-H "Authorization: Bearer $KEY"
# Anthropic
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5-5","max_tokens":16,"messages":[{"role":"user","content":"hi"}]}'
- curl 通过 → 问题在客户端配置
- curl 也 401 → 问题在 Key 或站点
第二步:检查环境变量
不同客户端认的变量名不同,写错了会被当成“没配 Key”:
| 客户端 | 常用变量名 |
|---|---|
| OpenAI SDK | OPENAI_API_KEY |
| Anthropic SDK | ANTHROPIC_API_KEY |
| Claude Code | ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY |
| Codex CLI | OPENAI_API_KEY |
| Cursor | 在设置界面里填,不读环境变量 |
责任判定表
| 现象 | 责任方 |
|---|---|
| curl 也 401,换 Key 就好 | 你的 Key |
| 同一个 Key 在 A 站好用、B 站 401 | B 站 |
| 昨天好用今天 401,Key 没动 | 站点把 Key 停了,或过期 |
| 只有某个模型 401 | 该分组没开通这个模型 |
特别注意
中转站的 Key 和官方 Key 不通用。你在 OpenAI 官网拿的 sk-proj- 开头 Key,拿到中转站用一定 401。
还是没解决?把报错贴进来
新用户福利:先免费试,再决定充值
注册就送积分,可兑换 API 额度。拿真实请求验证本页结论,比看十篇教程都有用。
领免费额度