LoopToken
视频生成

接口说明

POST /v1/videos/generations 异步协议与任务查询

接口地址

POST /v1/videos/generations
GET  /v1/tasks/{task_id}

视频生成耗时较长(通常数十秒到数分钟),接口采用平台自定义的异步两步协议,不是 OpenAI 官方接口:提交请求立即返回 202 和一个任务对象,之后用任务对象里的 task_id 轮询查询接口,直到任务进入终态(succeededfailed)。建议轮询间隔 5-10 秒。

模型系列

全部视频模型共用本页的异步协议与任务对象,但提交请求体的形状和参数规则因系列而异,各系列的输入结构与专属参数见对应系列页:

系列请求体形状当前模型
主流视频模型统一扁平字段:promptdurationresolutionmodeaudioaspect_ratioimage_urlsfirst_frame_imagesora-2sora-2-proveo3.1-fastveo3.1-qualityveo3.1-liteMiniMax-Hailuo-2.3minimax-h3kling-v3
Seedance 系列方舟风格:顶层参数 + content 多模态数组doubao-seedance-2-5-cloudseedance-2-5-expseedance-2-0-expseedance-2-0-exlseedance-2-5-exlseedance-2-5-exrseedance-2-5-maxseedance-2-5-akseedance-2-0-akseedance-2-5-higseedance-2-0-higseedance-2-0-magseedance-2-0-exrseedance-2-0-extseedance-fast-2-0-extdoubao-seedance-2-0-260128doubao-seedance-2-0-fast-260128doubao-seedance-2-0-mini-260615
Wan 视频系列DashScope 风格:input.prompt/input.media + parameterswan2.7-t2vwan2.7-i2vwan2.7-r2vwan2.6-t2v
HappyHorse 系列DashScope 风格:input.prompt/input.media + parametershappyhorse-1.0-t2vhappyhorse-1.0-i2vhappyhorse-1.0-r2vhappyhorse-1.0-video-edit
Grok Imagine Video统一扁平字段:promptqualitydurationimage_urlsgrok-imagine-1.5-video
SkyReels V4统一扁平字段:promptresolutiondurationimage_urlsref_imagesref_videosskyreels-v4-fastskyreels-v4-std
Pixverse v6统一扁平字段:promptresolutiondurationimage_urlsaudiopixverse-v6
Vidu Q3 系列统一扁平字段:promptresolutiondurationimage_urlsviduq3viduq3-mixviduq3-providuq3-turbo
Omni Flash 系列统一扁平字段:promptresolution/durationomni-flash-ext);gemini-omni-flash-preview 仅需 promptomni-flash-extgemini-omni-flash-preview

提交请求

请求体为 JSON。modelcallback_url 是公共字段;生成输入与控制字段必须按所选模型系列填写,不能把一个系列的参数规则套用到另一个系列。

字段类型必填说明
modelstring平台没有该模型 → 404 model_not_found
callback_urlstring任务到达终态时由 LoopToken 投递的回调地址;仅接受 https,且不能解析到内网/回环/链路本地等非公网地址,否则 → 400 invalid_request_error

主流模型扁平字段

主流视频模型使用顶层扁平字段:promptdurationresolutionmodeaudioaspect_ratioimage_urlsfirst_frame_image。平台会按所选主流模型解析这些字段,而不是把它们视为未处理的附加字段。

主流模型的预扣计费只读取模型默认值和顶层 duration / resolution / mode / audiocontent 中的旧式文本指令以及 parameters 中的嵌套字段不参与主流模型的时长或质量档位计算;未传对应顶层字段时直接使用该模型默认值。各模型默认值、有效时长、分辨率和专属字段见主流视频模型aspect_ratioimage_urlsfirst_frame_image 作为生成输入按模型能力处理,不参与时长或质量档位的默认值计算。

字段必须符合具体模型的能力范围。例如 kling-v3 使用 mode 选择质量档位,不接受顶层 resolution

其他系列字段

字段类型必填说明
contentarray视系列方舟风格系列(Seedance)的输入:[{"type":"text","text":"<提示词>"}];text 内可写 --duration <秒>--resolution <720p|1080p> 指令来指定时长与分辨率
inputobject视系列DashScope 风格系列(Wan / HappyHorse)的输入:promptmedia 等,详见系列页
parameters.durationinteger显式指定时长(秒),缺省为 5;参与预扣计算
parameters.sizestring形如 "宽*高",长边 ≥1440 记为 1080p 计费档,否则记为 720p 档;参与预扣计算

对于这些系列,预扣参数的取舍规则是:content 里的 --duration/--resolution 指令与 parameters.duration/parameters.size 整体二选一——请求体中只要出现 parameters 键,平台就只从 parameters 内读取 duration/size,text 里的指令会被整体忽略(不做字段级回退,parameters 中缺失的子字段按默认值 5 秒 / 720p 处理)。例如 parameters 只传了 {"duration": 10}、同时 text 里写了 --resolution 1080p,实际按 10 秒 / 720p 计。注意平台预扣不识别 parameters.resolution(Wan/HappyHorse 的档位写法),该写法下预扣按 720p 档。这份参数只用于提交时的预扣费计算,任务结束后按实际结果多退少补(参见下文"任务对象字段"中终态 duration/resolution 的覆盖规则)。

提交成功返回 202,响应体为任务对象(见下文,此时处于 pending 状态)。

查询任务

用提交返回的 task_id(格式 vt_ 前缀 + UUID)调用 GET /v1/tasks/{task_id} 查询当前状态。任务不存在、或不属于当前 API Key 所在账户 → 404 task_not_found

轮询时用 status 判断是否结束,progress 只用来展示进度条。只有部分模型的上游会回报真实进度,其余模型在整个生成过程中都是 0,直到终态跳到 100——不要用 progress 是否变化来判断任务是否卡住。当前会回报真实进度的是 seedance-2-0-exlseedance-2-5-exlseedance-2-5-exrseedance-2-5-maxseedance-2-5-akseedance-2-0-akseedance-2-5-higseedance-2-0-higseedance-2-0-magseedance-2-0-exr

任务对象字段

所有状态都包含:

字段类型说明
task_idstringvt_ 前缀 + UUID
modelstring提交时使用的平台模型名
statusstringpending / running / succeeded / failed
progressinteger任务进度百分比,0-100;进入终态(含 failed)一律为 100
created_atinteger任务创建时间,Unix 秒
durationinteger/number时长(秒);默认为提交时预扣计算出的值,任务结束后如果上游返回了实际时长会被覆盖
resolutionstring所选模型支持的公开档位之一:720p / 768p / 1024p / 1080p / 4k;并非每个模型都支持全部档位。默认为提交时计算出的档位,任务结束后如果返回了可识别的实际分辨率会被覆盖

进入终态(succeeded/failed)后追加:

字段类型说明
completed_atinteger任务结束时间,Unix 秒
usageobject上游返回的用量信息,视上游而定可能包含 durationSR(分辨率短边)、ratio(画面比例,如 "16:9") 等子字段,缺失的子字段不出现
ratiostring画面比例(如 "16:9"),仅上游返回了该信息时出现
credits_chargednumber本次实际扣费(credit)

succeeded 额外追加:

字段类型说明
video_urlstring视频下载直链
expires_atintegervideo_url 的失效时间,Unix 秒

video_url 有时效,过期后字段不再返回(链接本身也会失效):有效期上限为任务完成后 72 小时,具体时长取决于平台内部转存状态,某些情况下会短至完成后 24 小时。请在拿到 succeeded 结果后尽快下载转存,不要缓存链接长期使用。

failed 额外追加:

字段类型说明
errorobject{"code": "...", "message": "..."};code 取值 timeout(平台侧轮询超时)或 upstream_error(上游生成失败,不透出上游原始错误码)

完整示例

# 1. 提交任务
curl https://api.vibelab.me/v1/videos/generations \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-fast-260128",
    "content": [{"type": "text", "text": "海边日落,海浪拍打礁石 --duration 5 --resolution 720p"}]
  }'
# => 202 {"task_id":"vt_...","status":"pending","progress":0,...}

# 2. 用返回的 task_id 轮询,间隔建议 5-10 秒
curl https://api.vibelab.me/v1/tasks/vt_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  -H "Authorization: Bearer $LOOPTOKEN_API_KEY"

计费

视频模型的计费方式因模型而异:部分模型按秒计费,部分模型按单次任务固定价格计费,具体金额还可能取决于分辨率或质量档位。提交时先按请求参数预扣,任务结束后按实际结果结算,多退少补;credits_charged 为本次实际扣费金额。最终价格以定价页为准。

错误

状态码code触发场景
400invalid_request_error请求体不是合法 JSON,或 callback_url 不是字符串/不满足 https 与公网地址要求
402insufficient_credits账户余额不足以覆盖预扣费用
404model_not_found提交时,平台没有该模型
404task_not_found查询时,task_id 不存在或不属于当前账户
502upstream_error上游提交失败且重试耗尽
503no_available_channel该模型当前没有可用渠道

完整错误响应体格式与更多错误码见错误码

本页内容