计费、积分与订阅
一次调用能不能发出去、发出去以后钱从哪扣,取决于一条三级判定链: BYOK > 订阅 > API 扣费。理解这条链,账单上的每一分钱都能对上。
三级计费链
BYOK(自带厂商凭证)
用你自己的上游厂商凭证调用。平台侧完全不扣费——费用直接产生在你自己的厂商账户上。 凭证归属要路由之后才知道,所以入口不做预判,在计费收尾时识别并跳过扣费。
订阅(subscription)
有生效中的订阅时,额度内的调用只记量不扣费。 订阅同时会带来一套限制策略,优先于 API Key 上手动挂载的策略,见 限流、配额与并发。
API 扣费(payg)
没订阅,或订阅额度已用完,就走按量扣积分。前提是账号开启了「API 扣费访问」开关。
入口门槛:请求为什么被拒
走到 payg 这一级时,网关按顺序检查三道门槛,任何一道不过就直接拒绝:
| 顺序 | 检查 | 不通过时 |
|---|---|---|
| 1 | 「API 扣费访问」开关是否开启 | 403 40202(无订阅)429 42906(有订阅但额度用完) |
| 2 | 本月订阅外消费是否已达上限 | 429 42906 本月订阅外消费额度已达上限 |
| 3 | 积分是否够(或能否自动兑换) | 429 42907 积分不足,请充值或开启自动兑换 |
未订阅、未开 API 扣费的账号,第一次调用就会撞上 40202
未订阅会员且未开启API扣费访问。如果账号还没实名,
错误信息里会追加一句引导——完成实名认证即可免费获得使用额度。这不是 bug,是设计。
计费预检数据加载不出来时,网关拒绝请求(返回 500
计费资格校验暂不可用,请稍后重试),而不是放行。
这和限流层「故障放行」的策略正好相反——宁可拒服务,也不产生无法计费的调用。
积分与余额
积分是扣费的实际单位。用百万分之一元作最小粒度,是因为单次调用的费用经常小于 1 分钱, 用「元」做单位会在四舍五入里丢掉真实成本。
账户里有两个独立的资产池:
调用直接扣的东西。可由余额兑换而来,也可以通过活动、礼品码等方式获得。
充值进来的钱,单位元。不直接用于调用,需要兑换成积分。
自动兑换
开启「自动兑换」后,积分不足时网关会在扣费事务里自动从余额兑换:
按 1 元粒度兑换,缺多少兑多少(缺口 ÷ 1,000,000 向上取整),兑完再扣。
兑换与扣费在同一个事务里完成,余额记录页能看到 auto_exchange 流水。
没开自动兑换、积分又不够,就会被 42907 拒在门外——即使余额还有很多。
这是新用户第二常见的困惑:充了钱却报积分不足。去后台开启自动兑换,或手动兑换一次即可。
订阅外月度上限
账号可以设一个「订阅外消费月度上限」(单位元)。设为 0 表示不限。
它只统计走 payg 的消费,是一道防跑量的保险——比如脚本写错死循环调用时,损失有上界。
费用是怎么算出来的
单次调用的费用由基础价格乘上一串百分比倍率得到:
费用 = tokens / 1,000,000 × 模型单价
× 策略倍率 × 策略折扣/100
× 系统倍率/100
× 网关倍率/100
× 厂商倍率/100
× 凭证倍率/100
× 用户倍率/100
| 因子 | 来源 | 基准 |
|---|---|---|
| 模型单价 | 模型定价表,输入/输出/缓存分别计价 | — |
| 策略折扣 | 限制策略的 discount,80 即 8 折 | 100 |
| 系统倍率 | 全局配置 | 100 |
| 网关倍率 | 你实际命中的网关节点 | 100 |
| 厂商倍率 | 上游厂商配置 | 100 |
| 凭证倍率 | 实际命中的上游凭证 | 100 |
| 用户倍率 | 你的账号折扣,可带有效期 | 100 |
任何一个因子读到 0、负数或脏数据,都会被归一成 100(原价)。
设计取向很明确:宁可按原价收费,也不让脏数据放大折扣或把账单清零。
用户倍率还带有效期——到期后自动恢复 100。日志里记录的是调用当时的倍率快照, 事后改倍率不会让历史账单漂移。
查询你的实际价格
公开定价接口会把系统倍率、用户倍率、厂商倍率、凭证倍率一起下发, 带上登录 token 时返回的是你个人的倍率(匿名一律 100):
字段说明见 平台管理 API。
什么情况下不扣费
- BYOK 调用——费用在你自己的厂商账户上。
- 订阅额度内的调用——只记量,账单记 0。
- 定价数据不完整的模型——输入或输出单价缺失时不计费。
- 折后金额不足 1 积分——直接免扣,不做四舍五入。
- 请求在入口就被拒(鉴权失败、限流、资格不足)——没到上游,不产生费用。
请求已经打到上游、上游开始生成后才失败(比如流式中断), 已经产生的 token 上游照收,这部分会计入你的账单。 这也是为什么不要对已经开始出字的流式请求做无脑重试。
对账
后台提供三份互相印证的记录,排查费用问题按这个顺序看:
| 记录 | 看什么 |
|---|---|
| 调用日志 | 每次调用的模型、token 数、计费状态、当时生效的各项倍率快照 |
| 消费记录 | 每笔扣费的金额构成 |
| 余额/积分变动 | 充值、兑换(含 auto_exchange)、消费的完整流水 |
订阅额度内的调用在调用日志里标记为 subscription_covered,消费记录里金额为 0——
「有调用但没扣费」通常不是漏记,而是订阅覆盖了。