doubao-seedance-2.0 模型的开发者,介绍视频生成、私有素材、真人认证和公域人物接口。https://biz.anyroute.iotask_xxx 视频任务
asset_xxx 私有素材
assetgrp_xxx 素材组
authsess_xxx 真人认证会话
char_xxx 公域人物doubao-seedance-2.0type | 载 荷字段 | 支持的 role |
|---|---|---|
text | text | 不传 role |
image_url | image_url.url | reference_image、first_frame、last_frame |
video_url | video_url.url | reference_video |
audio_url | audio_url.url | reference_audio |
asset://asset_xxx、asset://char_xxx、受限 Base64 Data URL。asset://asset_xxx。asset://asset_xxx、受限 Base64 Data URL。multipart/form-data。data:image/jpeg;base64,<BASE64_DATA>jpeg、png、webp、bmp、tiff、gif,格式名必须小写。单张图片解码后必须小于 30 MB,声明格式必须与文件内容一致。data:audio/mp3;base64,<BASE64_DATA>wav、mp3。单段音频要求 2-15 秒且不超过 15 MB,最多 3 段,所有参考音频总时长不超过 15 秒。| 字段 | 类型 | 说明 |
|---|---|---|
model | string | 必填,固定使用公开模型名 |
content | array | 必填,1-64 项 |
duration | integer | 可选,-1(模型自动选择)或 4-15 秒;与 frames 互斥 |
frames | integer | 可选,1-360;与 duration 互斥 |
resolution | string | 可选,支持 480p、720p、1080p |
ratio | string | 可选,支持 16:9、4:3、1:1、3:4、9:16、21:9、adaptive |
seed | integer | 可选,范围 -1 到 4294967295 |
generate_audio | boolean | 可选,是否生成音频 |
watermark | boolean | 可选,是否添加水印 |
return_last_frame | boolean | 可选,是否返回尾帧 |
service_tier | string | 可选,当前仅支持 default |
execution_expires_after | integer | 可选,3600-259200 秒 |
callback_url | string | 可选,接收任务回调的公网 HTTPS URL |
tools | array | 可选,当前每项仅支持 {"type":"web_search"};平台安全上限为 16 项 |
camera_fixed、draft 和 priority;即使传 false 或 0 也属于显式提供参数并会被拒绝。4k 不受支持,提交时返回 unsupported_video_parameter。reference_image、reference_video、reference_audio 混用;尾帧不能单独提供。多模态参考最多 9 张参考图片、3 个参考视频和 3 段参考音频。图片或视频的尺寸、时长、帧率以及所有媒体总时长由平台和当前模型最终校验。duration: -1 表示由当前模型自动选择时长。平台在任务提交阶段按 15 秒上限预扣,任务完成后再按可信 usage 结算,不会把 -1 当作负数计费。400 invalid_request,不会被静默忽略。Idempotency-Key。建议每个业务订单使用一个稳定且唯一的 Key。active 状态:{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "从第一帧平滑过渡到最后一帧"
},
{
"type": "image_url",
"image_url": {"url": "https://media.example.com/first.jpg"},
"role": "first_frame"
},
{
"type": "image_url",
"image_url": {"url": "https://media.example.com/last.jpg"},
"role": "last_frame"
}
],
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"return_last_frame": true
}{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "参考视频中的动作节奏,保持主体外观一致"
},
{
"type": "video_url",
"video_url": {"url": "asset://asset_xxx"},
"role": "reference_video"
}
],
"duration": 4,
"resolution": "720p",
"ratio": "16:9"
}{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "参考人物和音频生成自然讲述视频"
},
{
"type": "image_url",
"image_url": {"url": "asset://asset_xxx"},
"role": "reference_image"
},
{
"type": "audio_url",
"audio_url": {"url": "asset://asset_xxx"},
"role": "reference_audio"
}
],
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"generate_audio": true
}200:{
"id": "task_xxx"
}202,响应中仍包含同一个任务 ID。此时不要重新提交,应查询该任务。{
"id": "task_xxx",
"model": "doubao-seedance-2.0",
"status": "succeeded",
"progress": 100,
"error": null,
"created_at": 1783670400,
"updated_at": 1783670580,
"content": {
"video_url": "https://biz.anyroute.io/v1/videos/task_xxx/content",
"last_frame_url": "https://biz.anyroute.io/v1/videos/task_xxx/last-frame"
},
"usage": {
"completion_tokens": 40594,
"total_tokens": 40594
},
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"seed": 123456,
"framespersecond": 24,
"generate_audio": false,
"watermark": false,
"return_last_frame": true
}queued | running | cancelled | succeeded | failed | expiredprogress 为 0-100 的归一化整数。只有成功任务才会返回结果地址。没有可信 usage 时,平台不会生成该字段。| 参数 | 说明 |
|---|---|
page_num | 默认 1,范围 1-500 |
page_size | 默认 20,范围 1-500 |
filter.status | 可重复,筛选任务状态 |
filter.task_ids | 可重复,最多 100 个任务 ID |
filter.model | 按模型筛选 |
filter.service_tier | 按 service tier 筛选 |
{
"items": [],
"total": 0
}private, no-store。结果已过期且无法安全刷新时返回 410 video_result_expired。204,无响应体。queued:请求取消任务。running:返回 task_not_cancellable。succeeded、failed、expired、cancelled:删除终态任务记录。callback_url。平台在任务状态变化时向该地址发送 POST 回调。event_id 去重。回调失败不会改变任务状态、结果或计费。{
"event_id": "evt_xxx",
"type": "succeeded",
"created_at": 1783670580,
"data": {
"id": "task_xxx",
"model": "doubao-seedance-2.0",
"status": "succeeded",
"error": null,
"created_at": 1783670400,
"updated_at": 1783670580,
"version": 4,
"content": {
"video_url": "https://biz.anyroute.io/v1/videos/task_xxx/content"
}
}
}X-New-Api-Event-Id
X-New-Api-Task-Id
X-New-Api-Timestamp
X-New-Api-Signature: v1=<hex hmac-sha256>/v1/videos 兼容接口Idempotency-Key。201:{
"id": "assetgrp_xxx",
"object": "asset_group",
"name": "presenter-assets",
"description": "Presenter private assets",
"group_type": "AIGC",
"status": "active",
"route_group_id": "g000xx",
"route_group_name": "Seedance 服务分组展示名称",
"created_at": 1783670400,
"updated_at": 1783670400
}route_group_name 是当前服务分组的对外展示名称。后续创建普通素材时应使用响应中的 assetgrp_xxx 作为 group_id。group_type: "AIGC"。真人素材组必须通过真人认证流程生成,不能直接创建 LivenessFace 素材组。limit、after、status 和 route_group_id。limit 默认 20,范围 1-100。{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}creating | active | failed | create_unknown | invalid |
deleting | deleted | delete_failedIdempotency-Key。素材创建只接受 JSON,url 必须是可公开访问的 HTTPS URL。asset:// 或 Multipart 上传。平台不保存素材文件二进制。asset_type 支持:Image | Video | Audiogroup_id。真人素材应传真人认证会话返回的 asset_group_id。202:{
"id": "asset_xxx",
"object": "asset",
"name": "presenter-front",
"asset_type": "Image",
"status": "processing",
"group_id": "assetgrp_xxx",
"route_group_id": "g000xx",
"route_group_name": "Seedance 服务分组展示名称",
"created_at": 1783670400,
"updated_at": 1783670400
}creating | processing | active | failed | create_unknown |
invalid | deleting | deleted | delete_failedactive 素材可以用于视频。limit、after、status、asset_type、group_id 和 route_group_id。{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}200 和更新后的素材对象。建议以合理间隔轮询,直到状态成为 active 或 failed。invalid 时应显式创建新素材,平台不会自动重新上传。创建认证会话
-> 打开 authorization_url 完成真人认证
-> 查询会话直到 completed
-> 获取 LivenessFace 素材组 asset_group_id
-> 将同一真人的图片或视频上传到该素材组
-> 刷新素材直到 active
-> 视频使用 asset://asset_xxxIdempotency-Key。201:{
"id": "authsess_xxx",
"object": "asset.authorization_session",
"status": "pending",
"authorization_url": "https://example.com/authorization/xxx",
"route_group_id": "g000xx",
"route_group_name": "Seedance 服务分组展示名称",
"expires_at": 1783670700,
"created_at": 1783670400,
"updated_at": 1783670400
}authorization_url。该地址具有时效性,不要长期保存或公开分享。pending | verifying | completed | failed | expired{
"id": "authsess_xxx",
"object": "asset.authorization_session",
"status": "completed",
"asset_group_id": "assetgrp_xxx",
"route_group_id": "g000xx",
"route_group_name": "Seedance 服务分组展示名称",
"expires_at": 1783670700,
"created_at": 1783670400,
"updated_at": 1783670600
}asset_group_id 后,调用普通素材创建接口,把同一真人的素材上传到该组。人脸不一致的素材可能处理失败。model。可选参数包括 limit、after、q、tags、gender、age_group 和 nationality。{
"object": "list",
"data": [
{
"id": "char_xxx",
"object": "public_character",
"name": "business-presenter",
"preview_url": "https://media.example.com/presenter-preview.jpg",
"tags": ["business", "presenter"],
"route_group_id": "g000xx",
"route_group_name": "Seedance 服务分组展示名称",
"reference": "asset://char_xxx"
}
],
"first_id": "char_xxx",
"last_id": "char_xxx",
"has_more": false
}reference:{
"type": "image_url",
"image_url": {"url": "asset://char_xxx"},
"role": "reference_image"
}public_catalog_not_supported。asset_in_use。成功受理删除时返回 202 和当前素材对象。asset_group_not_empty。成功受理删除时返回 202 和当前素材组对象。Idempotency-Key:POST /api/v3/contents/generations/tasksPOST /v1/videosPOST /v1/assetsPOST /v1/asset-groupsPOST /v1/assets/real-person/authorization-sessions409 idempotency_conflict。409 idempotency_in_progress。usage 及平台当前模型、分辨率、参考视频和分组倍率配置结算。素材、素材组和真人认证的创建、查询、刷新不单独扣除视频额度。{
"usage": {
"completion_tokens": 40594,
"total_tokens": 40594
}
}{
"error": {
"message": "asset is not ready",
"type": "asset_not_ready",
"code": "asset_not_ready"
}
}error.code,不要依赖 message 文案。| HTTP | code | 含义 |
|---|---|---|
| 400 | invalid_request | JSON、字段、参数范围或 URL 不合法 |
| 400 | invalid_asset_reference | 非法 asset:// 引用或使用了非平台资源 ID |
| 400 | asset_kind_mismatch | 素材类型与 content 类型不匹配 |
| 400 | unsupported_video_parameter | 当前模型不支持该字段、role、分辨率或组合 |
| 400 | public_catalog_not_supported | 当前模型未配置平台公域人物目录 |
| 400 | task_cancel_not_supported | 当前模型不支持取消排队任务 |
| 404 | task_not_found | 任务不存在或不属于当前用户 |
| 404 | asset_not_found | 素材不存在或不属于当前用户 |
| 404 | asset_group_not_found | 素材组不存在或不属于当前用户 |
| 404 | authorization_session_not_found | 真人认证会话不存在或不可访问 |
| 404 | public_character_not_found | 公域人物不存在或当前模型不可用 |
| 409 | idempotency_conflict | 同一个幂等 Key 对应不同请求 |
| 409 | idempotency_in_progress | 幂等操作尚不能安全重放 |
| 409 | asset_not_ready | 素材尚未达到 active |
| 409 | asset_in_use | 素材正在被未完成任务使用 |
| 409 | asset_group_not_empty | 素材组中仍有素材 |
| 409 | asset_binding_conflict | 请求中的素材不能组合使用 |
| 409 | asset_channel_mismatch | 视频模型与素材不匹配 |
| 409 | asset_binding_unavailable | 素材当前不可用 |
| 409 | asset_route_group_unavailable | 当前 Token 没有可用的模型服务分组 |
| 409 | asset_route_group_misconfigured | 当前服务分组配置不可用 |
| 409/410 | asset_invalid | 素材已经失效 |
| 410 | authorization_session_expired | 真人认证会话已经过期 |
| 410 | video_result_expired | 视频结果已过期且无法刷新 |
| 502/503 | asset_upstream_unavailable | 素材服务 暂时不可用 |
1. POST /v1/asset-groups
2. 保存 assetgrp_xxx
3. POST /v1/assets,并传入 group_id
4. 保存 asset_xxx
5. POST /v1/assets/{asset_id}/refresh,直到 active
6. POST /api/v3/contents/generations/tasks
7. 在 content 中使用 asset://asset_xxx
8. GET /api/v3/contents/generations/tasks/{task_id}
9. succeeded 后访问 /v1/videos/{task_id}/content1. POST /v1/assets/real-person/authorization-sessions
2. 打开 authorization_url 完成认证
3. GET 认证会话,直到 completed
4. 保存 asset_group_id
5. POST /v1/assets,把同一真人素材上传到该组
6. POST /v1/assets/{asset_id}/refresh,直到 active
7. POST /api/v3/contents/generations/tasks
8. 在 content 中使用 asset://asset_xxx
9. 查询任务并读取视频结果