博客

用自己的 API key 配置 Cursor:自定义端点设置与排错

把 Cursor 指向一个 OpenAI-compatible 端点,归结为三件必须对齐的事:端点地址、一个能用的 key,以及该端点上存在的 model ID。下面是配置步骤、错误排查,以及一轮五项验证。

用自己的 API key 配置 Cursor:自定义端点设置与排错

把 Cursor 指向你自己的 OpenAI-compatible 端点,归结为三件必须对齐的事:端点地址(包括/v1路径);端点接受的 key;以及该端点上确实存在的 model ID。配置本身很小,之后几乎每一次失败都是这三者之一对不上。本指南覆盖 Cursor 特有的配置、与订阅并用时实际会改变什么、常见错误的排查表,以及一轮五项验证,能在你提任何工单之前解决大部分疑问。

三件必须对齐的事

先把这三个值写下来,因为本文大部分内容都在讲它们如何彼此漂移。

端点。对 String AI 来说是https://www.string.ink/v1。/v1后缀是地址的一部分,在不该加的地方加上它、或在该保留的地方丢掉它,都是经典的 404 制造方式。出现 404 时,第一件事就是把这个字符串和设置字段里的值逐字符念出来对照。

Key。从你账号页面获取的平台 key。所有 key 材料都不要进截图和聊天;本指南唯一使用的占位符是你本地替换掉的YOUR_API_KEY风格文本。

Model ID。你输入的任何模型名,都必须在端点上此刻真实存在,而不是存在于你对它的记忆里。平台的模型列表端点GET /v1/models,是实时的清单,文档示例里包含像gpt-6-astra、gpt-5.6-luna和claude-opus-4-8这样的 ID。

Cursor 是需要同样处理方式的工具之一;如果你想先看多工具总览,用一个 key 打通编码工具指南覆盖了共同的部分,本文只谈 Cursor。

Cursor 配置:API key 设置与 Override OpenAI Base URL

Cursor 把凭据保存在编辑器的模型设置里。平台的文档按字段级别走了一遍 Cursor 的流程:点左下角的设置图标,选择Models侧边栏项,展开API Keys区域,把你的 key 填进OpenAI API Key字段。然后打开Override OpenAI Base URL开关,并输入https://www.string.ink/v1到它下面的字段里。保存之后,端点的模型就在 Cursor 里可用了。

如果这是你第一次在 Cursor 里配置自定义 API key,Cursor 自己的Bring your own API key页面上有几条机制值得在判断结果之前先了解。自定义 key 只作用于 chat 模型;Tab 补全无论如何都继续使用 Cursor 内置的模型。如果 key 无效或被厂商拒绝,使用该厂商的请求会一直失败,直到你更新或移除这个 key,所以一次失败的测试本身就是一个数据点。key 也不存储在 Cursor 的服务器上:请求会经过 Cursor 的基础设施做 prompt 构建,key 随每次请求传输。这种路由模型有一个实际后果值得早点记住,因为它能解释好几个令人困惑的症状:你的端点必须能从公网访问,而不只是从你的机器访问。像 String AI 这样的托管平台端点天然满足这一点;本地笔记本上的服务器则不行,除非你做隧道。

保存之后,在新的对话里测试,而不是复用旧对话;如果第一次尝试仍然表现得像之前的配置,先重启一次编辑器,再开始改值。全新会话读取配置最可靠;这个习惯只花几秒钟,却能省掉一整轮方向错误的调试。

与 Cursor 订阅并用

自带端点并不要求放弃 Cursor 的订阅,两者可以共存,但有一些约束你应当理解,而不是撞上才知道。

订阅这一侧继续提供产品层体验和 Cursor 自己的模型目录。端点这一侧提供目录之外的模型选择、落在你自己平台账号上的用量,以及可以在整个团队里保持一致的配置。实际变化是:只有 chat 模型使用你的 key,Tab 仍用内置模型,而且某些套餐级别的计量可能仍会识别用你自己 key 发出的请求(取决于套餐),所以要查官方页面,确认你的套餐里自定义 key 与包含额度之间的关系。那一页还明确写了另一个边界:使用自己的 key 时,Cursor 的零数据留存策略不适用;数据处理遵循你所配置的厂商。企业团队还可以在团队看板上完全禁止个人 API key,所以在一个账号上可用的设置,在另一个账号上可能被管理策略隐藏掉。

要留意的摩擦不在任何一方有错,而在于多种配置共存时的优先级混乱:订阅登录、厂商 key、端点覆盖同时存在。把这种共存当成一组需要追踪的开关,而不是一场比赛;每个开关各有职责,你的职责是知道哪个是打开的。每台机器保持一个事实来源,记录哪个在哪里生效,当你之后轮换 key 或把整套配置搬到别处时,把厂商切换演示和本文放在一起看。

错误排查:从 401 到 model not found

下面的错误覆盖了几乎所有的第一天失败。读症状、查层级、应用修复。

| 症状 | 层级 | 修复 |
| --- | --- | --- |
| 401 unauthorized | Key | 从账号页面重新完整复制 key 到 OpenAI API Key 字段;确认你改的是你以为的那个字段;被吊销或被截断的 key 正是这样失败的 |
| 每个请求都 404 not found | 路径 | base URL 必须是https://www.string.ink/v1,并保留/v1路径;在动任何别的地方之前,先核对你粘贴的确切字符串 |
| Cursor 报告 model was not found | 模型 | 你的模型名与端点上实时的 ID 不匹配;运行GET /v1/models并精确复制名称;Cursor 自己的可用模型页面也定义了在其目录里“模型不可用”意味着什么 |
| Connection refused 或超时 | 网络 | 端点必须能从 Cursor 的服务器公网访问;检查公司出网规则和代理,并注意即使 key 有效,厂商也可能封锁某些地区,正如 Cursor 的地区参考所描述的那样 |
| 请求能用但某些行为不同 | 协议 | 客户端与端点之间在 streaming 和 tool calling 上的差异是一类已知的不匹配;在怪 Cursor 之前,先对端点跑一遍兼容性清单 |

所有行之上有一条元规则:一次只改一个字段。这张表之所以有用,是因为每个层级失败时都有独特的签名,而只有在你自上次测试以来没有改过三样东西时,这个签名才保持可读。写下你改了哪个字段、症状是什么;改过 base URL 之后的 404 和近期没做任何改动的 404 是两个不同的故事,即使它们看起来一模一样。

一轮五项验证

任何改动之后,按顺序做这些。每一项隔离一个层级,所以失败会告诉你该往哪里看。

  1. 列出模型。在终端里用你的 key 调用GET /v1/models,确认你打算用的 ID 存在,且拼写与端点报告完全一致。
  2. 发一次最小调用。从终端发一个小的 chat completion,和五步快速上手一样的纪律,确认用你的 key 和端点是能拿回响应的。
  3. 回到 Cursor。开一个新对话,选择模型,发一个真实请求。如果第二步成功而这一步失败,问题在编辑器配置,不在端点;如果两者都失败,问题在端点或 key。
  4. 检查用量落在哪里。确认请求出现在你平台账号和你这个 key 名下的用量记录里,这样你就知道没有任何东西在悄悄用别人的凭据。
  5. 给配置拍个快照。记录你改了哪些字段、它们现在是什么值(去掉密钥本身)。有这份快照,下一次改动才是回滚,而不是重建。

先终端、后编辑器,这个顺序能把调试时间减半:它在你花任何力气之前,就把每次失败分成“编辑器之前”和“编辑器之内”。

接下来看什么

  • 选择在这套配置背后放什么。 按约束选模型是上面模型名那一步的决策框架。
  • 已经连上了?上面链接的支柱指南、快速上手和清单,覆盖了从第一次调用到验证完成的完整路径。

先让三个值对齐,在终端里验证,让编辑器做最后一公里,而不是第一个嫌疑人。