返回文章中心

别再和 /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 等不同协议路径。

LinkAGI 控制台首页实拍

这已经透露了正确理解方式:

我实际请求了三个端点

测试时间: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 401Invalid 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 401Invalid 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 地址是否正确。

三种客户端到底是怎么拼接的

Base URL 与最终请求地址的关系

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

路径通常已经正确到达令牌校验。检查:

404 / endpoint not found

优先检查:

返回 HTML,不是 JSON

通常是请求落到了控制台前端页面,而不是 API 路由。HTTP 200 不代表 API 调用成功。

模型不存在或无权限

地址和 Key 可能都没问题。到控制台查看当前令牌分组允许使用的模型,把配置中的模型名改成完全一致的值。

最后,用两步确认配置真的成功

第一步,让客户端完成一个很小的只读任务,例如:

先不要修改文件。请告诉我这个项目的技术栈、入口文件和测试命令。

第二步,打开 LinkAGI 控制台查看调用记录。客户端有正常回复,并且控制台出现对应请求,配置才算完整跑通。

别再和 /v1 猜拳了。记住这个规律就够了:

需要创建 API Key,可以打开 https://api.linktoagi.com;分系统截图和完整客户端教程见 https://docs.linktoagi.com


发布建议

推荐标题:

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

备选标题:

推荐摘要:

同一个 API 域名,为什么 Claude Code 不带 /v1,Codex 却要带?本文真实请求三类协议端点,并故意构造错误路径,用 401、404 和路径拼接图把问题一次讲清楚。

推荐标签:

Claude Code Codex Gemini CLI AI 编程 API 开发工具