简短回答
用任务接口按task_id 查,返回的 quota 就是这条视频的总消费。 日志里的两条记录(预扣 + 结算)相加等于它,「异步任务」页详情里的 quota 也是它。
quota ÷ 500,000 = 美元。认证用系统令牌(不是 sk- 开头的 API Key),获取方式见日志查询 API。
不要试图用日志查询 API 逐单配对:两条日志记录里都没有 task_id,结算那条连 request_id 都是空的。
三个数字是什么关系
Seedance 视频按「提交时预扣、完成后多退少补」计费,所以一条视频会在日志里留下两条记录,而任务接口 / 任务详情页只有一个quota:
结算也可能是退回:一条 fast 480p 4 秒文生视频预扣 144,000,实际 40,594 tokens × 18.5 × 0.18 = 135,179,结算行记 −8,821(退回 $0.02),任务接口
quota = 135,179。
上面第一组数字来自一条真实的 2.0 图生视频(含参考视频):368,100 tokens × 14(含视频输入档倍率)× 0.18(分组倍率)= 927,612,即 $1.86。结算行 other 里的 final_quota 就是 927,612,original_quota 是 224,999,adjustment_quota 是 702,613,三者在一条记录里都能看到。
按 status 判断真实消费
注意两套词表不同:视频查询接口
/seedance/api/v3/.../tasks/{id} 的成功状态是 succeeded,任务接口 /api/task/self 的成功状态是 completed,别把轮询代码里的判断条件直接搬过来。
参数写法(与日志 API 相反)
任务接口的分页参数是下划线page_size、页码 p 从 1 开始;日志 API 是驼峰 pageSize、p 从 0 开始。写错不报错,只会退回默认分页。
已验证可用的过滤参数:
批量对账时按时间窗拉取即可,每条都带
task_id、status、quota、submit_time、finish_time、model_name:
如果一定要在日志里人工核对
结算行有三个字段能对上任务接口:- 「时间」(
created_at)等于任务的finish_time,相差不超过 1 秒 completion_tokens等于任务的usage.completion_tokensother.final_quota等于任务的quota
request_id 等于提交响应头里的 X-Shellapi-Request-Id,可以用它反查(/api/log/self?request_id=…)。注意响应头里另有一个 X-Request-Id,那是原厂的请求 ID,在 API易 日志里搜不到。但同一秒批量提交多条任务时预扣行会撞在一起,而且结算行没有 request_id,所以日志只适合人工核对个别任务,程序化对账请走任务接口。
常见问题
任务详情页的 quota 和日志两条相加不一样?
任务详情页的 quota 和日志两条相加不一样?
先看任务状态。
submitted / in_progress 时 quota 只是预扣,还没有第二条日志;failed 时 quota 仍是预扣额,而日志里多了一条负数退款行,两条相加为 0。completed 状态下两者一定相等,若不等请把 task_id 发给客服核查。结算那条日志为什么没有令牌、没有 request_id?
结算那条日志为什么没有令牌、没有 request_id?
结算是任务完成时由系统补记的,不经过网关请求链路,所以不带令牌、分组和
request_id,控制台上还会标成「流式」。这是正常现象,不代表异常。通用视频端点提交的任务,日志里有 task_id 吗?
通用视频端点提交的任务,日志里有 task_id 吗?
走
/v1/videos 等通用端点时,预扣行的 content 里会带 任务ID: cgt-…,但结算行仍然没有。而且这些端点目前对 Seedance 的分辨率参数透传不完整,请一律走文档路径 /seedance/api/v3/contents/generations/tasks,见视频生成 API。系统令牌能看到别人的任务吗?
系统令牌能看到别人的任务吗?
/api/task/self 只返回本账号的任务。系统令牌等价于账号凭证,请像保管密码一样保管,不要写进代码仓库。