接入教程
把 base_url 指到 Y-API,其余代码不用改。下面的示例可以直接复制运行,11 个模型共用同一套写法。
第一步
基础配置
在任何 OpenAI 兼容的 SDK 中替换这三项即可。api_key 在控制台的「API 密钥」页取;model 填「可用模型」里的任意一个 ID。
- base_url
- https://api.y-api.bestvirtualgoods.com/v1
- api_key
- sk-...(控制台创建)
- model
- deepseek/deepseek-v4-flash
在写 agent,或者要自动生成客户端代码?机器可读的 OpenAPI 3.1 规范里有本站真实存在的三个端点、请求与响应的每一个字段,以及哪些失败会被 SDK 自己重试。
模型清单也发了一份 JSON,读它不需要 key:每个模型 ID、所属厂商,以及额度价与实付价两种口径。网关自己的 GET /v1/models 是要 key 的——这份是它的免鉴权等价物,数据截至上一次构建。
第二步
发出第一个请求
三种写法等价,挑你在用的那个复制走。
curl https://api.y-api.bestvirtualgoods.com/v1/chat/completions \
-H "Authorization: Bearer $YAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4-flash",
"messages": [{"role": "user", "content": "你好"}]
}'import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.y-api.bestvirtualgoods.com/v1",
api_key=os.environ["YAPI_KEY"], # 控制台创建的密钥
)
response = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "你好"}],
)
print(response.choices[0].message.content)import OpenAI from 'openai'
const client = new OpenAI({
baseURL: 'https://api.y-api.bestvirtualgoods.com/v1',
apiKey: process.env.YAPI_KEY, // 控制台创建的密钥
})
const response = await client.chat.completions.create({
model: 'deepseek/deepseek-v4-flash',
messages: [{ role: 'user', content: '你好' }],
})
console.log(response.choices[0].message.content)进阶
流式输出
加上 stream 参数即可,返回的数据块格式与 OpenAI 一致,客户端不需要特殊处理。
stream = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "你好"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")进阶
切换模型
所有模型共用同一个 base_url 与同一把密钥,切换只需要改 model 字段。完整清单见「可用模型」页。
# 便宜、适合高频与批量任务
client.chat.completions.create(model="deepseek/deepseek-v4-flash", messages=msgs)
# 能力更强,适合复杂推理
client.chat.completions.create(model="deepseek/deepseek-v4-flash", messages=msgs)排查
错误处理
两类错误最常见,都会在控制台的请求日志里留下记录。
| 状态码 | 含义 | 怎么处理 |
|---|---|---|
| 401 | 含义密钥无效或已被吊销。 | 怎么处理到控制台的「API 密钥」页确认密钥仍然存在,或重新创建一把。 |
| 403 | 含义账户额度已耗尽。不是 429——而且消息是中文的,用英文搜索什么都搜不到。 | 怎么处理到 https://y-api.bestvirtualgoods.com/app/billing 充值后立即恢复,密钥保持有效,不需要改动代码。 |
不要拿状态码去推原因:本站返回的 8 个状态码里有 5 个的含义与数字本身不符,其中 2 个还会被官方 SDK 默认静默重试两次,之后才轮到你的程序看见。错误码参考页逐条列出了全部,并附上各自实际返回的原文。
全部错误码,逐条实测 →