别再和 /v1 猜拳了:Claude Code、Codex、Gemini CLI 的 API 地址一次填对

配置 AI 编程工具时,有一个问题特别像“玄学”:
同样是 api.linktoagi.com,为什么 Claude Code 不加 /v1,Codex 却要加,Gemini CLI 又不加?
更让人困惑的是,有时地址写错了,浏览器还能打开;有时返回 401;有时又突然变成 404。于是很多人开始反复尝试:加上、删掉、重启、再加上。
这篇文章不靠猜。我实际向 LinkAGI 的三类协议端点发起了请求,并故意构造了错误路径,看看服务器分别会返回什么。
先给结论:
| 客户端 | Base URL 应填写 |
|---|---|
| Claude Code | https://api.linktoagi.com |
| Codex / OpenAI-compatible | https://api.linktoagi.com/v1 |
| Gemini CLI | https://api.linktoagi.com |
为什么会这样?关键只有一句话:Base URL 不是完整请求地址,客户端还会在后面继续拼接协议路径。
先看 LinkAGI 控制台实际展示
我先打开了 LinkAGI 控制台首页。页面展示的是统一根地址 https://api.linktoagi.com,右侧则轮换显示 /v1/responses、/v1/messages、/v1beta/models 等不同协议路径。

这已经透露了正确理解方式:
- 域名是统一入口。
- Claude、OpenAI Responses、Gemini 使用的后续路径不同。
- 客户端配置项要求填写的,通常不是最终完整请求 URL,而是它开始拼接路径的位置。
我实际请求了三个端点
测试时间:2026 年 7 月 12 日。
为了只验证路由、不产生模型调用费用,下面的探测请求刻意没有携带 API Key。正确端点预期进入令牌校验并返回 401;不存在的路径则应该返回 404。
Claude Code 对应端点
curl -i -X POST 'https://api.linktoagi.com/v1/messages' \
-H 'Content-Type: application/json' \
-H 'anthropic-version: 2023-06-01' \
--data '{
"model": "endpoint-probe",
"max_tokens": 1,
"messages": [{"role": "user", "content": "ping"}]
}'
实测结果:
HTTP/2 401
{"error":{"message":"Invalid token","type":"new_api_error"}}
Codex 对应端点
curl -i -X POST 'https://api.linktoagi.com/v1/responses' \
-H 'Content-Type: application/json' \
--data '{"model":"endpoint-probe","input":"ping"}'
实测结果同样是 HTTP/2 401 和 Invalid token。
Gemini CLI 对应端点
curl -i -X POST \
'https://api.linktoagi.com/v1beta/models/gemini-2.5-flash:generateContent' \
-H 'Content-Type: application/json' \
--data '{"contents":[{"parts":[{"text":"ping"}]}]}'
实测依然返回 HTTP/2 401 和 Invalid token。

这里有一个看似反常、其实很重要的结论:在这次无 Key 探测里,401 反而是好消息。
它说明服务器已经识别了这个接口路径,并进入令牌校验。如果路径根本不存在,请求不会走到这一步。
我又故意把地址写错了一次
假设给 Claude Code 填写的 Base URL 已经带了 /v1,而客户端仍然追加 /v1/messages,最终地址就可能变成:
https://api.linktoagi.com/v1/v1/messages
我对这个错误地址发起了真实请求:
curl -i -X POST 'https://api.linktoagi.com/v1/v1/messages' \
-H 'Content-Type: application/json' \
--data '{"model":"endpoint-probe","max_tokens":1,"messages":[]}'
服务器返回:
HTTP/2 404
{"error":{"message":"Invalid URL (POST /v1/v1/messages)"}}
Gemini 的错误双重前缀 /v1/v1beta/... 也实测返回 404。
还有一种更隐蔽的错误:直接请求根目录下的 /responses,服务器可能返回控制台网页的 HTML,HTTP 状态甚至是 200。对浏览器来说页面“能打开”,但 Codex 期待的是 JSON API 响应,最终仍然无法正常工作。
所以不要用“浏览器能不能打开”判断 API 地址是否正确。
三种客户端到底是怎么拼接的

Claude Code
你填写:
https://api.linktoagi.com
客户端追加:
/v1/messages
最终请求:
https://api.linktoagi.com/v1/messages
Codex
你在自定义模型提供方中填写:
https://api.linktoagi.com/v1
Codex 的 Responses API 追加:
/responses
最终请求:
https://api.linktoagi.com/v1/responses
Gemini CLI
你填写:
https://api.linktoagi.com
客户端按 Gemini 协议追加 /v1beta/models/...,形成完整请求地址。
三份可以直接复制的配置
Claude Code
macOS / Linux 文件:~/.claude/settings.json
Windows 文件:C:\Users\你的用户名\.claude\settings.json
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.linktoagi.com",
"ANTHROPIC_AUTH_TOKEN": "替换为你创建的 API Key"
}
}
Codex
配置文件:~/.codex/config.toml
model_provider = "linkagi"
model = "替换为控制台中实际可用的模型名"
[model_providers.linkagi]
name = "LinkAGI"
base_url = "https://api.linktoagi.com/v1"
wire_api = "responses"
env_key = "LINKAGI_API_KEY"
macOS / Linux / WSL 当前终端设置 Key:
export LINKAGI_API_KEY="替换为你的 API Key"
Windows PowerShell:
$env:LINKAGI_API_KEY="替换为你的 API Key"
Gemini CLI
配置文件:~/.gemini/.env
GOOGLE_GEMINI_BASE_URL="https://api.linktoagi.com"
GEMINI_API_KEY="替换为你的 API Key"
看到报错时,不要再随机改地址
可以按这个顺序排查:
401 Unauthorized
路径通常已经正确到达令牌校验。检查:
- API Key 是否完整。
- 有没有复制进多余空格或换行。
- 客户端是否真的读取到了环境变量。
- 令牌是否被禁用、过期或额度不足。
404 / endpoint not found
优先检查:
- Base URL 是否重复带了
/v1。 - Codex 是否遗漏
/v1。 - Codex 是否配置了
wire_api = "responses"。 - 有没有把另一个客户端的地址直接照搬过来。
返回 HTML,不是 JSON
通常是请求落到了控制台前端页面,而不是 API 路由。HTTP 200 不代表 API 调用成功。
模型不存在或无权限
地址和 Key 可能都没问题。到控制台查看当前令牌分组允许使用的模型,把配置中的模型名改成完全一致的值。
最后,用两步确认配置真的成功
第一步,让客户端完成一个很小的只读任务,例如:
先不要修改文件。请告诉我这个项目的技术栈、入口文件和测试命令。
第二步,打开 LinkAGI 控制台查看调用记录。客户端有正常回复,并且控制台出现对应请求,配置才算完整跑通。
别再和 /v1 猜拳了。记住这个规律就够了:
- Claude Code:根地址。
- Codex:根地址后加
/v1。 - Gemini CLI:根地址。
需要创建 API Key,可以打开 https://api.linktoagi.com;分系统截图和完整客户端教程见 https://docs.linktoagi.com。
发布建议
推荐标题:
别再和
/v1猜拳了:Claude Code、Codex、Gemini CLI 的 API 地址一次填对
备选标题:
- 实测 401 和 404 后,我终于讲清楚 Base URL 要不要带
/v1 - Claude Code、Codex、Gemini CLI 地址速查:一张图看懂路径拼接
- API 地址明明能打开,为什么客户端还是报错?
推荐摘要:
同一个 API 域名,为什么 Claude Code 不带
/v1,Codex 却要带?本文真实请求三类协议端点,并故意构造错误路径,用 401、404 和路径拼接图把问题一次讲清楚。
推荐标签:
Claude Code Codex Gemini CLI AI 编程 API 开发工具