创建视频生成任务
提交视频生成任务,立即返回任务 ID。视频生成为异步操作,需通过
GET /v1/videos/generations/{taskId} 轮询任务状态。
计费方式:提交时按预估时长冻结费用,视频生成成功后按实际用量结算;生成失败则退还冻结金额。
支持多种输入模式(通过 content 数组指定):
- 文生视频:仅传入
type: text的提示词 - 图生视频(首帧/首尾帧):传入图片,
role设为first_frame/last_frame - 多模态参考生视频(Seedance 2.0 / MiniMax-H3):传入参考图片、参考视频、参考音频
- 有声视频(Seedance 2.0、1.5 pro):设置
generate_audio: true,模型自动生成同步音频。MiniMax-H3 不支持此字段。 - 样片模式(仅 Seedance 2.5):
draft: true先出 480p 预览,计费与直接生成 480p 相同。确认后用返回的任务 ID 再提交一次,content只放draft_task,生成 1080p 成片。成片不要再传提示词、参考素材、时长、宽高比、种子和generate_audio。两步分开计费;成片单价看样片那一步有没有参考视频,样片本身不算输入视频。样片任务 7 天内有效。闲时模型不支持。
MiniMax-H3(国内站 / 国际站)参数标准见文档「MiniMax H3 请求参数」:resolution 为 768P 或 2K,duration 为 4–15 的整数,文生必须给具体 ratio,首尾帧不能和参考素材混用。
图片 / 媒体引用规范(重要):
- 普通图片:
image_url.url请传 公网可访问的 https URL(如对象存储 / CDN)。上游引擎按 URL 直接拉取,不经过本服务内存。 - 含真人的参考图:必须用
asset://<asset_id>引用一个经过验证的真人素材(先调POST /v1/asset-groups/validate-session完成 H5 真人活体验证,拿到group_id/asset_id)。直接传真人图 URL 或 base64 都会被上游InputImageSensitiveContentDetected.PrivacyInformation拒绝。 - 不要 inline base64:
data:image/...;base64,...这种内联编码会让请求体迅速膨胀到 MB 级。请求体硬上限 5 MB,超过返回413 payload_too_large。需要传图请上传到对象存储后传 URL,或用asset://引用素材库。
创建时可指定 video_url_mode:upstream 直接返回原生地址,不等待保存;auto 优先原生地址,必要时回退到已保存版本;tos 等待我方确认保存完成。省略时使用账号默认策略。该设置会固化到新任务和回调,不影响后台保存;原生有效期可能未知,闲时升档模型不支持 upstream。
显式模式与 callback_url 同时使用前须配置账号 Webhook Secret,否则创建返回 400 webhook_secret_required。未配置 secret 且省略模式的原有回调客户继续沿用旧链路。
Authorization
BearerAuth API 密钥认证(OpenAI 格式)。在 Authorization 请求头中传入:
Authorization: Bearer tr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X post "https://api.xrtoken.net/v1/videos/generations" \ -H "Content-Type: application/json" \ -d '{ "model": "volcengine/doubao-seedance-2-0-260128", "content": [ { "type": "text", "text": "一只猫咪在草地上奔跑,电影质感,慢镜头" } ], "resolution": "720p", "duration": 5 }'{
"id": "550e8400-e29b-41d4-a716-446655440000",
"upstream_id": "string",
"model": "string",
"status": "queued",
"created_at": "2019-08-24T14:15:22Z"
}{
"error": "model field is required",
"type": "invalid_request_error"
}{
"error": "invalid or missing API key",
"type": "auth_error"
}{
"error": "insufficient balance -- please top up or upgrade your plan",
"type": "billing_error"
}{
"error": "rate limit exceeded",
"type": "rate_limit_error"
}{
"error": "upstream provider error",
"type": "server_error"
}