第三方接口参考

写给做第三方软件的人或兼容插件类开发。使用 sk- 密钥,就能在自己的软件里调用模型、读取账号余额。

认证

每个请求在请求头里带上密钥:

Authorization: Bearer sk-你的密钥

密钥在站点「个人资料 → 令牌」里创建,默认令牌即可。

Tip

本页所有接口都只认 sk- 密钥。密钥管理、日志、订阅、系统设置这类管理接口需要另一种凭据(「访问令牌」),不在本页范围。

一、调用模型(OpenAI 兼容)

Base URL: https://flowbee.top/v1

完全按 OpenAI 的格式,现成客户端不需要改代码。常用端点:

端点用途
GET /v1/models列出可用模型
POST /v1/chat/completions对话
POST /v1/embeddings向量
POST /v1/audio/transcriptions语音转文字
POST /v1/images/generations生成图片

模型的实际端点前往模型广场详情页具体查看。

二、读取账号余额

方式 A:站点接口(推荐自研软件用,非开发通用接口)

GET https://flowbee.top/api/usage/token/

响应(成功时):

{
  "code": true,
  "message": "ok",
  "data": {
    "object": "token_usage",
    "name": "默认令牌",
    "total_granted": 1000000,
    "total_used": 12345,
    "total_available": 0,
    "unlimited_quota": true,
    "user_quota": 987655,
    "user_used_quota": 12345,
    "model_limits": {},
    "model_limits_enabled": false,
    "expires_at": 0
  }
}

字段含义:

字段含义
user_quota账号剩余额度(原始单位,不是钱)
user_used_quota账号已用额度
total_granted / total_used / total_available这把密钥自己的额度。默认创建的密钥不限额度,这几项没有参考价值
unlimited_quota这把密钥是否不限额度
model_limits / model_limits_enabled这把密钥是否限制了可用模型
expires_at过期时间戳,0 表示不过期

注意:user_quota 和 user_used_quota 在个别情况下可能不出现在响应里,客户端请做兜底,不要直接取值。另外这个接口返回 200 即代表密钥可用,也可以拿来做连通性检查。

「实际还能用多少」不等于余额。 服务端对账号余额和密钥余额都会校验,任一见底就不能再用:

密钥不限额度 → user_quota
密钥限了额度 → user_quota 和 total_available 中更小的那个

方式 B:OpenAI billing 接口(兼容现成客户端)

Chatbox 这类现成客户端习惯用下面这对接口显示余额,同样认 sk- 密钥:

GET https://flowbee.top/v1/dashboard/billing/subscription
GET https://flowbee.top/v1/dashboard/billing/usage

余额 = hard_limit_usd − total_usage / 100。

Warning

这两条是 OpenAI 的历史遗留接口,有两个坑:

  • 返回的是「账号口径」还是「密钥口径」,取决于站点设置,日后可能变化。
  • 密钥不限额度时(默认创建的密钥就是),hard_limit_usd 是一个固定的大数,不代表真实余额。 照着算会得到一个离谱的数字。

自己写软件建议用方式 A。

三、把额度换算成钱

接口返回的额度是原始单位,不是金额。金额怎么算,从站点的公开配置里读(这个接口不需要认证):

GET https://flowbee.top/api/status

用到的字段:

字段含义
quota_per_unit多少额度算 1 单位货币
quota_display_type显示币种:CNY / USD / TOKENS 等
usd_exchange_rate美元汇率
custom_currency_exchange_rate自定义币种汇率(quota_display_type 为 CUSTOM 时用)
Python
JavaScript
cURL
import requests

site = "https://flowbee.top"
status = requests.get(f"{site}/api/status").json()["data"]
usage = requests.get(
    f"{site}/api/usage/token/",
    headers={"Authorization": "Bearer sk-你的密钥"},
).json()["data"]

kind = status["quota_display_type"]
rate = {"USD": 1.0,
        "CNY": status["usd_exchange_rate"],
        "CUSTOM": status.get("custom_currency_exchange_rate") or 1.0}.get(kind, 1.0)

quota = usage.get("user_quota", 0)   # 字段可能缺失,兜底为 0
amount = quota if kind == "TOKENS" else quota / status["quota_per_unit"] * rate
print(amount)   # 例如 1.98,即 ¥1.98

四、注意事项

有速率限制。 请求过于频繁会返回 429,响应头里带 Retry-After(秒)。请把结果缓存起来、按 Retry-After 退避,不要轮询。

跨域(CORS)已放开。 纯网页可以直接 fetch 上面的接口,不需要自己搭后端代理。

错误响应格式:

{ "success": false, "message": "Token not provided" }

未带密钥或密钥无效时返回 401。