Repository navigation
Open
Labels
bugSomething isn't workingSomething isn't working
Description
提交前必读
- 文档:https://docs.newapi.ai/
- 使用问题先看或先问:https://deepwiki.com/QuantumNous/new-api
- 开启透传请勿反馈问题;透传会直接发送内容,不会经过 new-api 的逻辑处理。
- 请以简练语言陈述事实与证据。Issue 正文及后续评论均不得直接粘贴未经人工过滤的大段 AI 文本。
- 转发类问题必须先确认问题发生在 new-api 这一层:请使用等价的脱敏请求分别直连上游和经过 new-api,对比响应状态、错误体与服务端日志。未经对比、仅展示上游报错的反馈不接受 issue。
- 不接受 Coding Plan、逆向渠道、第三方封装接口,以及将 Codex 接口反代为通用 API 后产生的兼容性问题;Codex API 自身特有的协议或行为也不应被当作标准 OpenAI API 行为,相关问题请先向渠道或接口提供方确认。
- 本项目不提供官方托管服务,也不为第三方托管站、中转站或 API 服务提供技术支持;此类问题请联系对应运营方。
- 警告:删除本模板、删除小节标题或随意清空内容的 issue,可能会被直接关闭;多次提交未经人工过滤的大段 AI 文本,或重复恶意提交者,可能会被 block。
部署来源
本仓库 Release / 官方镜像(自行部署)
您当前的 newapi 版本
v1.0.0-rc.48
提交确认
- 非重复 issue: 我已搜索现有 Issues,确认目前没有类似 issue。
- 提交前必读: 我已完整阅读上方“提交前必读”,并已查看文档 https://docs.newapi.ai/、项目 README 且向 AI 提问,确认这不是使用、配置或接入类问题。
- 受支持版本: 我已提供准确的版本号、commit 或镜像标签(不是
latest或unknown),并确认问题可在本仓库未修改的受支持版本中复现。 - 非第三方服务: 我确认这不是第三方托管站、中转站、API 服务或未经本仓库原版验证的 fork 所独有的问题;第三方实例问题应联系其运营方。
- 非透传: 我确认相关渠道未开启透传。开启透传会直接发送内容,不会经过 new-api 的逻辑处理,此类问题不接受 issue。
- 问题归属: 我已提供足以区分客户端、new-api 和上游的证据;转发问题已使用等价的脱敏请求对比直连上游与经过 new-api 的结果,确认错误由 new-api 引入或改变,而非仅原样转发上游报错。
- 渠道与协议边界: 我确认问题不是由 Coding Plan、逆向渠道、第三方封装接口、Codex 反代接口,或 Codex API 自身特有行为导致;若问题最初出现于此类接口,我已在本仓库支持的标准 API 协议上复现。
- 维护成本: 我理解项目维护者精力有限。Issue 正文及后续评论均不得直接粘贴未经人工过滤的大段 AI 文本,须先提炼可复核的要点;不遵循模板要求或缺少要点、无法复核的内容可能会被无视或直接关闭。多次提交此类内容可能会被 block。
问题描述
在后台把「额度展示类型」(general_setting.quota_display_type)设置为 CNY 并保存后:
GET /api/option/能正确读出"general_setting.quota_display_type": "CNY"- 但
GET /api/status返回的quota_display_type恒为"USD",不随配置变化 - 由于前端读取的是
status.quota_display_type,模型广场(/pricing)的价格全部按美元符号渲染
该字段看起来没有接上配置,疑似回归。
复现步骤
- 部署
calciumion/new-api:latest(v1.0.0-rc.48),SQLite 存储 - 后台设置 → 通用设置 → 额度展示类型,选择 人民币(CNY),保存
- 确认配置已写入:
curl -s http://127.0.0.1:3000/api/option/ -H "Authorization: Bearer <admin_token>" \
| jq -r '.data[] | select(.key=="general_setting.quota_display_type") | .value'
# 输出:CNY- 但查询 status:
curl -s http://127.0.0.1:3000/api/status \
| jq -r '.data.quota_display_type'
# 输出:USD ← 期望 CNY- 打开前台模型广场
/pricing,价格全部显示$,而非¥
已验证无效的排查
- 重启容器无效:
docker compose restart后/api/status仍返回USD(排除内存缓存未刷新) - 数据库确认已落库:直接查 SQLite
options表,general_setting.quota_display_type的值为CNY - 浏览器侧排除:无痕窗口、清除缓存后依然显示
$ - 对照 issue:后台计费与支付已经设置为人民币,但是模型定价那里的价格仍然是美元,无法修改 #4844 中报告者提到「前台模型广场里的价格是正常的人民币」,说明正常版本下前台能正确显示 CNY,与本例不符
- [Bug] 新版 UI:额度展示类型为 CNY 时,模型定价编辑器仍固定显示 USD #6058 的维护者回复(「这里必须是 usd,应配置为真实模型价格,你的货币符号都是基于 usd 转换的」)指的是后台模型定价编辑器必须用 USD 录入,与本 issue 讨论的前台展示币种不是同一处,后台用 USD 配置这一点我没有异议
预期结果
GET /api/status 的 quota_display_type 应返回配置值 CNY,前台模型广场据此显示 ¥。
实际行为
恒返回 USD,前台始终按美元展示。
临时绕过
在反向代理层对 /api/status 做字符串替换(仅绕过显示,非根治):
location = /api/status {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept-Encoding ""; # 必须关闭压缩,否则 sub_filter 不生效
sub_filter '"quota_display_type":"USD"' '"quota_display_type":"CNY"';
sub_filter_types application/json;
sub_filter_once off;
}补充说明
部署中同时开启了 DisplayInCurrencyEnabled,底层额度计算(倍率、扣费)均按美元基准换算,计费本身是正确的,问题只出在 /api/status 的这个展示字段。
如果这是刻意设计(例如该字段另有来源),也希望能说明 quota_display_type 正确的配置入口,避免使用者误以为改 general_setting.quota_display_type 即可生效。
相关截图
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity
new-api-reviewer-bot commentedon Nov 5, 2026
[Bot Review]
感谢提交!您的 Issue 格式完整,符合模板规范。后续将由维护人员进一步查看。
tyza66 commentedon Nov 12, 2026