把 Claude Code 或者 Codex CLI 从官方线切到国内中转,九成的人不是卡在"不会用",而是卡在改完配置一跑就红字:一会儿 401 Missing API Key,一会儿卡在官方登录验证转圈,一会儿提示"模型不存在",Codex 那边还动不动来个 404 responses。这些报错看着吓人,其实来来回回就那么七八种,每一种都有固定的一行修复。

这篇是排错手册,不是入门教程。你已经拿到了 apipifa 后台的 Key、也大概知道要改哪个配置文件,只是跑起来报错——那就对着下面的症状表一条条比对。每一节的结构都是:症状(你看到的红字)→ 原因(为什么)→ 一行修复(照做)。看到自己那条,直接跳过去。

先把这几个事实钉死,后面所有配置都围绕它转,不对照这个你会一直踩坑:

准备好了就开始对症。


一、报错 401 / Missing API Key / Invalid API Key

症状

命令行里跑 claude 或者 Codex 一发消息,立刻返回类似:

API Error: 401 {"error":{"message":"Missing API Key","type":"authentication_error"}}

或者 Invalid API KeyUnauthorized

原因

401 只有一个含义:你的 Key 没被中转认出来。具体是下面四种之一:

  1. 环境变量里根本没写 Key,或者写的是官方的 sk-ant-... 老 Key(那个中转不认)。
  2. Key 复制时带了空格、引号、或者换行,粘进去多了看不见的字符。
  3. 配置文件 JSON 格式坏了(少了逗号、多了逗号、引号不配对),整块 env 没被读进去。
  4. apipifa 后台这个令牌余额用光了 / 被停用了。

一行修复(Claude Code)

打开 ~/.claude/settings.json,在 env 块里确认这两行一字不差、Key 是 apipifa 后台复制的那一串(下面只展示 env 块;如果文件里已有其它字段,别整个覆盖,把这两行合并进去就行):

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.apipifa.com/v1",
    "ANTHROPIC_AUTH_TOKEN": "把apipifa后台的Key原样粘这里"
  }
}

要点:ANTHROPIC_AUTH_TOKEN,不是 ANTHROPIC_API_KEY(用错字段是 401 高发原因);Key 两边只有一对英文双引号,里面没有多余空格、没有 Bearer ;整个文件用在线 JSON 校验器过一遍,确认没有多逗号少逗号。

改完先验证一下 Claude Code 装没装好:

claude --version

一行修复(Codex)

Codex 的 Key 不写进 config.toml,走环境变量注入。macOS/Linux 临时验证:

export OPENAI_API_KEY="把apipifa后台的Key原样粘这里"

想长期生效就写进 ~/.zshrc~/.bashrcsource 一下。

还是 401? 说明字段、格式都对,那就是余额或令牌状态问题——回 apipifa 后台看这个令牌还有没有额度、是不是被禁用了,换一个可用令牌重试。


二、卡在官方登录验证(转圈 / 一直要你登录)

症状

Claude Code 第一次启动,不报 401,而是弹出官方登录流程、让你去浏览器授权,或者一直转圈提示要联网验证账号——但你根本没有官方账号、也不想走官方登录态。

原因

Claude Code 出厂默认要走一遍官方 onboarding(引导登录)。你只是想用中转的 Key,不需要它去官方那边验证账号。这一步没被跳过,它就卡住了。

一行修复(告诉它:onboarding 已完成、Key 随便给一个占位)

在两个文件里各加一个字段(这俩文件通常已经有很多内容,是往里加键、不是整个文件覆盖成下面这一行):

macOS / Linux:

# 文件 1: ~/.claude.json  在最外层对象里加这个字段
"hasCompletedOnboarding": true

# 文件 2: ~/.claude/config.json  在最外层对象里加这个字段
"primaryApiKey": "any-string"

primaryApiKey 填任意字符串就行(比如就写 any-string),它只是用来骗过本地那道"你有没有填过 key"的校验,真正生效的鉴权是第一节里的 ANTHROPIC_AUTH_TOKEN。加完记得检查 JSON 逗号闭合,别把原有内容改坏。

Windows 下这两个文件在你的用户目录(C:\Users\你的用户名\)下:C:\Users\你的用户名\.claude.jsonC:\Users\你的用户名\.claude\config.json,加同样的字段。

这不是"破解官方"。中转是正规的人民币 API 服务,你走的是 apipifa 的鉴权、不碰官方登录态——所以既不需要官方账号,也不涉及官方账号被封的风险。跳过 onboarding 只是跳过"官方账号登录"这一步,不是绕过任何付费。

改完重开一个终端窗口,再跑 claude,应该直接进对话、不再要你登录。


三、模型名不对 / model not found / 模型不存在

症状

鉴权过了,但一发消息报:

404 {"error":{"message":"model not found","type":"invalid_request_error"}}

或者 "该模型不存在 / 无权限 / model_not_supported"。

原因

你请求的模型名,中转的模型清单里没有。常见就两种:一是还在用官方老模型名(比如某个已下线的旧版本),二是名字拼错了(多个空格、大小写、少个后缀)。

一行修复:改成 apipifa 现行模型名

apipifa 当前在线的模型名(照抄,别自己改):

Claude 系列:
  claude-opus-4-8       (Claude 4.X 最强)
  claude-sonnet-5       (最新 Sonnet,均衡)
  claude-sonnet-4-6     (Claude Code 常用)
  claude-haiku-4-5      (快而省,Claude Code 常用)

GPT / Codex 系列:
  gpt-5.5
  gpt-5.4
  gpt-5.4-mini
  gpt-5.3-codex
  gpt-image-2           (生图)

Grok 系列:
  grok-4.3

已下线、别再写:opus-4-6opus-4-7gpt-5.2——写这些一律 model not found。

因为 apipifa 是 auto 全模型通用池,同一个 Key 上面这些模型名随便切,不用换 Key、不用改分组,按模型名自动路由计费。


四、Base URL 尾缀写错(接口路径重复 / 拼错)

症状

鉴权、模型名都对,但报 404 Not Found,或者报路径类的错(比如提示访问了 /v1/v1/... 之类),再或者干脆连不上、无响应。

原因

Base URL 是"根地址",不是"完整接口地址"。 客户端会自己在根地址后面拼 /chat/completions/messages/responses 这些路径。你要是把完整接口地址塞进 Base URL,就会拼出双份路径,404。

一行修复:Base 只到 /v1,后面什么都不加

正确(根地址,带 /v1,到此为止):

https://api.apipifa.com/v1

错误(把接口路径也写进去了,会拼重复):

https://api.apipifa.com/v1/chat/completions   ❌
https://api.apipifa.com/v1/messages           ❌
https://api.apipifa.com/chat/completions       ❌ (漏了 /v1)

对照检查:

记一句话:"根地址带 /v1、不含 /chat/completions",这一条能挡掉一大半 404。


五、Codex 报 404 responses(接口没对上 / 没重启)

症状

Codex 专属报错,发消息时报:

404  ... /responses ...

明明 Key、模型名、Base 看着都对,就是这个 responses 404。

原因

有两种,按顺序排:

  1. config.toml 没配对 provider:Codex 不知道要把请求发去 apipifa,还在用默认的官方 provider。
  2. 改完没重启 Codex 进程:Codex 不热重载配置,你改了 config.toml 但没退出重开,它读的还是旧配置。

一行修复:先补全 config.toml,再重启进程

打开 ~/.codex/config.toml,确认顶部指定了 provider、末尾定义了这个 provider:

# 文件顶部:告诉 Codex 用 apipifa 这个 provider
model_provider = "apipifa"

# 文件末尾:定义 apipifa 这个 provider 指向哪
[model_providers.apipifa]
name = "apipifa"
base_url = "https://api.apipifa.com/v1"

注意 base_url 还是那个规矩:/v1 为止(见第四节)。Key 不写这里,走环境变量(见第一节)。

改完必须彻底退出 Codex 再重开(不是 Ctrl+C 再回车,是整个进程退掉):

# 退出当前 codex 进程后,重新起
codex

进去后 /model 选一个 apipifa 清单里的模型(如 gpt-5.3-codex),再发消息。

安装 Codex 需要 Node ≥ 22:npm i -g @openai/codex

六、模型换了不生效 / 模型列表不刷新

症状

你在 config 里改了模型,或者中转那边上了新模型,但 Codex 里 /model 看到的还是旧的,或者切了不生效。

原因

跟第五节同源:Codex 不热重载。配置也好、模型列表也好,都是进程启动时读一次,之后你在文件里怎么改它都不看。

一行修复:退出 Codex 进程再重开

# 完全退出 codex,再重新启动,配置和模型列表才会重新加载
codex

这不是玄学,是 Codex 的设计——"改完 Codex 配置,第一反应就是重启进程"。Claude Code 那边同理:改了 ~/.claude/settings.json,重开一个新终端窗口再跑 claude,别在旧窗口里指望它自己感知。


七、Windows 专项:环境变量残留 / 脚本被拦

症状

只在 Windows 上出现:改了配置还是连官方 / 还是 401,或者装 Claude Code / Codex 时 PowerShell 报"无法加载脚本,因为在此系统上禁止运行脚本"。

原因

  1. 旧环境变量残留:你之前在"系统属性 → 环境变量"里手动加过 ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / OPENAI_API_KEY,现在配置文件改了,但系统级环境变量优先级更高、把文件里的值盖掉了,导致你怎么改文件都不生效。
  2. PowerShell 执行策略:默认策略禁止运行本地脚本,npm 全局命令的 .ps1 包装脚本被拦。

一行修复(残留环境变量)

Win + R 输入 sysdm.cpl 回车 → "高级"选项卡 → "环境变量" → 在用户变量系统变量里把这几个残留删掉(留着会盖掉配置文件):

ANTHROPIC_BASE_URL
ANTHROPIC_AUTH_TOKEN
ANTHROPIC_API_KEY
OPENAI_API_KEY   (如果之前手动加过且现在想走配置文件)

删完关掉所有终端窗口、重新开(环境变量改动只对新开的窗口生效)。

一行修复(脚本被拦)

以当前用户放行本地脚本(不需要管理员、不影响系统安全策略):

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

弹出确认时输入 Y 回车。之后再跑 claude --version / 安装命令就不会被脚本策略拦。

国内装 Claude Code 慢的话,加淘宝镜像:npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com

FAQ:高频追问速查

Q:401 和 404 到底怎么区分该查哪? A:401 = 鉴权问题(Key 没认出来),查第一节:字段名、格式、余额。404 = 找不到,分两种:模型名不对查第三节,Base URL 尾缀不对查第四节,Codex 的 responses 404 查第五节。先看红字里是 401 还是 404,直接定位。

Q:Claude 和 Codex 要不要各申请一个 Key? A:不用。apipifa 新建令牌默认是 auto 全模型通用池,一份 Key 同时能跑 Claude、Codex、Grok 全部模型,按你请求的模型名自动路由计费。Claude Code 和 Codex 填同一个 Key、同一个 Base 就行,区别只在客户端走的协议不同(Anthropic vs OpenAI),而 apipifa 这一个 base 两种协议都兼容。

Q:Base URL 到底带不带 /v1? A:/v1,到此为止。 完整就是 https://api.apipifa.com/v1。后面不要再接 /chat/completions/messages/responses——那些是客户端自己拼的,你多写就 404。

Q:改完配置没反应,是不是配置写错了? A:先别怀疑配置。九成是没重启:Codex 改完必须退进程重开(不热重载);Claude Code 要开新终端窗口;Windows 还要检查是不是被系统级残留环境变量盖掉了(第七节)。重启一遍再看。

Q:提示模型不存在,但我抄的是官方文档的模型名? A:官方模型名和中转清单不一定一一对应,而且旧版本会下线。以 apipifa 现行清单为准(第三节):claude-opus-4-8 / claude-sonnet-5 / claude-sonnet-4-6 / claude-haiku-4-5 / gpt-5.5 / gpt-5.3-codex / grok-4.3 等。opus-4-6gpt-5.2 这些已下线的别写。

Q:走中转会不会封我的官方账号? A:中转不走官方登录态——你用的是 apipifa 的鉴权、不碰官方账号,所以不涉及官方账号封号这回事(你压根没登录官方账号)。第二节让你跳过的那个 onboarding,就是跳过"官方账号登录"这一步。


为什么这些坑在 apipifa 这边更少踩

上面七类报错,大半是"客户端要连官方、你要把它掰到中转"过程中的摩擦。apipifa 在设计上就少了几道摩擦:

排错的本质是"少一个环节就少一类故障",这几点正好各砍掉一类常见故障源。


下一步:拿一个 Key 把上面这套跑通

如果你还没有 apipifa 的 Key,或者手上这个令牌余额用光了:

  1. apipifa 注册开号,后台新建令牌(默认就是 auto 全模型通用池,不用额外设置分组)。
  2. 复制令牌 Key,按第一节填进 Claude Code 的 settings.json 或 Codex 的环境变量。
  3. Base 统一填 https://api.apipifa.com/v1,模型名用第三节清单里的。
  4. 卡官方验证就上第二节,Codex 报 responses 就上第五节,Windows 有残留就上第七节。

具体的按量 / 包月价格、余额充值,以 apipifa 价格页和后台为准(人民币付费,比官方省)。拿到 Key 对着这份手册走一遍,基本能把 Claude Code 和 Codex 都稳稳接上中转。

本文所述为正规的人民币 API 中转服务接入与排错,不涉及破解或绕过官方付费。模型清单与接口地址以 apipifa 后台实时为准,如遇本文未覆盖的报错,把红字原文贴到后台咨询即可。