Cursor 接自定义 API:先看清它覆盖不到的地方
先讲限制再讲配置。很多人配完发现账单没变化,不是配错了,是这个开关本来就管不到那部分。
口径核对时间 2026-08 · Cursor 版本迭代很快,最终以你当前版本与 Cursor 官方文档为准
最容易白忙一场的一点:Cursor 的 Override OpenAI Base URL 只作用于会话面板里走 OpenAI 兼容模型的请求。Tab 自动补全,以及 Cursor 自家的 Composer 系列模型,仍然由 Cursor 官方后端提供——它们不会因为你配了自定义 Base URL 就转走。
换句话说:配完之后,你日常用得最多的那部分很可能一点没变便宜。想清楚这条再往下配,就不会有落差。配置本身只有三步:填 key、填以 /v1 结尾的 Base URL、添加模型名后 Verify。
一、边界:哪些会走你的 API,哪些不会
| Cursor 功能 | 会走自定义 Base URL 吗 | 说明 |
|---|---|---|
| 会话面板(Chat / Ask) | ✅ 会 | 选中你手动添加的 OpenAI 兼容模型时 |
| Plan / 规划类对话 | ✅ 通常会 | 同上,取决于当前选中的模型 |
| Composer 等 Cursor 自研模型 | ❌ 不会 | 选中这类模型时会直接提示不支持自定义 key |
| Tab 自动补全 | ❌ 不会 | 由 Cursor 自己的补全模型提供 |
| 行内编辑 / 代码索引等内部能力 | ❌ 不会 | 由 Cursor 后端承担 |
这张表怎么来的、可信度多少:来自 Cursor 官方文档与社区一致反馈的交叉口径(2026-08 核对),不是我们的实测承诺。Cursor 每次发版都可能调整这条边界。真要确认,最直接的办法是配好之后看网关侧的调用日志:哪些操作产生了调用、哪些没有,一目了然。
二、三步配置
- 填 key:Cursor Settings → Models → OpenAI API Key,填入你在土土金控制台生成的令牌。
- 开覆盖并填地址:勾选 Override OpenAI Base URL,填
https://api.tutujin.com/v1。 - 加模型名并 Verify:在模型列表里手动添加网关实际提供的模型名,例如
gpt-4o、gpt-4.1、gpt-4o-mini,然后点 Verify。
模型名必须与 /api/pricing 里的写法完全一致——很多模型名带日期后缀,写短了 Verify 一定过不去。可用模型清单见模型与接口页。
三、/v1 结尾的坑
| 写法 | 结果 |
|---|---|
https://api.tutujin.com/v1 | ✅ 正确 |
https://api.tutujin.com | ❌ 少了 /v1,请求打到 /chat/completions → 404 |
https://api.tutujin.com/v1/chat/completions | ❌ 写全了,会被再拼一次 → 404 |
https://api.tutujin.com/v1/ | ⚠️ 结尾多一个斜杠,部分版本会拼出 //chat/completions |
顺带记一下三个工具的约定,省得互相串味:Cursor 与 OpenAI SDK 都要带 /v1;Claude Code 的 ANTHROPIC_BASE_URL 不要带(详见 Claude Code 页)。
四、内置模型和自定义模型并存,会导致调度混乱
开启覆盖之后,模型下拉里同时存在两类条目:Cursor 内置的(走官方后端)和你手动添加的(走你的网关)。名字相同或相近时,很容易在切换会话后不知不觉切回内置模型,然后你会得到两个误判之一:
- 「配了没生效」——其实是当前会话选的是内置模型;
- 「网关没扣费所以是免费的」——其实请求根本没到网关。
建议:把用不到的同系列内置模型关掉,只留你自己添加的那几个;然后拿网关的调用日志作为唯一判据。
五、Verify 失败怎么查
| 现象 | 先查什么 |
|---|---|
| Verify 报网络/连接失败 | Base URL 拼写、是否以 /v1 结尾、有没有多余斜杠 |
| Verify 报 401 / 鉴权失败 | 令牌是否正确、是否被删、余额是否充足 |
| Verify 报模型不存在 | 模型名写法(带日期后缀的要写全)、该模型是否在你的分组 |
| 提示该模型不支持自定义 key | 你选中的是 Cursor 自研模型,换成你添加的 OpenAI 兼容模型 |
| 配置看似都对但就是不通 | 先用 curl 绕开 Cursor 验一次(见下) |
curl https://api.tutujin.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TUTUJIN_KEY" \
-d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"ping"}]}'
这条 curl 能正常返回内容,说明网关侧没问题,剩下的就都是 Cursor 侧配置。若返回 401 或 404,先按 SDK 迁移页的报错速查表排查。
六、想让编码 Agent 全程走自己的 API?
如果你的真实目的是「把编码 Agent 的所有请求都换成自己的 API」,Cursor 这条路天生做不到——它的核心能力就建立在自家后端上。更直接的路线是 Claude Code + ANTHROPIC_BASE_URL:那条路是整条链路都走你指定的地址,配置见 Claude Code 接第三方 API。
成本上也要算清楚:Cursor 是订阅制、额度用完才按量;自建 Agent 是纯按量。哪个便宜取决于你的用量,把两边的单价按计费公式各算一遍再决定,别凭感觉。
常见问题
配了自定义 API 为什么没省钱?
因为 Tab 补全与 Cursor 自研模型不走这个开关,而它们往往正是你用量最大的部分。判断方法:看网关的调用日志——没有调用记录就说明请求根本没过来。
Base URL 要不要带 /v1?
要带,填 https://api.tutujin.com/v1;不要写到 /chat/completions,也注意结尾别多斜杠。
Verify 一直失败?
按顺序查:Base URL 结尾 → 令牌与余额 → 模型名写法与分组 → 是否选中了 Cursor 自研模型。都排掉之后,用上面那条 curl 绕开 Cursor 验一次。
能不能让 Composer 或 Tab 也走中转?
按目前公开信息不能。要整条链路走自己的 API,请改走 Claude Code 路线。
模型下拉里没有我添加的模型?
模型名要与 /api/pricing 完全一致(注意日期后缀),且必须在你所属分组内、且是对话类模型。同时建议关掉同名内置模型。