OpenAI API 用量和 Token 怎么查?控制台、响应字段与费用对账
简答:查看 OpenAI API 用量,单次请求看响应里的 usage,周期汇总看 Usage Dashboard,自动报表用 Usage API 和 Cost API。Chat Completions 与 Responses 的 Token 字段不同,流式调用还要显式开启 include_usage。费用不要直接用 total_tokens 乘固定单价,应结合当前官方定价、Cost 数据和相同组织项目进行核对。
定义:OpenAI API 用量是组织或项目在指定时间内产生的请求、Token 和计费活动;Token 是模型处理输入、生成输出以及部分多模态内容时使用的计量单位。
先看结论:单次、周期、自动报表分别这样查
如果你只想确认一次请求消耗了多少 Token,优先读取 API 返回体中的 usage;如果要看某个组织、项目或时间段的累计活动,进入 Usage Dashboard;如果需要按天、模型、项目或 API Key 自动汇总,再调用 Usage API 和 Cost API。
| 要查什么 | 推荐入口 | 重点内容 |
|---|---|---|
| 单次请求 Token | API 成功响应 | Chat Completions 的 prompt_tokens、completion_tokens、total_tokens |
| Responses 单次 Token | API 成功响应 | input_tokens、output_tokens、total_tokens |
| 周期用量 | Usage Dashboard | 请求数、输入输出 Token、项目、模型和时间范围 |
| 自动化统计 | Usage API | 按时间桶、项目、用户、模型或 API Key 汇总 |
| 自动化费用核对 | Cost API | 金额、币种、计费项目和成本分页数据 |
本文按 2026 年 10 月 31 日检索到的官方资料整理。控制台入口、字段和权限可能继续调整,实际使用时应以当前官方文档和接口响应为准。apikey.sbs 是第三方 AI API 接入指南站,不是 OpenAI 官方网站。OpenAI 官方用量与费用说明
在 Usage Dashboard 查看 API 用量
- 登录 OpenAI API Platform,进入 Usage Dashboard 或侧边栏中的 Usage。
- 选择需要核对的组织,再选择报告时间范围。
- 使用 Dashboard 页面自己的项目筛选器,选择目标项目或全部项目。不要只依据页面其他位置当前选中的项目,因为 Dashboard 的筛选器可能独立工作。
- 查看请求活动、输入 Token、输出 Token、模型分布和请求数等汇总;需要保存记录时,使用页面提供的导出功能。
- 如果要按用户或其他维度查看,先确认当前组织和项目是否具备相应的可见性与权限。
Usage Dashboard 数据按 UTC 展示。假如应用日志使用北京时间、美国东部时间或其他本地时间,应先换算为 UTC,再比较同一个组织、项目和完整时间区间,否则容易把跨日请求误认为数据缺失。
访问权限也是常见原因:官方说明要求账号是组织所有者,或被授予 Usage Dashboard 权限。项目所有者身份不应被自动理解为拥有全部组织级用量权限;看不到页面时,应让组织管理员检查权限和项目可见性。查看官方 Usage Dashboard 权限与 UTC 说明
如果刚发起请求就没有在导出文件中出现,不要立即判定请求没有计费。先确认组织、项目、时间范围和 UTC 换算是否一致,再等待控制台数据或导出任务完成。查看官方用量导出说明
从 API 响应读取 Token:两套字段不要混用
Token 统计应以实际 API 响应为准。官方说明中,Chat Completions 常见字段是 prompt_tokens、completion_tokens 和 total_tokens;Responses 常见字段是 input_tokens、output_tokens 和 total_tokens。Token 不等于字符数或单词数,模型、语言、消息结构、工具、图片和文件都可能影响实际计数。OpenAI 官方 Token 说明
Chat Completions 的最小检查命令
下面示例使用交互式隐藏输入读取 Key。不要把真实 Key 直接写在命令行、脚本、截图或日志中;read -s 的输入不会回显,命令本身也不包含真实密钥。
read -r -s OPENAI_API_KEY; export OPENAI_API_KEY; curl https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"MODEL_ID","messages":[{"role":"user","content":"只回复 OK"}]}'
将 MODEL_ID 替换为当前账户和项目可用的模型 ID。请求成功后,在 JSON 的 usage 对象中查看 Token;如果返回的不是 JSON,先记录 HTTP 状态码和脱敏后的响应摘要,不要记录完整 Authorization 请求头。
Responses 的字段结构
Responses 的响应对象通常在 usage 中返回 input_tokens、output_tokens 和 total_tokens,并可能包含更细的输入缓存、缓存写入或推理 Token 明细。输出 Token 可能包含模型生成但没有显示为可见文字的推理 Token,因此不能只按最终答案的字符长度估算。Responses API 官方响应参考
缓存、推理、音频和图片 Token 怎么理解
不同接口和模型返回的 Token 细分可能不同,不能把某个响应中的字段清单当成永久完整列表。常见理解方式如下:
| 类别 | 含义 | 核对方式 |
|---|---|---|
| 输入 Token | 发送给模型的文本、图片或音频等输入内容对应的计量 | 响应中的输入字段或 Usage API |
| 输出 Token | 模型生成的输出;某些模型还会包含不可见推理 Token | 响应中的输出字段及其 details |
| 缓存输入 Token | 命中提示缓存或相关缓存机制的输入部分 | 缓存字段、Usage API 和 Cost 数据 |
| 音频 Token | 音频输入或输出对应的 Token 细分,是否出现取决于接口和模型 | 查看具体响应或用量结果中的 audio 字段 |
| 图片 Token | 图片输入或输出对应的 Token 细分,是否出现取决于接口和模型 | 查看具体响应或用量结果中的 image 字段 |
当前官方 Usage API 的 completions 结果可以提供输入、输出、缓存输入、文本、音频和图片等细分字段;例如可能出现 input_audio_tokens、input_cached_audio_tokens、input_image_tokens、output_audio_tokens 和 output_image_tokens。字段是否返回、是否为 null,以及具体计费方式,都要以当前接口响应和模型定价为准。查看官方 Usage API 字段
需要提前估算完整输入时,不要只用字符数或简单分词结果。消息角色、工具定义、JSON Schema、图片、文件和对话结构都可能影响最终输入 Token;实际请求完成后读取响应中的 usage,通常比本地粗略估算更适合做对账。
流式 Chat Completions 如何获取 Token
流式 Chat Completions 请求中设置 stream_options.include_usage=true,服务会在 data: [DONE] 之前发送一个额外的统计 chunk。这个 chunk 的 usage 包含整个请求的 Token 统计,choices 为空;其他普通 chunk 的 usage 通常为 null。
关键限制是:如果流在结束前被中断或取消,客户端可能收不到最后的 usage chunk。因此,缺少最终 usage 不能证明本次没有消耗 Token,也不能把它记成零。应将该请求标为“未收到最终统计”,再用 Usage Dashboard 或 Usage API 按组织、项目和 UTC 时间范围核对。Chat Completions 官方流式参数说明
排查顺序可以固定为:确认请求同时设置了 stream=true 和 stream_options.include_usage=true;保存最后一个包含 usage 的 chunk;记录请求 ID、模型、项目和结束状态;如果连接中断,改用周期用量数据补核。不要只累加已显示文本的长度来替代服务端 Token 统计。
用 Usage API 自动统计:查询参数与分页
当请求量较大或需要定时生成报表时,可以调用组织级 Usage API。completions 用量接口是 GET /v1/organization/usage/completions,支持 Unix 时间范围、时间桶、模型、项目、用户和分组等参数。当前官方文档列出的时间桶包括 1m、1h 和 1d;可用的 group_by 包括 project_id、user_id、api_key_id、model、batch、service_tier 和 api_source。具体组合仍以接口返回为准。
读取管理类用量接口需要具备组织级管理权限的 Admin Key。不要把 Admin Key 写入仓库、前端代码、工单、Shell 命令参数或日志;下面仍采用隐藏读取方式。
read -r -s OPENAI_ADMIN_KEY; export OPENAI_ADMIN_KEY; curl "https://api.openai.com/v1/organization/usage/completions?start_time=START_UNIX&end_time=END_UNIX&bucket_width=1d&group_by=model&limit=7" -H "Authorization: Bearer $OPENAI_ADMIN_KEY" -H "Content-Type: application/json"
响应通常按时间 bucket 返回结果,并可能包含 has_more 和 next_page。自动任务应保存查询条件、最后同步时间和分页游标;当 has_more 为 true 时,用上一页返回的 next_page 作为下一次请求的 page 参数,直到没有下一页。查看官方 Usage API 参数和分页字段
用 Cost API 核对费用,不要直接套固定单价
Usage API 主要回答“发生了多少请求和 Token”,Cost API 主要回答“这些活动对应的成本记录是什么”。Cost API 的路径是 GET /v1/organization/costs,当前官方文档列出支持的成本分组包括 project_id、user_id、line_item、api_key_id 和 api_source;成本时间桶当前为每日粒度,接口也支持分页。
可以用下面的最小结构查询某个时间范围的成本:
curl "https://api.openai.com/v1/organization/costs?start_time=START_UNIX&end_time=END_UNIX&bucket_width=1d&group_by=line_item&limit=7" -H "Authorization: Bearer $OPENAI_ADMIN_KEY" -H "Content-Type: application/json"
Cost 结果可能包含金额、币种、数量、计量单位、项目、API Key 和 line item。不要把某次响应的 total_tokens 简单乘以一个固定价格,因为输入、缓存输入、输出、推理、音频、图片、服务层级和模型都可能影响核对方式。具体价格应查看当前官方定价页,而不是引用过期文章或第三方表格。查看官方 Cost API 字段与分组 查看 OpenAI API 官方定价页
较稳妥的对账链是:保存单次响应的 usage;按同一组织、项目和 UTC 时间范围查看 Usage Dashboard;用 Usage API 做周期汇总;最后用 Cost API、导出数据和官方定价页核对成本。四层数据不一致时,先检查筛选条件和时间范围,再判断是否需要进一步排查。
Token、API 用量、Credits、费用和限速有什么区别
| 概念 | 它回答的问题 | 常见核对位置 |
|---|---|---|
| Token | 这次请求输入和输出用了多少计量单位? | API 响应的 usage |
| API 用量 | 某个组织、项目或时间段发生了哪些请求活动? | Usage Dashboard、Usage API |
| Cost | 这些活动对应的成本记录是什么? | Cost API、导出数据、账单 |
| Credits | 组织关联的信用额度或余额信息是什么? | Billing 页面 |
| Rate limits | 单位时间内允许的请求或 Token 速率是多少? | 项目限速设置、响应头和错误响应 |
Token 总数、API 用量、Credits、Cost 和 rate limits 是不同概念。一次请求的 total_tokens 不能单独证明余额、最终费用或速率限制状态;遇到额度、计费或 429 问题,应分别检查对应页面和响应证据。
常见问题:看不到数据、字段为空或费用对不上
为什么登录后看不到 Usage Dashboard?
先确认登录账号属于目标组织,再检查是否为组织所有者或已获得 Usage Dashboard 权限。项目成员身份不一定等于组织级用量权限;仍无法访问时,请让组织管理员检查权限和项目可见性。
为什么 Dashboard 和本地日志日期对不上?
Dashboard 使用 UTC。将本地日志转换为 UTC,并确认组织、项目、起止时间完全一致。刚发生的请求或正在生成的导出文件也可能尚未适合立即对账。
为什么 Responses 的输出文字很短,但 output_tokens 很高?
输出 Token 不一定等于可见文字长度。某些模型可能包含不可见的推理 Token;输入结构、工具和多模态内容也可能影响使用量。以实际响应的 usage 和当前模型文档为准。
流式请求没有 usage,是不是没有消耗 Token?
不是。先确认是否设置了 stream_options.include_usage=true。如果连接中断,可能收不到最终统计 chunk;此时用 Usage Dashboard 或 Usage API 按项目和 UTC 时间范围补核。
Usage API 返回分页字段,怎么处理?
保存 next_page,在下一次请求中作为 page 参数继续查询,直到 has_more 为 false。自动任务还应记录时间范围、时间桶、筛选条件和同步游标,避免重复汇总或漏掉后续页面。
为什么 Token 数和最终费用不能一一相乘?
不同模型和 Token 类别可能使用不同价格,缓存输入、输出、推理、多模态内容和服务层级也可能影响成本。应结合 Cost API、Dashboard 数据和当前官方定价页核对,不要套用固定单价。
下一步:建立一条可复核的用量记录链
最小可执行做法是:每次成功请求保存请求时间、组织、项目、模型、请求 ID 和脱敏后的 usage;每天或每小时通过 Usage API 汇总;需要核对金额时再查询 Cost API;对账时统一使用 UTC 和相同的组织、项目筛选条件。
如果你还要把 OpenAI 兼容接口接入开发工具,可以继续查看站内的 OpenAI API Token 与成本控制步骤、OpenAI API 429 错误排查指南和 Cursor 配置 OpenAI 兼容 API 指南。
常见问题
OpenAI API 如何查看单次请求用了多少 Token?
读取 API 返回 JSON 中的 usage。Chat Completions 通常查看 prompt_tokens、completion_tokens、total_tokens;Responses 通常查看 input_tokens、output_tokens、total_tokens。
OpenAI API Usage Dashboard 在哪里看?
登录 OpenAI API Platform 后进入 Usage Dashboard 或 Usage,选择组织、日期范围和 Dashboard 自己的项目筛选器。访问需要组织所有者或 Usage Dashboard 权限。
流式 Chat Completions 如何获取 Token 用量?
请求中设置 stream_options.include_usage=true。服务会在结束标记前发送包含整个请求 usage 的额外 chunk,但连接中断时可能收不到该 chunk。
Usage API 和 Cost API 有什么区别?
Usage API 主要统计请求、输入输出 Token 和请求数等活动;Cost API 返回成本、金额、币种、计量单位和计费项目等数据。费用核对还要结合组织、账期和当前官方定价。
缓存、推理、音频和图片 Token 是否一定会出现?
不一定。字段是否出现取决于接口、模型和请求内容;应以实际响应、Usage API 结果和当前官方文档为准。