第 1 步
API 密钥是什么
API 密钥就是给程序用的密码。聊天软件或一条命令发出请求时带上它,Optimal API 才知道该从哪个账户扣费。
拿到这把密钥的人都可以花你的余额,请把它当成银行卡号。控制台只在创建的那一次显示完整密钥,之后只显示开头几个字符,用来区分不同的密钥。
如果弄丢了,就再创建一把,并作废旧的。作废会立刻生效。
入门教程
按顺序看。每张图都是为本教程画的控制台示意,方便你认出画面。线上控制台的界面文字是英文。
第 1 步
API 密钥就是给程序用的密码。聊天软件或一条命令发出请求时带上它,Optimal API 才知道该从哪个账户扣费。
拿到这把密钥的人都可以花你的余额,请把它当成银行卡号。控制台只在创建的那一次显示完整密钥,之后只显示开头几个字符,用来区分不同的密钥。
如果弄丢了,就再创建一把,并作废旧的。作废会立刻生效。
第 2 步
打开控制台,选择注册。填写姓名、邮箱,以及至少 8 位的密码。新账户余额为零。充值之前不能调用需要付费的模型。
进入概览后,你会看到余额、冻结金额和可用金额。冻结金额是还在进行的调用预留的钱。可用金额才是新请求能使用的部分。
第 3 步
打开充值页。金额从 1.00 到 10000.00,最多两位小数,然后选择方式。每个账户都可以使用支付宝、微信支付、USDT 或 USDC。
运营接好商户之后,支付宝和微信支付会打开平时的收银台。USDT 和 USDC 会打开加密货币账单。款项核对通过后,余额才会变化。回到概览刷新,可用金额应已更新。
如果商户密钥还没接上,控制台会用沙箱确认页代替真实收银台。页面上会标明 sandbox。确认之后,测试余额才会加上。
第 4 步
打开 API 密钥。起一个你记得住的名字,比如「笔记本」或聊天软件的名字。创建后,在离开页面前复制完整密钥。
把它存进密码管理器。控制台不能再次显示。你可以创建多把密钥,作废其中一把不会影响其他密钥。
第 5 步
一次请求就是把一段话和一个模型名发到 https://api.optimal-api.com/v1/chat/completions。下面的示例使用 auto,由 Optimal API 选择模型。你也可以把 auto 换成模型页上的名字,例如 gpt-4o-mini。
如果用终端,复制一段示例,把 OPTIMAL_API_KEY 设成刚创建的密钥,然后运行。正常情况会得到一句回复。出错时会返回带 code 的 JSON。常见代码在本指南末尾。
curl https://api.optimal-api.com/v1/chat/completions \
-H "Authorization: Bearer $OPTIMAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello"}]}'import json
import os
import urllib.request
request = urllib.request.Request(
"https://api.optimal-api.com/v1/chat/completions",
data=json.dumps({
"model": "auto",
"messages": [{"role": "user", "content": "Hello"}],
}).encode(),
headers={
"Authorization": "Bearer " + os.environ["OPTIMAL_API_KEY"],
"Content-Type": "application/json",
},
)
with urllib.request.urlopen(request) as response:
body = json.load(response)
print(body["choices"][0]["message"]["content"])const response = await fetch("https://api.optimal-api.com/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OPTIMAL_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "auto",
messages: [{ role: "user", content: "Hello" }],
}),
});
const body = await response.json();
if (!response.ok) {
console.error(body);
process.exit(1);
}
console.log(body.choices[0].message.content);第 6 步
不少桌面和网页聊天软件可以连接兼容 OpenAI 的地址。Optimal API 与这些软件没有隶属关系。设置项的名字不一样,填法是一样的。
文档里提供这类设置的软件包括 Chatbox、LobeChat、Open WebUI、NextChat、LibreChat 和 AnythingLLM。Cursor 和 Continue 也可以填写自定义的 OpenAI Base URL。
第 7 步
固定名字如 gpt-4o-mini 会一直请求那个模型;供应商失败时再走它的后备列表。auto 开头的名字则由网关排一个短名单,挑一个适合该任务的模型。
日常、希望标价更低时用 auto:cheap。普通工作用 auto 或 auto:balanced。希望质量分更高、并接受更高预留时用 auto:best。响应里会写出实际作答的模型。
第 8 步
概览显示余额、冻结金额和可用金额。用量页按日期和密钥汇总最近的调用,包括 Token 数和扣费。
节省与性能显示组织已开启的那些控制项少扣的费用。和另一个模型的对比会标明为估算。如果写着尚未测得,就是流量还不够公布一个数字。空白是故意的。
模型与价格页上有 ROI 计算器。它用你的每月 Token 量乘以平台测得的平均值。平均值不存在时,结果保持空白。
401 invalid_api_key
请求头缺失,密钥复制时多了空格或少了字符,或者密钥已作废。请新建一把,完整复制后再粘贴。Bearer 和密钥之间有一个空格。
402 insufficient_balance
账户无法为这次调用冻结预留。请到充值页增加余额。自动路由会按短名单里最贵的模型预留,所以看起来便宜的请求也可能需要更多余额。控制台会显示可用金额。
429 rate_limit_exceeded
每把密钥有请求次数和 Token 上限。等一会儿再发。继续加快只会继续返回 429。运营可以为组织提高上限。这是你自己的限额,和供应商是否繁忙是两回事。
404 model_not_found
对照模型页检查拼写。auto、auto:cheap、auto:balanced 和 auto:best 都是有效名字。运营停用的模型也会被拒绝。
不用。能填写 OpenAI 兼容 Base URL 的聊天软件就够了。需要时再使用代码示例。
请求格式与 OpenAI 的对话接口相同。主机是 api.optimal-api.com。OpenAI 的密钥不能用在这里,Optimal API 的密钥也不能用在 OpenAI。
模型页列出的是种子目录。线上控制台的列表才是你的密钥能够调用的,因为运营可以启用或停用模型。
输入 Token 和输出 Token 按每百万分别计价,再向上取整。价格页的试算把种子目录里的标价加总。测得的节省是另一个数字,没有数据时保持空白。
可以。填上那个模型的名字。供应商返回可重试错误时才会走后备。auto 是可选的。
可重试的失败会尝试链条上的下一个模型。如果都没有回答,不会按 Token 扣费,调用会返回一个可以重试的错误。
支付宝、微信支付、USDT 和 USDC,每个账户都可以用。控制台不提供 VNPay 和 MoMo。
不能。创建时请复制。如果没复制,就新建一把并作废丢失的那把。
新组织默认保存提示词,保留 30 天。所有者可以在组织页关闭「Store prompts and step outputs」。关闭之后,已结束的运行不再保留正文。
用页头的「状态」。它会打开公开的状态页。