API 403 报错:ACCESS_DENIED、API_KEY_EXPIRED、GROUP_NOT_ALLOWED 怎么解决
HTTP 403 表示网关认出了你的 Key,但拒绝了这次请求。和 401 不同,这时 Key 本身是对的,问题出在 IP 限制、有效期、分组或订阅上。先看返回的错误码,对号入座。
错误码速查
| 错误码 | 含义 | 去哪里处理 |
|---|---|---|
ACCESS_DENIED |
请求来源 IP 不在 Key 的允许范围内 | 编辑 Key 的 IP 限制 |
API_KEY_EXPIRED |
Key 已超过有效期 | 编辑有效期或新建 Key |
GROUP_NOT_ALLOWED |
Key 所属的专属分组不再允许当前账号使用 | 换一个可用分组 |
GROUP_DISABLED / GROUP_DELETED |
Key 所属分组已停用或已删除 | 换一个可用分组 |
SUBSCRIPTION_NOT_FOUND |
分组需要订阅,但账号没有有效订阅 | 确认订阅状态 |
SUBSCRIPTION_INVALID |
订阅已失效 | 续订或换分组 |
INSUFFICIENT_BALANCE |
账户余额不足 | 见 余额不足 |
ACCESS_DENIED:IP 被限制
返回信息类似 Access denied. Your IP is x.x.x.x,括号里的就是网关看到的请求来源 IP。
- 到 API 密钥 编辑这个 Key,查看 IP 限制。
- 如果你不需要限制,清空这一项;如果需要,把返回信息里的 IP 加进允许列表。
- 注意网关看到的是出口 IP:用了代理、公司网络或云服务器时,和你本机的 IP 不一样。出口 IP 会变化的环境(例如家庭宽带)不适合设置 IP 限制。
不了解 IP 规则时,不要随意填写,否则会拦住自己的正常请求。
API_KEY_EXPIRED:Key 过期
创建 Key 时如果设置了有效期,到期后所有请求都会被拒绝。在 API 密钥 里编辑有效期,或者新建一个 Key,再更新工具里的配置。
GROUP_NOT_ALLOWED、GROUP_DISABLED:分组问题
Key 的权限由所属分组决定:
- 专属分组不再允许使用:分组的使用范围被调整,当前账号被移出。
- 分组已停用或删除:运营方下线了这个分组。
处理方式相同:编辑这个 Key,选择一个当前可用的分组,保存后重新查询模型列表并测试。怎么选分组见 如何选择 Key 分组。
SUBSCRIPTION_NOT_FOUND:订阅类分组没有订阅
有些分组按订阅计费,需要账号下有有效订阅才能用。余额充足也不能替代订阅。到 订阅 页面确认订阅状态和有效期。
与模型相关的 403
分组有时会限制客户端或模型范围,例如名称或说明里带有 “Claude Code only” 的分组,只能给 Claude Code 使用。用在别的客户端里可能被拒绝。请核对分组说明,见 如何选择 Key 分组。
一个最小验证
curl -i https://hrouter.net/v1/models \
-H "Authorization: Bearer $HROUTER_API_KEY"
返回 200 且列表里有目标模型,说明 Key、分组和 IP 都正常,问题在客户端。仍然 403,看响应里的错误码,按上表处理。
相关阅读
- API 401 报错:Key 本身不被认可
- 余额不足
- model_not_found
- 创建 API Key