EasyAPI问答
前往 EasyAPI

大模型 API 按量计费是怎么算的?token 怎么折算成钱?

EasyAPI 团队整理

直接回答

按量计费的算法是:费用 = 输入 Token 数 × 输入单价 + 输出 Token 数 × 输出单价,单价通常按每百万 Token 标注,输出价一般高于输入价。在 EasyAPI 上费用从钱包余额扣除,每次调用的 Token 数和花费都能在调用记录中查到。

大模型 API 的按量计费,是按每次调用实际消耗的 Token 数量收费。Token 是模型处理文本的基本单位,你发给模型的内容算输入 Token,模型生成的内容算输出 Token,两者分别计价后相加,就是这次调用的费用。

EasyAPI 采用的正是这种方式:钱包预充值,调用时按量扣减余额,没有订阅套餐。下面先讲通用算法,再讲在 EasyAPI 上怎么核对每一笔。

关键要点

  • 文本模型的费用由输入 Token 和输出 Token 两部分组成,各有各的单价。
  • 单价通常以「每百万 Token」为单位展示,折算时要除以 1,000,000。
  • 部分模型对缓存命中的输入 Token 有单独的(更低的)价格。
  • 图片等部分模型按次计费,每次调用固定扣费,与 Token 数无关。
  • 实际扣费以控制台调用记录中的数字为准,而不是自己估算的结果。

计算公式

单次费用 = 输入 Token 数 ÷ 1,000,000 × 输入单价
         + 输出 Token 数 ÷ 1,000,000 × 输出单价

如果模型支持缓存计价,输入部分会再拆成两段:

输入费用 = 未命中缓存的输入 Token × 输入单价
         + 命中缓存的输入 Token × 缓存读取单价

Token 数不需要自己数,接口返回的 usage 对象里有:

字段含义对应价格
prompt_tokens输入 Token 数,包含系统提示词和历史对话输入单价
completion_tokens输出 Token 数,包含模型的思考内容(如开启)输出单价
total_tokens两者之和仅供参考,不直接用于计价

各模型的输入、输出和缓存价格在模型广场公开展示。本文不写具体价格,因为价格会随供应商调整。

两种计费类型

类型怎么扣费常见于
按量计费按输入、输出 Token 数分别乘以单价文本对话模型
按次计费每次调用固定扣一笔部分图片等模型

视频生成也属于按量计费,但计量依据不是文本 Token,而是与时长、分辨率等有关:提交任务时预扣预估费用,任务完成后按实际结果结算。流程见 国内怎么调用 Seedance 2.5 视频生成 API。

在 EasyAPI 上核对一笔调用的费用

有三种方式,由简到细:

  1. 看控制台调用记录。 登录后进入调用记录页面,每一行包含时间、令牌、模型、用时、输入 Token、输出 Token 和花费,可按时间范围、模型名称和令牌名称筛选。
  2. 让接口直接返回费用。 在对话请求体中加入 usage.include = true,响应的 usage 对象会多出一个 cost 字段,表示本次调用的估算费用(USD)。
  3. 按请求 ID 查询最终账单。 每个响应都带有 X-EasyAPI-Request-Id 响应头,用它调用 GET /v1/generation 可以查到这次调用的 Token 数、缓存 Token、最终扣费和结算时使用的倍率快照。
# 发起调用,同时要求返回费用,并打印响应头
curl -i https://token.easyapi.com/v1/chat/completions \
  -H "Authorization: Bearer $EASYAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash-1017",
    "messages": [{"role": "user", "content": "你好"}],
    "usage": {"include": true}
  }'

# 用响应头里的请求 ID 查询最终扣费
curl "https://token.easyapi.com/v1/generation?id=<X-EasyAPI-Request-Id 的值>" \
  -H "Authorization: Bearer $EASYAPI_API_KEY"

文档说明:usage.cost 是写出响应前的估算值,最终扣费以 /v1/generation 的结果为准;消费记录在请求结束后写入,紧接着查询可能返回 404,稍等片刻重试即可。这两个查询接口本身不计费。

费用比预期高的常见原因

  • 多轮对话重复计入历史。 每次请求都会把之前的对话作为输入重新发送,轮次越多,输入 Token 越多。
  • 系统提示词很长。 它在每次调用中都计入输入。
  • 开启了思考模式。 思考内容计入输出 Token,而输出单价通常更高。
  • 没有限制输出长度。 可以通过 max_tokens 或 max_completion_tokens 设置上限。
  • 选了更高档的模型。 同样的 Token 数,不同模型的单价差别可能很大。

需要注意的边界:不同模型的分词方式不同,同一段文字在不同模型上的 Token 数并不相同,所以「一个汉字等于多少 Token」没有统一答案,估算只能作为参考。另外,API 返回的费用字段以 USD 计,控制台展示的币种以页面显示为准。

常见问题

1 个 Token 大概是多少个字?

没有固定换算关系,因模型的分词方式而异。想知道准确数字,直接看接口返回的 usage,它给出的是这次调用实际计费的 Token 数。

为什么输出比输入贵?

这是各家模型普遍的定价方式,生成内容的计算成本高于读取内容。具体到每个模型的输入价和输出价,以模型广场的展示为准。

流式输出会多收费吗?

不会因为流式而多计费,计费依据仍是 Token 数量。使用 usage.include 时,流式请求会在最后一个带 usage 的数据块里返回费用。

余额不够时会怎样?

余额不足时请求会被拒绝。可以在控制台的钱包页面查看余额并充值;想给单个 Key 设消费上限,参考 怎么给 API Key 设置每日/每月预算上限。

小结

按量计费的核心就是「输入 Token × 输入单价 + 输出 Token × 输出单价」,再考虑缓存与按次计费两种特殊情况。在 EasyAPI 上,每一笔都可以通过调用记录或 /v1/generation 逐条核对,实时单价见模型广场。

一个 API Key,按 OpenAI 兼容格式调用多家模型

按量计费,用量逐条可查。价格与当前可用模型以模型广场实时显示为准。