入门教程

不会写代码,也可以用 Optimal API。

按顺序看。每张图都是为本教程画的控制台示意,方便你认出画面。线上控制台的界面文字是英文。

第 1 步

API 密钥是什么

API 密钥就是给程序用的密码。聊天软件或一条命令发出请求时带上它,Optimal API 才知道该从哪个账户扣费。

拿到这把密钥的人都可以花你的余额,请把它当成银行卡号。控制台只在创建的那一次显示完整密钥,之后只显示开头几个字符,用来区分不同的密钥。

如果弄丢了,就再创建一把,并作废旧的。作废会立刻生效。

控制台示意图。线上页面可能还有更多字段。

第 2 步

注册账户

打开控制台,选择注册。填写姓名、邮箱,以及至少 8 位的密码。新账户余额为零。充值之前不能调用需要付费的模型。

进入概览后,你会看到余额、冻结金额和可用金额。冻结金额是还在进行的调用预留的钱。可用金额才是新请求能使用的部分。

控制台示意图。线上页面可能还有更多字段。

第 3 步

充值

打开充值页。金额从 1.00 到 10000.00,最多两位小数,然后选择方式。每个账户都可以使用支付宝、微信支付、USDT 或 USDC。

运营接好商户之后,支付宝和微信支付会打开平时的收银台。USDT 和 USDC 会打开加密货币账单。款项核对通过后,余额才会变化。回到概览刷新,可用金额应已更新。

如果商户密钥还没接上,控制台会用沙箱确认页代替真实收银台。页面上会标明 sandbox。确认之后,测试余额才会加上。

控制台示意图。线上页面可能还有更多字段。

第 4 步

创建 API 密钥

打开 API 密钥。起一个你记得住的名字,比如「笔记本」或聊天软件的名字。创建后,在离开页面前复制完整密钥。

把它存进密码管理器。控制台不能再次显示。你可以创建多把密钥,作废其中一把不会影响其他密钥。

控制台示意图。线上页面可能还有更多字段。

第 5 步

发出第一次请求

一次请求就是把一段话和一个模型名发到 https://api.optimal-api.com/v1/chat/completions。下面的示例使用 auto,由 Optimal API 选择模型。你也可以把 auto 换成模型页上的名字,例如 gpt-4o-mini。

如果用终端,复制一段示例,把 OPTIMAL_API_KEY 设成刚创建的密钥,然后运行。正常情况会得到一句回复。出错时会返回带 code 的 JSON。常见代码在本指南末尾。

curl
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"}]}'
Python
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"])
Node.js
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。

  1. 打开软件的模型或供应商设置。
  2. 选择 OpenAI,或自定义的 OpenAI 兼容供应商。
  3. Base URL 填 https://api.optimal-api.com/v1。
  4. 粘贴控制台里的 API 密钥。
  5. 模型填 auto,或模型页上的名字。
  6. 发一句「你好」。能收到回复,就说明密钥、余额和地址都通了。
  7. 如果软件提示找不到地址,它可能自己又加了一次 /v1。可以试试去掉 /v1 的 Base URL。如果它要完整的对话地址,填 https://api.optimal-api.com/v1/chat/completions。
控制台示意图。线上页面可能还有更多字段。

第 7 步

自己选模型,或交给 auto

固定名字如 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 的接口吗?

请求格式与 OpenAI 的对话接口相同。主机是 api.optimal-api.com。OpenAI 的密钥不能用在这里,Optimal API 的密钥也不能用在 OpenAI。

可以填哪些模型?

模型页列出的是种子目录。线上控制台的列表才是你的密钥能够调用的,因为运营可以启用或停用模型。

一次调用怎么收费?

输入 Token 和输出 Token 按每百万分别计价,再向上取整。价格页的试算把种子目录里的标价加总。测得的节省是另一个数字,没有数据时保持空白。

可以一直用同一个模型吗?

可以。填上那个模型的名字。供应商返回可重试错误时才会走后备。auto 是可选的。

供应商宕机会怎样?

可重试的失败会尝试链条上的下一个模型。如果都没有回答,不会按 Token 扣费,调用会返回一个可以重试的错误。

支持哪些付款方式?

支付宝、微信支付、USDT 和 USDC,每个账户都可以用。控制台不提供 VNPay 和 MoMo。

控制台能再显示一次密钥吗?

不能。创建时请复制。如果没复制,就新建一把并作废丢失的那把。

提示词会保存吗?

新组织默认保存提示词,保留 30 天。所有者可以在组织页关闭「Store prompts and step outputs」。关闭之后,已结束的运行不再保留正文。

去哪里看接口是否正常?

用页头的「状态」。它会打开公开的状态页。