实际费用与任务用量
生成任务 billing 与 usage 字段的实际费用口径
定价目录反映当前费率, 实际扣费以生成响应, 任务查询, Webhook 和用量记录为准. 查询模型定价和账户用量是两个不同口径的数据, 不要用当前价格倒推历史扣费.
实际费用字段
费用可以确认时, 生成响应使用以下对象:
{
"billing": {
"status": "settled",
"credits": "100",
"cost_usd": "0.5"
}
}| 字段 | 含义 |
|---|---|
status | pending, settled 或 refunded |
credits | 已确认消耗的 ToAPIs Credits, 以十进制字符串返回 |
cost_usd | 同一笔已确认费用的 USD 金额, 以十进制字符串返回 |
pending 表示最终金额尚未确认, 因此不返回金额字段. refunded 表示已确认净费用为零. 缺少整个 billing 对象表示平台无法确认安全的公开值, 不代表本次请求免费.
该对象可能出现在:
- 统一图片和视频任务查询
GET /v1/tasks/{task_id} - 异步图片任务查询
GET /v1/images/generations/{task_id} - 异步视频任务查询
GET /v1/videos/generations/{task_id}(兼容GET /v1/video/generations/{task_id}和GET /v1/videos/{task_id}) - 任务 Webhook 的
data.billing - 兼容的非流式同步图片生成或编辑响应顶层
billing
对于异步任务, 任务完成后可将任务查询接口作为获取最终费用的兜底方式. 流式图片响应, 不支持的供应商响应格式, Playground 请求和延迟批量计费可能不返回该对象.
任务用量字段
图片和视频任务查询在顶层 usage 返回已确认的计费量, 成功 Webhook 在 data.usage 返回同口径字段. 计费量, 模型报告的 token 明细和工具次数可以并存, 按可用性分别返回.
| 字段 | 类型 | 说明 |
|---|---|---|
charge_type | string | 计费方式: per_request, per_second 或 per_token |
requests | integer | 实际计费次数. 普通图片请求的 n 不会直接乘算次数; Midjourney 视频的有效 batch_size 会计入计费次数 |
billed_tokens | integer | 实际用于计价的 token 数. 部分图片路径使用配置的预扣 token 基数, 不保证等于上游实际生成量 |
output_seconds | integer | 参与计费的输出视频时长, 单位为整数秒 |
input_seconds | integer | 参与计费的输入视频时长, 单位为整数秒 |
input_images | integer | 扣除免费额度后参与计费的输入图片数 |
input_tokens, output_tokens, prompt_tokens, completion_tokens, total_tokens | integer | 视频模型报告的非负整数 token 明细. 字段按供应商实际提供情况返回; 已确认的按 token 结算可补齐 total_tokens |
tool_usage | object | 工具次数, 可包含 web_search, image_search, grounding_queries; 按实际可用字段返回, 与 token 明细独立 |
计费量来自任务保存的计费记录: 固定计费使用创建时确认的数量, 后置结算使用最终结算数量, 不按当前价格或金额倒推. per_request 对应 requests, per_second 对应 output_seconds, per_token 对应 billed_tokens; 输入视频时长和输入图片等附加项按需返回, 为零时省略.
只保存了金额而未保存可校验计费量的历史任务, 会省略无法确认的字段. 未提供的 token 明细也不补零. 按 token 结算后, 视频 token 分项只有在上报总量与最终计费量一致时才保留. usage 和 billing 的可用性相互独立: 缺少 usage 不代表没有扣费, 也不会阻止结果返回.
但只要返回了 charge_type 等计费量, 就一定同时返回 billing.status=settled 和实际金额. 提交时一次扣清的固定计费任务同样返回 settled. 任务查询和 Webhook 使用相同的确认条件和字段取值.