计费与余额

提供以下计费接口:/billing/balance 余额检查、/billing/usage 时间维度下的用量情况、/billing/records 逐条明细。 调用时请使用对应的 API Key 作为查询目标,返回金额均以人民币计价。

共同约定

  • 认证——Authorization: Bearer sk-gw-…, 与调用模型接口使用同一把 Key;控制台会话 Cookie 亦可。
  • 范围——返回该 Key 所属账号的全部用量, 非单把 Key 的用量。同一账号下多把 Key 的消费合并统计; 如需按 Key 拆分,请通过明细接口按时间与模型自行归集。
  • 金额——一律为人民币字符串,形如 "4.659506"。采用字符串而非数字类型:JSON 数字在多数语言中解析为双精度浮点,逐条累加的结果与服务端合计存在偏差。 金额字段旁始终附带 "currency": "CNY"
  • 精度——最多 6 位小数(0.000001 元)。 单次对话调用的费用常低于 1 分,保留 2 位将全部归零。
  • 时间——统一为 RFC3339 UTC,形如 2026-08-01T00:00:00Z。时间窗为左闭右开 [start, end),同一条记录仅归属一个窗口, 连续区间求和即为总额,边界不重复计入。

查余额

curl https://heiyutv.com/api/v1/billing/balance \
  -H "Authorization: Bearer sk-gw-XXXXXXXXXXXXXXXXXXXXXXXXXX"
{
  "currency": "CNY",
  "balance": "88.14",
  "as_of": "2026-08-22T09:30:00Z"
}

balance 为当前可用余额。建议对该值设置阈值告警。

余额为零或负数时,对话类接口在转发之前即被拦截并返回 402 ERR_INSUFFICIENT_FUNDS,被拦截的请求不计费。

视频接口不做余额预检,余额不足时任务仍会被受理并正常 生成,费用于结算时扣除,余额可能因此为负。原因是视频为异步任务, 创建时无法预知实际消耗的 token 数量,按预估值拦截会拒绝掉本可正常完成 的请求。请通过本接口自行监控余额。

查用量汇总

返回指定区间内的消费总额与 token 消耗量, 并附同一区间按模型拆分的结果。两者在同一响应中返回, 以避免分两次请求时因时间边界不一致导致数据无法对齐。

curl "https://heiyutv.com/api/v1/billing/usage?start=2026-08-01T00:00:00Z&end=2026-09-01T00:00:00Z" \
  -H "Authorization: Bearer sk-gw-XXXXXXXXXXXXXXXXXXXXXXXXXX"
{
  "currency": "CNY",
  "start": "2026-08-01T00:00:00Z",
  "end":   "2026-09-01T00:00:00Z",
  "total": {
    "requests": 1284,
    "prompt_tokens": 913402,
    "completion_tokens": 355104,
    "total_tokens": 1268506,
    "amount": "61.8342"
  },
  "by_model": [
    {
      "model": "seedance-2.0-custom",
      "requests": 7,
      "prompt_tokens": 0,
      "completion_tokens": 354466,
      "total_tokens": 354466,
      "amount": "59.3128"
    },
    {
      "model": "deepseek-v4-flash",
      "requests": 1277,
      "prompt_tokens": 913402,
      "completion_tokens": 638,
      "total_tokens": 914040,
      "amount": "2.5214"
    }
  ]
}
参数说明
start起始时刻(含)。缺省为 30 天前
end结束时刻(不含)。缺省为当前时刻

单次查询跨度上限为 366 天,超出返回 400 ERR_BAD_RANGE。更长区间请分段查询。

拉逐条明细

每一次计费调用对应一条记录,按时间倒序返回。 适用于账务对账、内部成本分摊,以及将消费数据同步至自有账务系统。

curl "https://heiyutv.com/api/v1/billing/records?start=2026-08-01T00:00:00Z&limit=100" \
  -H "Authorization: Bearer sk-gw-XXXXXXXXXXXXXXXXXXXXXXXXXX"
{
  "currency": "CNY",
  "data": [
    {
      "id": "vt_666bffed506011cdd280f7c3",
      "ts": "2026-08-22T08:59:09Z",
      "model": "seedance-2.0-custom",
      "prompt_tokens": 0,
      "completion_tokens": 50638,
      "total_tokens": 50638,
      "amount": "4.659506",
      "status": "success"
    },
    {
      "id": "req_01M0M748T1RMV6JJDMXASCZK83",
      "ts": "2026-08-22T07:49:23Z",
      "model": "deepseek-v4-flash",
      "prompt_tokens": 812,
      "completion_tokens": 96,
      "total_tokens": 908,
      "amount": "0.001974",
      "status": "success"
    }
  ],
  "next_cursor": "req_01M0M748T1RMV6JJDMXASCZK83"
}
参数说明
start / end同上
model限定单个模型,精确匹配
limit每页条数,缺省 50,上限 200
cursor上一页响应中的 next_cursor, 取值为该页最后一条记录的 id。 格式不合法返回 400;格式合法但查不到该记录时返回空页

翻页请使用 cursor,不要使用 offset。该数据表持续写入,按偏移量翻页会导致记录遗漏与重复。 响应中不含 next_cursor 即表示已到末页。

cursor = None
while True:
    r = requests.get(url, params={"start": start, "limit": 200, "cursor": cursor},
                     headers={"Authorization": f"Bearer {key}"}).json()
    for row in r["data"]:
        ...
    cursor = r.get("next_cursor")
    if cursor is None:
        break

字段说明

字段含义
id本次调用的标识。对话类为请求 id,视频类为任务 id(vt_…),可用于与调用方自有记录关联
ts调用开始时刻
prompt_tokens / completion_tokens输入 / 输出 token。视频模型仅计输出,prompt_tokens 恒为 0
amount本次调用的费用(元)
statussuccess · error · cancelled · zci · blocked。仅 success 产生费用, 其余状态 amount"0.00"
error_code仅失败时返回

费用构成

按 token 计费,无月费、无最低消费、无并发费用。各模型单价见定价页; 账号如有专属折扣,控制台定价页显示折后价。

视频模型不按次计价,按输出 token 计费,单价分四档, 由输入是否含视频 × 输出分辨率决定, 详见视频生成

失败不计费。请求被拒绝、上游报错、 流式返回 0 个输出 token,均不产生费用。 明细接口中仍返回对应记录,amount "0.00"

余额来源

充值页下单支付后余额自动到账, 最低 ¥50,各套餐默认赠送面值 5% 的额度。 赠送额度在消费时优先扣除,用尽后方扣除充值部分; 仅充值部分支持退款与开票。

退款与发票的规则及申请入口位于控制台「账户」,完整条款见《充值后具体计费规则》

常见对账问题

现象说明
明细逐条累加的结果与汇总接口存在几分钱差异逐条取整后累加会产生累积误差。汇总接口先累加后取整,以其为准
视频任务当日调用,次日才出现在账单中视频为异步任务,费用在任务结算时记账, 时间戳取任务创建时刻
明细中存在记录但 amount 为 0该次调用未成功,不计费
余额低于「充值金额 − 消费金额」可能存在退款或人工调整,控制台「账户 → 流水」提供逐笔记录

错误

状态code含义
401ERR_AUTH_REQUIRED未提供 Key,或 Key 无效
400ERR_BAD_RANGE时间格式不合法、start 不早于 end,或跨度超过 366 天
400ERR_BAD_CURSORcursor 非上一页返回的 next_cursor
400ERR_BAD_LIMITlimit 非正整数

完整错误码见错误码