报错是这么冒出来的。用同事给的 key 调组织用量接口,返回 403,原文 You must be an organization owner to access this endpoint,可同事在成员列表里明明是管理员角色。

中间走过弯路,把「用的是项目 key,权限被项目范围裁剪过」当成主因,改完现象没变。

这类报错背后常见的原因有几处,逐个排除就行。用量与账单接口只对 owner 角色开放,admin 读不了组织级财务数据。少数情况下是管理员管的是项目成员,组织财务权限是另一套。

不容易想到的是,组织下有多个工作空间,角色只在其中一个里生效。

第一件事是打印当前 key 对应的身份与组织

curl -s https://api.openai.com/v1/me -H "Authorization: Bearer $OPENAI_API_KEY" | jq '.id,.orgs'

接着换 owner 的 key 再调一次用量接口

curl -s "https://api.openai.com/v1/organization/usage/completions?start_time=$(date -d '-1 day' +%s)" -H "Authorization: Bearer $OWNER_KEY" | jq '.data|length'

再往下用服务账号 key 按项目维度取统计

curl -s "https://api.openai.com/v1/organization/usage/completions?start_time=$(date -d '-1 day' +%s)&project_ids=proj_abc" -H "Authorization: Bearer $ADMIN_KEY" | jq '.data[0].results|length'

剩下的就是确认项目 key 只能读自己范围的对象

curl -s https://api.openai.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY" | jq '.data|length'

恢复的判定其实很直接。换成 owner key 后用量接口返回 200 且 results 非空,成员权限页面里对该账号显示 owner 标识,用项目 key 的脚本改为只取项目维度数据。

提醒一点。admin 与 owner 的差别在财务可见性上,做监控告警要单独申请一个只读的管理 key,别拿业务 key 硬试。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189