OpenAI API 余额怎么查询:三种方法与用量核对

账单对不上、余额不知道还剩多少、突然 429 是不是欠费了?这篇讲清 API 余额和用量的三种查询方法:控制台、响应里的 usage 字段、脚本批量核对,附对账思路。

「API 还剩多少额度」「这个月的账单怎么比预想多一倍」「突然请求被拒是不是欠费了」——这三个问题背后是同一件事:你没有在做余额和用量的核对。官方渠道查余额要登录 Billing 页面,聚合平台各有各的控制台,但核对思路是通用的。

这篇讲三种方法:看控制台、读响应里的 usage 字段、写脚本自动对账。十分钟的设置,之后每月省下数小时的糊涂账。

先说结论

  • 日常查余额:控制台看总额度和已用,十秒钟的事
  • 想知道单次请求花了多少:读每次响应里的 usage 字段,这是最准的
  • 月度对账、发现异常扣费:脚本汇总 usage 日志和控制台账单比对
  • 报 429 且额度充足才是真的限流;额度不足一般报 402 或 403,先查余额再排查

方法一:控制台查询(日常首选)

在聚合平台上,余额和用量都在控制台里:

  1. 登录平台控制台,首页通常直接显示账户余额和当月消费
  2. 进「用量统计」或「日志」页面,能看到按天、按 Key 的消费明细
  3. 给每个 Key 单独设置额度上限,跑飞了最多损失上限金额

以 zaimod 为例,控制台按 Key 统计用量,哪个项目在烧钱一眼可见。还没注册的可以直接 创建账户,充值按量计费、额度不过期。

方法二:读响应里的 usage 字段(最精确)

每次聊天补全的响应里都带 usage,这是计费的原始依据:

from openai import OpenAI

client = OpenAI(
    api_key="sk-你的密钥",
    base_url="https://api.zaimod.com/v1",
)

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "用一句话解释什么是向量检索"}],
)
print(resp.usage)

输出类似:

CompletionUsage(
    prompt_tokens=21,
    completion_tokens=38,
    total_tokens=59,
)

把 prompt_tokens、completion_tokens 乘上模型单价(见 价格页),就是单次请求的真实成本。以 gpt-4o-mini($0.156 / $0.624 每百万 tokens)为例:

单次请求输入 tokens输出 tokens成本估算
短问答800300约 $0.0003
文档摘要(5000 字)80001500约 $0.002
长对话(累计上下文)300002000约 $0.006

成本失控的最常见原因:多轮对话每轮都带全部历史上下文,输入 tokens 滚雪球。第 20 轮的输入可能已经是第 1 轮的十倍。对策是定期截断历史或做摘要压缩。

方法三:脚本对账(月度必做)

在业务代码里把每次请求的 usage 落日志,月末汇总:

import json, time

def log_usage(resp, model, scene):
    with open("usage.log", "a", encoding="utf-8") as f:
        f.write(json.dumps({
            "ts": time.strftime("%Y-%m-%d %H:%M:%S"),
            "scene": scene,
            "model": model,
            "prompt_tokens": resp.usage.prompt_tokens,
            "completion_tokens": resp.usage.completion_tokens,
        }) + "\n")

月末做三件事:

  1. 汇总日志得出各场景的 token 总量,乘单价得到理论成本
  2. 和控制台账单比对,偏差超过 5% 就要查(可能是某次批量任务被遗忘)
  3. 按场景排序找出消费前三,通常一个场景就占了七成——优化它比全局降价有效

突然请求被拒?先分清欠费和限流

现象典型原因先做什么
402 / 余额不足提示额度用完控制台充值
429 + rate limit 字样触发限流查 429 排查指南
401Key 错误或被删检查 Key 是否拼写正确、是否启用
403区域或权限限制核对 base_url 与账号状态

拿到错误码先对照 LLM API 报错排查手册 定位,再动手改代码,多数「玄学报错」都有一眼可见的原因。

常见问题

Q:官方 OpenAI 平台还能用接口查余额吗?

老的 /dashboard/billing/ 系列接口已逐步收紧,官方现在主推 Usage 页面和数据导出。依赖脚本轮询余额的方案要做好随时失效的准备,对账逻辑尽量基于自己记录的 usage 日志。

Q:usage 的 token 数和控制台扣费不一致?

先确认两边统计的时间窗口一致;再确认模型单价用的是该平台当前挂单价而非官方价。仍不一致,拿着具体请求时间和 token 数找客服核对。

Q:怎么防止余额被跑光?

给每个 Key 设置消费上限,并开启用量的异常告警(部分平台支持)。再加上「怀疑泄露立刻删 Key 重建」的预案,参见 API Key 泄露应急处理。

Q:余额会过期吗?

zaimod 的充值额度不过期,用完为止。其他平台规则各异,充值前看清楚。

延伸阅读

#openai api 余额查询#api 用量查询#api key 余额#api 扣费异常
免费创建 API Key

相关阅读

Node.js 接入 OpenAI API 完整教程

Node.js 和 TypeScript 项目接大模型,官方 openai SDK 十几行代码就能跑通。这篇覆盖安装配置、baseURL 指向兼容网关、流式输出、超时重试和常见报错排查,附 Next.js 与 Express 两种落地写法。

Java 项目接入 OpenAI API 完整方案

Spring Boot 项目要接大模型,Spring AI 和官方 openai-java SDK 该选哪个?这篇给出两套可直接落地的配置与代码,讲清 base-url 拼接、流式输出、超时重试和 429 处理,附常见报错对照。