OpenAI 兼容 API Endpoint 和 Base URL 区别

更新于 2026-11-01 · runapi.cfd

简答:一句话:Base URL 是客户端配置的 API 根地址,Endpoint 是包含具体操作路径的完整请求地址;配置框通常填根地址,代码或 SDK 再访问 /models、/chat/completions 等 Endpoint。/v1 是否保留,必须以服务商文档和客户端的拼接规则为准,不能一概而论。本文只覆盖 OpenAI 兼容 HTTP API 的地址配置与最小验证,不讨论具体服务商的价格、可用性或性能。

定义:Base URL 是 SDK 用来拼接请求的根地址,Endpoint 是最终实际发送 HTTP 请求的完整地址。

先记住这条规则:配置填 Base URL,请求使用 Endpoint

假设服务商文档给出的完整聊天请求地址是 https://api.example.com/v1/chat/completions,可以把它拆成四层:

部分示例作用
协议https://决定使用 HTTPS 还是其他传输协议。
主机api.example.com服务所在的域名或网关地址。
Base Path/v1接口版本或网关前缀,是否存在要看服务商文档。
Operation Path/chat/completions具体操作,例如聊天、模型列表或嵌入。
完整 Endpointhttps://api.example.com/v1/chat/completions一次 HTTP 请求最终访问的地址。

因此,很多 SDK 的 base_url 或 baseURL 应填写 https://api.example.com/v1,而不是把 /chat/completions 也放进去。官方 Python SDK 提供了 base_url 参数,并展示了使用带版本路径的自定义地址;官方 Node.js SDK 则使用 baseURL 配置自定义 API 根地址,具体拼接仍取决于 SDK 和服务端实现。可分别查看 OpenAI Python SDK 文档 与 OpenAI Node.js SDK 文档。

最短判断方法:如果配置项叫 Base URL、API Base、API Host 或 API Root,先填到版本根路径;如果字段明确叫 Endpoint,才考虑填写完整操作地址。

Base URL、Endpoint 和 API Path 到底有什么区别

Base URL 是客户端建立请求的起点。SDK 通常会在它后面拼接资源路径,例如模型列表或聊天路径。它解决的是“请求发到哪个 API 根地址”。

Endpoint 是一个可以直接发起请求的完整接口地址,例如 https://api.example.com/v1/models。它解决的是“这次请求执行哪个操作”。同一个 Base URL 可以对应多个 Endpoint。

API Path 通常只指 URL 中的路径部分,例如 /v1/models 或 /v1/chat/completions。在反向代理场景中,Base URL 可能还包含额外前缀,例如 https://gateway.example.com/ai/v1。这时不能只凭经验删除 /ai 或 /v1,应根据服务端实际路由核对。

OpenAI API 参考文档把模型列表、聊天请求、Responses、Embeddings 等列为不同的 API 操作;这说明“一个根地址对应多个操作路径”是接口设计中的常见分工。参考 OpenAI API Reference 中的 API 路径目录。

最小验证流程:先测 /models,再测聊天请求

不要一开始就把完整配置填入桌面客户端。先用一个不会泄露密钥的终端请求确认地址、认证和模型是否基本可用。下面的域名、模型名和密钥都是示例值,发送前必须替换并核实。

  1. 确认 Base URL:从服务商当前文档复制 API 根地址,确认是否包含 /v1、反向代理前缀或其他版本路径。
  2. 确认最终 URL:把 Base URL 与目标操作路径拼接,避免重复出现 /v1 或 /chat/completions。
  3. 先请求模型列表:使用 GET 请求检查路径和 Key;官方文档展示了通过 GET /v1/models 搭配 Bearer 认证的请求形式,见 OpenAI API 认证与 API Reference。
  4. 再发最小聊天请求:确认模型 ID 来自当前服务端返回或其文档,不要直接照抄其他平台的模型名。

curl 示例:

curl "$BASE_URL/models" -H "Authorization: Bearer $API_KEY"

curl "$BASE_URL/chat/completions" -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{"model":"MODEL_ID","messages":[{"role":"user","content":"只回复:ok"}]}'

这里的 BASE_URL 应该是类似 https://api.example.com/v1 的示例根地址,而不是完整的 /chat/completions。如果服务商文档要求不带 /v1,就必须按其文档调整。OpenAI 官方文档说明 API Key 应通过 Bearer 认证发送,并提醒不要把密钥暴露在浏览器或客户端代码中;不要在排错命令中打印完整 Key,参考 官方认证说明。

Python、Node.js 与 curl 的配置差异

不同客户端对路径的拼接方式可能不同,所以“Base URL 永远带 /v1”或“Base URL 永远不带 /v1”都不是可靠规则。可靠做法是查看当前 SDK 文档、检查请求日志中的最终 URL,再决定填写方式。

Python:使用 base_url

from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.example.com/v1")

result = client.chat.completions.create(model="MODEL_ID", messages=[{"role": "user", "content": "只回复:ok"}])

官方 Python SDK 支持在客户端中设置 base_url,并由资源方法发起具体操作请求。若出现路径重复,应查看 SDK 的请求日志或网络记录,确认它是否已经自动追加了版本路径。

Node.js:使用 baseURL

import OpenAI from "openai";

const client = new OpenAI({ apiKey: process.env.API_KEY, baseURL: "https://api.example.com/v1" });

const result = await client.chat.completions.create({ model: "MODEL_ID", messages: [{ role: "user", content: "只回复:ok" }] });

官方 Node.js SDK 的配置字段写作 baseURL,不是 Python 风格的 base_url;字段名错误可能导致客户端忽略配置或直接报参数错误,具体以当前 SDK 版本文档为准。

curl:直接写完整 Endpoint

curl "https://api.example.com/v1/chat/completions" -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{"model":"MODEL_ID","messages":[{"role":"user","content":"只回复:ok"}]}'

curl 不会替你拼接路径,因此必须直接写完整 Endpoint。这也是最适合核对最终 URL 的方式。

常见填错方式与对应排查顺序

现象常见原因先检查什么
401凭据未发送、Key 错误、Bearer 格式错误或服务端认证规则不同。查看请求头是否存在 Authorization,再核对 Key 权限和服务商认证文档。
404Base URL 路径错误、漏写或重复写 /v1,或者把完整 Endpoint 当成 Base URL。打印或查看最终请求 URL,逐段比对域名、前缀、版本和操作路径。
405路径存在,但 HTTP 方法不匹配,例如用 GET 请求发送聊天操作。确认接口要求 GET、POST 还是其他方法,并查看响应体。
返回 HTML请求落到了网站首页、登录页、反向代理错误页或错误网关。查看响应头中的 Content-Type、最终 URL 和重定向记录。
model not found地址和认证可能已经通过,但模型 ID 不属于当前服务或当前 Key 无权访问。先读取当前服务的模型列表或模型文档,再替换模型字段。
请求成功但参数报错协议层兼容,不等于所有字段、工具调用、流式输出或 Responses 能力完全兼容。先用最小非流式聊天请求,再逐项增加参数。

上表是通用排查框架,不把某个状态码强行归因于某一家服务。最终仍应以响应体、响应头和客户端日志为准。排查顺序建议固定为:凭据 → 最终 URL → HTTP 方法 → 模型 → 权限或区域 → 最小请求 → 错误响应体。

OpenAI 兼容不代表所有接口能力都兼容

“OpenAI 兼容”通常表示服务端提供了部分相似的认证方式、请求结构或路径,但不自动表示 Chat Completions、Responses、Embeddings、Streaming、Tool Calling 等能力全部可用。OpenAI 当前 API Reference 将 Responses、Chat Completions、Embeddings、Models 等作为不同接口类别列出,具体能力需要逐项查看服务商文档和实际响应,参考 官方 API Reference 目录。

建议采用渐进式验证:第一步只测试模型列表;第二步发送一个最小非流式聊天请求;第三步再测试流式;第四步才加入工具调用、结构化输出或其他高级参数。若第二步已经失败,不要通过增加参数来“试出来”,先回到 Base URL、最终路径和模型 ID。

如果服务端只兼容 Chat Completions,而客户端默认请求 Responses,可能出现 404、405 或参数不支持。此时应在客户端中选择对应协议,或者改用能够指定请求路径的 SDK;不要仅仅修改域名后缀。

配置前的五项自查清单

  • 我拿到的是 Base URL,还是完整 Endpoint?
  • Base URL 是否已经包含服务商要求的 /v1 或代理前缀?
  • SDK 是否会自动追加 /models、/chat/completions 或其他路径?
  • 模型 ID 是否来自当前服务的文档或模型列表,而不是从其他平台复制?
  • 我是否查看了实际响应体和最终 URL,而不是只根据 401、404 或 405 猜原因?

只要这五项都能确认,绝大多数 Endpoint 与 Base URL 的配置问题都能在接入客户端前定位。

常见问题

Base URL 一定要带 /v1 吗?

不一定。是否带 /v1 取决于服务端路由和客户端拼接规则。应先看当前服务商文档,再通过 /models 和最小聊天请求核对最终 URL;不要把 /v1 当成所有兼容接口的固定规则。

可以把 /chat/completions 填进 Base URL 吗?

通常不建议。多数 SDK 会在 Base URL 后自动追加聊天、模型或其他操作路径,把完整 Endpoint 填入 Base URL 可能导致重复路径和 404。只有当客户端字段明确要求完整 Endpoint 时,才按其说明填写。

为什么 Base URL 正确,还是返回 404?

先查看最终请求 URL,而不是只看配置框。常见线索包括重复 /v1、重复 /chat/completions、反向代理前缀缺失、客户端请求了服务端不支持的协议,或模型服务只提供某一种 API 路径。

401 和 404 哪个说明 Base URL 填错了?

不能仅凭状态码下结论。401 更应先查看 Authorization 和 Key 权限,404 更应核对最终路径,但网关、代理和服务端也可能返回自定义状态码。必须结合响应体、响应头和日志判断。

OpenAI 兼容接口可以直接使用所有 OpenAI SDK 功能吗?

不能保证。兼容通常只覆盖部分协议和参数。应先验证基础聊天请求,再分别测试 Responses、Embeddings、Streaming、Tool Calling 等能力;不支持的功能需要改用服务端支持的路径或参数。

相关阅读

参考资料

  1. OpenAI API Reference:接口目录、认证与模型请求
  2. OpenAI Python SDK:base_url 配置与客户端用法
  3. OpenAI Node.js SDK:baseURL 配置与客户端用法
温馨提示
置顶

【RunAPI 新域名启用通知】
https://runapi.host
原域名 runapi.cfd 需要使用代理才能访问,RunAPI 现已启用新域名: https://runapi.host

新域名可直接访问,账户、余额及服务数据均不受影响。(注意:新域名在非代理环境下只可见国内模型,api调用不受影响)

2 个月前 · 2026-08-07 11:30

claude-haiku-5.5已上线

14 小时前 · 2026-10-09 12:14

gemini-nano-banana-2.1已上线

1 天前 · 2026-10-08 21:58

🎉 国庆限时充值 9 折! 10 月 2 日 18:00:00 — 10 月 7 日 23:59:59,点击任意额度充值并选择支付宝支付,支付页面将自动享受 9 折优惠!

⚠️ 本次优惠仅限支付宝支付,Creem 支付暂未同步折扣,仍按原价结算。

1 周前 · 2026-10-02 19:02

gpt-6.1-sol已上线

1 周前 · 2026-10-01 23:20

claude-sonnet-5-5已上线
coding和claude_normal分组可使用

1 周前 · 2026-09-29 18:20

claude-opus-5-5, gpt-6-sol已上线

2 周前 · 2026-09-23 14:11

grok-4.7上线,grok、default分组可用
支持chat, responses,messages格式

2 周前 · 2026-09-22 13:35

【分组更新通知】
deepseek-sale分组上线,价格5折,支持v1/messages;v1/responses;v1/chat/completions格式请求

deepseek-v4.1-flash同步上线

提示:glm-sale和kimi-sale分组价格5折,接口均服务正常

3 周前 · 2026-09-13 23:10

gpt-image-2.5上线

0 个月前 · 2026-09-10 21:49

因官方下架gpt-5.4模型,平台codex分组已同步下架,需要调用该模型可切换至default/plus分组使用

1 个月前 · 2026-09-06 16:27

gpt-6-astra已上线

1 个月前 · 2026-09-05 14:58

gemini-3.8-flash已上线

1 个月前 · 2026-09-05 04:06

claude-fable-5-1已上线

1 个月前 · 2026-09-03 13:33

【分组更新通知】
1.kimi-sale分组5折
2.glm-sale分组5折
3.grok分组降价为0.7折,资源为grok heavy
以上均可通过v1/chat/completions;v1/responses;v1/messages格式调用

1 个月前 · 2026-09-03 10:50

glm-5.3, glm-5.3-flash
qwen3.8-flash, qwen3.7-flash
均已上线,default分组即可调用

1 个月前 · 2026-08-27 22:46

【公告】关于模型访问受限域名的处理说明
为遵守相关合规要求,平台已对模型访问政府类网站(gov域名)实施限制。
若您在对话过程中遇到提示“内容审计命中风险规则,请调整输入后重试”的报错,烦请移除对话中涉及的gov相关链接后再重新请求。
感谢您的理解与配合。

1 个月前 · 2026-08-22 22:11

最近codex更新后,如果遇到“401 token not provided”这个错误,是因为环境变量失效,重新配置后重启codex即可

1 个月前 · 2026-08-22 00:51

gemini-3.7-flash上线

1 个月前 · 2026-08-15 23:21

grok-4.6
qwen3.8-max
均已上线

1 个月前 · 2026-08-13 15:49