LoopToken

Seedance 方舟原生接口

Seedance 2.0 与 2.5 的方舟原生协议:POST /api/v3/contents/generations/tasks 创建,GET 单任务查询与列表,异步,支持草稿与回调

POST/api/v3/contents/generations/tasks
GET/api/v3/contents/generations/tasks/{id}
GET/api/v3/contents/generations/tasks

本页仅描述 Seedance 方舟原生接口,路径与 JSON 参数遵循火山方舟协议。它与Seedance 方舟原生素材库版是独立模式:API Base、任务、Endpoint 绑定分别使用,本页接口不能访问素材库版任务或引用其素材。

项值
API Basehttps://api.vibelab.me/api/v3(火山方舟 SDK 设置 base_url,使用 LoopToken API Key)
鉴权Authorization: Bearer <LOOPTOKEN_API_KEY>;创建请求 Content-Type: application/json;密钥保存在服务端环境变量中
模式异步:创建返回 id → 轮询 GET /api/v3/contents/generations/tasks/{id}
计费按实际 usage.completion_tokens 结算,见计费
媒体保留视频和尾帧 URL 24 小时有效;任务记录仅最近七天可查
不提供取消/删除、素材库管理、真人认证接口

列表只返回当前账户有权访问的本地任务,不查询上游账户的全量任务。

模型

模型 ID分辨率输出时长参考图 / 视频 / 音频上限
doubao-seedance-2-0-mini-260615480p、720p4–15 秒,或 -1 自动选择9 / 3 / 3
doubao-seedance-2-0-fast-260128480p、720p4–15 秒,或 -1 自动选择9 / 3 / 3
doubao-seedance-2-0-260128480p、720p、1080p、4k4–15 秒,或 -1 自动选择9 / 3 / 3
doubao-seedance-2-5-260628480p、720p、1080p4–30 秒,或 -1 自动选择30 / 10 / 10

四个模型分辨率默认 720p,比例默认 adaptive;2.5 时长默认 -1;省略控制参数时保留模型侧默认行为。model 也可填平台管理员已绑定的 Endpoint ID;其他账户的 Endpoint ID 和素材 ID 不能直接迁移使用。实际开放状态与销售价格以账户获准使用的模型及平台价格配置为准。

快速开始

curl https://api.vibelab.me/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-5-260628",
    "content": [{"type":"text","text":"A paper boat sails across a quiet lake"}],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "generate_audio": true,
    "return_last_frame": true
  }'

成功返回 HTTP 200:

{"id":"task_<任务标识>"}

这个 id 原样使用上游创建接口返回的网关任务 ID(task_...),不添加前缀或替换为自定义 UUID。保存它:查询、列表、回调都用同一个 ID。创建是异步的,返回 ID 只表示已接单,不代表视频已生成。

模式选择

模式怎么传参
文生视频content 只含 text
首帧image_url 加 role: first_frame(单首帧可省略 role)
首尾帧一张 first_frame 加一张 last_frame,见首尾帧
全模态参考reference_image / reference_video / reference_audio,可组合
编辑、延长(2.5)omni_reference_task_type 为 edit / extend,加 reference_video,见编辑和延长
草稿、草稿转正式(2.5)draft: true 生成 480p 草稿;再用 draft_task 转 1080p 正式视频,见草稿与正式视频

首帧、首尾帧、全模态参考三个场景互斥。

请求参数

参数类型必填默认说明
modelstring是-上表 Model ID,或平台已绑定的 Endpoint ID
contentobject[]是-非空输入数组,见 content 输入
omni_reference_task_typestring否auto仅 2.5;auto、reference、edit、extend
resolutionstring否720p必须在所选模型的分辨率范围内;草稿及草稿转正式视频有特殊规则
ratiostring否adaptive16:9、4:3、1:1、3:4、9:16、21:9、adaptive
durationinteger否模型默认正整数按模型范围,-1 自动选择;2.5 默认 -1
seedinteger否-随机种子,原样透传至模型服务;不能保证相同种子完全复现画面
generate_audioboolean否true是否生成同步音频;显式 false 保留
watermarkboolean否false是否添加 AI 生成水印
output_formatstring否模型默认原样透传;常见值 mp4、mov,支持范围由模型服务校验
return_last_frameboolean否false返回尾帧 URL,保留上游 PNG/JPEG 格式,不转码
draftboolean否false2.5 样片模式,生成草稿必须 480p
service_tierstring否模型默认原样透传,是否支持 default、flex 等等级由模型服务判断
callback_urlstring否-状态变化时投递任务查询结构;HTTPS 公网地址
execution_expires_afterinteger否1728003600–259200 秒,从创建时间计算
priorityinteger否模型默认排队优先级,取值范围由模型服务校验
safety_identifierstring否-终端用户标识,格式要求由模型服务校验
toolsobject[]否-每项须有非空字符串 type;例如 {"type":"web_search"},其他工具及配置原样透传
framesinteger否-输出帧数,支持范围与参数冲突由模型服务校验
camera_fixedboolean否-固定镜头选项,是否生效由模型服务决定
  • 附加生成参数及未列出的扩展字段默认透传,保留 false、0、null、数组及嵌套对象,不再按参数白名单静默丢弃。已列出参数仍检查基本类型;支持范围、枚举及参数组合由模型服务进一步校验。
  • 平台仍校验模型权限、content、分辨率、时长、比例、音频/草稿模式、任务有效期及回调地址等路由和计费所需字段。callback_url 由平台处理;转发时可按上游协议转换 duration 等字段名。
  • 参数被接受并透传,不代表模型服务支持或保证生效;上游可能拒绝,也可能忽略该参数。
  • 省略参数与显式 false、0、-1 含义不同。
  • resolution、ratio、duration 等也可在文本末尾用 --参数 值 弱校验写法传入;顶层参数优先,提示词原样交给模型处理。建议用顶层强校验方式。

content 输入

type必需结构role
text{"type":"text","text":"提示词"}无
image_url{"type":"image_url","image_url":{"url":"..."},"role":"..."}first_frame、last_frame、reference_image;单首帧可省略
video_url{"type":"video_url","video_url":{"url":"..."},"role":"reference_video"}reference_video
audio_url{"type":"audio_url","audio_url":{"url":"..."},"role":"reference_audio"}reference_audio
draft_task{"type":"draft_task","draft_task":{"id":"..."}}无;仅 2.5
  • 图片、音频:公网 URL、对应 MIME 的 Base64 数据 URL、本模式获准使用的 asset:// 素材(不能用素材库版返回的公开 Asset Id)。视频:公网 URL 或 asset://,不支持 Base64。
  • 公网素材须无需登录即可访问,并在生成完成前保持有效。整个请求体上限 64 MiB。
  • 首帧、首尾帧、全模态参考三个场景互斥。首尾帧必须同时有一张 first_frame 和一张 last_frame;参考素材可组合图片、视频、音频。
  • 2.0 系列不能仅提供音频,至少还需一张图或一个视频;2.5 支持纯音频参考。
  • 2.5 视频、音频各类总时长不得超过 30 秒,2.0 系列不得超过 15 秒。数量通过不代表总时长合规,素材规格和总时长仍由生成服务检查。

请求示例

指定随机种子

seed 必须是 JSON 整数(例如 42 或 0),不能传字符串、小数或 null。省略时不注入默认值;模型服务决定具体取值范围和生成效果。固定种子不保证重复请求生成完全相同的视频。

{
  "model": "doubao-seedance-2-0-260128",
  "content": [{"type": "text", "text": "城市的清晨,街道人流缓缓移动,镜头保持静止"}],
  "resolution": "480p",
  "duration": 4,
  "ratio": "16:9",
  "seed": 42
}

首尾帧

2.5 首帧、首尾帧必须 adaptive;不会把显式宽高比静默改成 adaptive。

{
  "model":"doubao-seedance-2-5-260628",
  "content":[
    {"type":"text","text":"The scene gradually changes from dawn to sunset"},
    {"type":"image_url","role":"first_frame","image_url":{"url":"https://example.com/first.jpg"}},
    {"type":"image_url","role":"last_frame","image_url":{"url":"https://example.com/last.jpg"}}
  ],
  "ratio":"adaptive",
  "duration":5
}

编辑和延长

  • 编辑:必须有 reference_video,ratio 必须 adaptive,duration 必须 -1,待编辑视频 4–30 秒。
  • 延长:必须有 reference_video 和 adaptive 比例,时长可为 4–30 或 -1。
  • 设为 auto 时模型自行判断任务类型。提交成功后仍可能因类型与参数不匹配而异步失败,检查终态 error。
{
  "model":"doubao-seedance-2-5-260628",
  "content":[
    {"type":"text","text":"Change the background of the reference video to a garden"},
    {"type":"video_url","role":"reference_video","video_url":{"url":"https://example.com/reference.mp4"}}
  ],
  "omni_reference_task_type":"edit",
  "ratio":"adaptive",
  "duration":-1,
  "output_format":"mov"
}

草稿与正式视频

第一步:2.5、draft:true、resolution:"480p" 创建草稿并等待成功。第二步:把成功草稿的公开 ID 作为 draft_task.id:

{
  "model":"doubao-seedance-2-5-260628",
  "content":[{"type":"draft_task","draft_task":{"id":"task_<草稿任务标识>"}}],
  "resolution":"1080p",
  "output_format":"mov",
  "return_last_frame":true
}
  • 正式视频默认且仅支持 1080p;draft 必须省略或为 false。
  • 提示词、输入素材、duration、ratio、seed、generate_audio、omni_reference_task_type 自动复用草稿,不得再次传入。其他允许字段可重新指定,省略按模型默认。
  • 草稿须属于当前账户、已成功、使用同一模型,且仍在七天查询窗口内。
  • 草稿和正式视频是独立任务,分别收费;正式视频继承草稿是否含参考视频的计价类别。

Python SDK

import os
import time
from arkruntime import Ark

client = Ark(
    base_url="https://api.vibelab.me/api/v3",
    api_key=os.environ["LOOPTOKEN_API_KEY"],
)

task = client.content_generation.tasks.create(
    model="doubao-seedance-2-0-mini-260615",
    content=[{"type":"text","text":"A paper boat sails across a quiet lake"}],
    duration=4,
    resolution="480p",
)

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = client.content_generation.tasks.get(task_id=task.id)
    if result.status == "succeeded":
        print(result.content.video_url)
        break
    if result.status in {"failed", "expired", "cancelled"}:
        raise RuntimeError(result.error)
    time.sleep(5)
else:
    raise TimeoutError(f"Continue querying existing task {task.id}")

响应

创建成功返回 HTTP 200 和 {"id":"task_<任务标识>"},见快速开始。用该 id 查询任务;状态 queued、running 继续轮询,succeeded、failed、expired、cancelled 为终态。

查询任务

curl "https://api.vibelab.me/api/v3/contents/generations/tasks/$TASK_ID" \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY"
{
  "id":"task_<任务标识>",
  "model":"doubao-seedance-2-5-260628",
  "status":"succeeded",
  "cgt_id":"cgt-<火山任务标识>",
  "content":{
    "video_url":"https://example.com/result.mp4",
    "last_frame_url":"https://example.com/result-last-frame.jpg"
  },
  "error":null,
  "duration":5,
  "resolution":"720p",
  "ratio":"16:9",
  "framespersecond":24,
  "generate_audio":true,
  "usage":{"completion_tokens":108900,"total_tokens":108900},
  "created_at":1791130000,
  "updated_at":1791130060
}
字段类型含义
id、model、statusstring稳定任务 ID、实际模型版本、任务状态
cgt_idstringrunning、succeeded 且已获取火山任务 ID 时返回,原样透传 cgt-...,不替换 id;查询、列表、回调均适用;尚未获取时省略
content.video_urlstring成功后的视频 URL
content.last_frame_urlstring请求尾帧时返回,保留上游 PNG/JPEG 格式和原始内容,尺寸与输出视频相同
created_at、updated_atintegerUnix 秒
durationinteger实际帧数 / 24 向下取整的秒数,可能与实际媒体时长略有差异
resolution、ratio、output_formatstring实际输出规格
framespersecondinteger输出帧率
generate_audio、draftboolean音频、样片标志
draft_task_idstring正式视频对应的公开草稿任务 ID,为平台稳定 ID
errorobject / null失败时 code、message;成功时 null
execution_expires_after、priorityinteger任务超时阈值、执行优先级
service_tier、safety_identifierstring服务等级、已传入的终端用户标识
toolsobject[]实际工具,项含 type
usage.completion_tokens、usage.total_tokensinteger上游返回的实际 Token 用量
usage.tool_usage.web_searchinteger实际搜索次数,使用工具时可返回
  • 可选字段按实际任务响应返回。seed 仅在模型服务返回时透传,不会用请求值伪造响应;frames 不主动构造。Token 用量不会被隐藏,也不会把 admission 预估值当实际用量返回。
  • queued、running 时每 5–10 秒继续查询;succeeded 读 content;failed、expired、cancelled 均为终态。HTTP 200 可能携带失败任务,必须检查 status。
  • 任务记录仅在最近七天滚动窗口可查,窗口为 [当前 UTC 秒时间戳 - 7 天, 当前 UTC 秒时间戳)。
  • 视频和尾帧 URL 有效期 24 小时,请及时下载。生成服务的下载次数限制仍然适用,2.5 视频最多下载 100 次。

查询列表

curl --get https://api.vibelab.me/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
  --data-urlencode 'page_num=1' \
  --data-urlencode 'page_size=20' \
  --data-urlencode 'filter.status=succeeded' \
  --data-urlencode "filter.task_ids=$TASK_ID_1" \
  --data-urlencode "filter.task_ids=$TASK_ID_2"
Query 参数类型默认 / 范围
page_numinteger1;1–500
page_sizeinteger20;1–500
filter.modelstring不传;Endpoint ID 精确筛选,不是 Model ID
filter.service_tierstringdefault;default、flex
filter.statusstring不传;queued、running、cancelled、succeeded、failed、expired
filter.task_idsstring[]不传;重复参数名传多个 ID

响应 {"total":整数,"items":[任务查询对象]}。total 为筛选后的总数;超过最后一页时 items 为 [],total 仍保留。按创建时间倒序,创建时间相同按任务 ID 定序。旧 /v1 任务不会混入。

回调

callback_url 接收 POST JSON,结构与任务查询相同,使用同一个公开任务 ID。排队、运行、成功、失败、过期等状态变化可产生回调。

  • 接收端需在 5 秒内返回 2xx;失败最多尝试三次,间隔 30 秒。接收端应按 id 和 status 幂等处理。
  • callback_url 必须是 HTTPS 公网地址,不能指向回环、内网或元数据地址,不接受重定向。也可以只用轮询。

计费

  • 公式:费用 = Token 用量 / 1,000,000 × 对应档位 Token 单价 × 账户折扣。按实际 usage.completion_tokens 扣费。
  • 默认折扣系数 1(原价),0.8 为八折;模型专属折扣覆盖通用折扣,不叠乘。已配置的原生专属绝对价格优先,也不叠加折扣。
  • Token 单价按模型、输出分辨率、输入是否含参考视频分档。参考视频的输入总时长会影响计费用量,并非按文件个数固定加价;不要在 completion_tokens 上再加一次输入视频用量。缺少计费用量时不会按零元结算。
  • 生成前按已配置销售档位预扣,成功后按实际用量结算,失败/过期释放预扣。预扣不是最终费用。
  • 预扣按请求时长和分辨率估算输出用量(24 fps);未指定或自动时长先按 5 秒估算,不用模型最大时长或统一 4K 预算。估算像素预算:480p 854×480、720p 1280×720、1080p 1920×1080、4k 3840×2160。实际宽高、参考视频用量和自动时长以生成服务返回为准,结算时补退差额。
  • 提交时锁定价格版本和折扣,执行期间改价不影响该任务。草稿与正式视频分别结算。
  • 与Seedance 方舟原生素材库版共用同一套 Token 基础价格,但两种模式的账户和模型折扣分别配置,互不继承。
  • 积分换算 10 积分 = 1 美元(1 积分 = ¥0.7);正数金额按平台精度向上取整,最低扣费 0.001 积分;最终费用以账户账单为准。

错误

HTTP 错误体:{"error":{"code":"...","message":"..."}}。

HTTPcode触发场景处理
400MissingParameter、InvalidParameter缺少必填项、类型或模型参数限制不符,message 为具体原因(见下表)修正必填项、类型或模型参数限制
401AuthenticationErrorAPI Key 缺失或无效检查 API Key
403AccessDenied、QuotaExceeded模型/来源权限不足,或余额、账户额度不足检查权限、余额与账户额度
404InvalidEndpointOrModel.NotFound、InvalidTask.NotFound模型、Endpoint 不存在,或任务不属于当前账户 / 已超出七天窗口检查模型、Endpoint、任务归属及七天窗口
429RateLimitExceeded请求过于频繁降低请求频率,遵循 Retry-After
500 / 502 / 503InternalServiceError、ServiceUnavailable平台或上游异常,或没有兼容的原生视频通道保留请求 ID;已有任务 ID 时先继续查询
503SubmissionUnconfirmed创建请求的提交结果无法确认不要重新提交,保留 X-Request-Id 联系支持

常见 400 的 message:

message处理
model is required and must be a string / model is not supported使用模型表中的 ID
content must be a non-empty array of objectscontent 传非空数组
resolution is not supported by this model分辨率取所选模型的范围
ratio is invalid比例取请求参数中的枚举
duration must be -1 or between 4 and N时长传 4–N(2.5 为 30,2.0 为 15)或 -1
duration=-1 (auto duration) is not currently supported for this model; specify an integer duration between 4 and 30当前可选通道不支持自动时长,改传 4–30 的整数
execution_expires_after must be between 3600 and 259200任务有效期传 3600–259200
omni_reference_task_type requires Seedance 2.5仅 2.5 支持该字段
draft requires Seedance 2.5 at 480p草稿须用 2.5 且 resolution: "480p"
draft_task output requires resolution=1080p / draft_task cannot request draft=true草稿转正式视频的规则见草稿与正式视频
<字段> must be omitted when using draft_task已自动复用的字段不得再次传入
video_url does not support Base64视频传公网 URL 或 asset://
first/last frame cannot be combined with reference media首尾帧不能与参考素材混用
Seedance 2.0 audio requires an image or video2.0 的参考音频须搭配图片或视频
this task requires ratio=adaptive / edit requires reference_video and duration=-1 / extend requires reference_video首帧、首尾帧、编辑、延长的约束见编辑和延长
too many reference media items参考素材数量超过模型上限(见模型表)

注意事项

创建请求超时后不要盲目重新提交 → 已获得 ID 时查询原任务。HTTP 200 可能携带失败任务 → 必须检查 status。

  • 视频和尾帧 URL 24 小时过期;任务记录七天后不可查 → 及时下载转存。
  • 2.5 首帧/首尾帧/编辑/延长必须 adaptive,编辑还必须 duration: -1 → 按此传参。
  • 草稿转正式视频时,已自动复用的字段(提示词、素材、duration、ratio、seed、generate_audio、omni_reference_task_type)→ 不得再次传入。
  • 本模式的 Endpoint ID、素材 ID 不能与素材库版互用。

本页内容