视频生成 · API
doubao-seedance-2-0-260128
Unicomp AI 媒体 API · unicomp.media.v1
调用示例
正式 Base URL 为 https://www.unicompapi.com/v1;设置 UNICOMP_BASE_URL 与 UNICOMP_API_KEY 后替换素材与 Base64 占位内容。新请求使用 REQUEST_KEY,响应 X-Unicomp-Request-Id 保存为 REQUEST_ID;两者用于查询同一原单。
POST /v1/videos
# 仅用于新请求;未知结果时查询原单,不重新执行本段
# 需要 Python 3;保存打印的 REQUEST_KEY
REQUEST_KEY="$(python3 -c 'import uuid; print(uuid.uuid4())')"
[ -n "$REQUEST_KEY" ] || exit 1 # UUID生成失败时停止
printf 'REQUEST_KEY=%s\n' "$REQUEST_KEY"
curl "$UNICOMP_BASE_URL/videos" \
-H "Authorization: Bearer $UNICOMP_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $REQUEST_KEY" \
--data '{
"model": "doubao-seedance-2-0-260128",
"prompt": "白色背景上的橙色陶瓷杯",
"parameters": {
"aspect_ratio": "16:9",
"duration_seconds": 4,
"generate_audio": true,
"generation_mode": "text_to_video",
"omni_reference_task_type": "auto",
"resolution": "720P",
"return_last_frame": false,
"watermark": false
}
}'先读取报价
POST /v1/videos/quote,Bearer鉴权,JSON与生成请求相同。报价只读,不创建任务、不占额。生成请求可附 expected_price_version 和 expected_quote_amount,对应报价的 price_version 与 quoted_amount;变化返回409。
{
"object": "media.quote",
"model": "doubao-seedance-2-0-260128",
"price_version": "<报价返回的版本>",
"parameters": {
"aspect_ratio": "16:9",
"duration_seconds": 4,
"generate_audio": true,
"generation_mode": "text_to_video",
"omni_reference_task_type": "auto",
"resolution": "720P",
"return_last_frame": false,
"watermark": false
},
"input_digest": "<报价返回的64位原输入摘要>",
"currency": "CNY_MICRO",
"quoted_amount": "<按实际参数计算的整数微元>"
}按原报价摘要创建
保留原Key、描述、参数及素材原序;将原报价值附到原请求,不能用摘要代替素材授权。
{
"model": "doubao-seedance-2-0-260128",
"prompt": "白色背景上的橙色陶瓷杯",
"parameters": {
"aspect_ratio": "16:9",
"duration_seconds": 4,
"generate_audio": true,
"generation_mode": "text_to_video",
"omni_reference_task_type": "auto",
"resolution": "720P",
"return_last_frame": false,
"watermark": false
},
"expected_price_version": "<原quote.price_version>",
"expected_quote_amount": "<原quote.quoted_amount整数>",
"expected_input_digest": "<原quote.input_digest,64位hex>"
}生成方式与素材
使用parameters.generation_mode选择下列方式。首帧、尾帧及音视频参考使用referenceAssets明确角色;不能靠素材数组顺序猜测首帧或尾帧。报价和生成必须使用同一组素材与角色。
| 生成方式 | 参数值 | 文字描述 | 素材要求 |
|---|---|---|---|
| 文生视频 | text_to_video | 必填 | 不需要素材 |
| 图生视频(首帧) | first_frame | 必填 | 首帧:1–1 件;PNG / JPEG / WebP / TIFF / GIF / HEIC / HEIF / BMP;每件≤28.61MiB;短边≥300;边长≤6000;像素≤36000000 |
| 首尾帧视频 | first_last_frame | 必填 | 首帧:1–1 件;PNG / JPEG / WebP / TIFF / GIF / HEIC / HEIF / BMP;每件≤28.61MiB;短边≥300;边长≤6000;像素≤36000000 尾帧:1–1 件;PNG / JPEG / WebP / TIFF / GIF / HEIC / HEIF / BMP;每件≤28.61MiB;短边≥300;边长≤6000;像素≤36000000 |
| 参考图片生成 | reference_images | 必填 | 参考图片:1–9 件;PNG / JPEG / WebP / TIFF / GIF / HEIC / HEIF / BMP;每件≤28.61MiB;短边≥300;边长≤6000;像素≤36000000 |
| 多模态参考视频 | reference_media | 必填 | 参考图片:0–9 件;PNG / JPEG / WebP / TIFF / GIF / HEIC / HEIF / BMP;每件≤28.61MiB;短边≥300;边长≤6000;像素≤36000000 参考视频:0–3 件;MP4 / MOV;每件≤190.73MiB;短边≥300;边长≤6000;像素≤8295044;每件时长≥2秒;每件时长≤15秒;该类素材总时长≤15秒 参考音频:0–3 件;WAV / MP3;每件≤14.31MiB;每件时长≥2秒;每件时长≤15秒;该类素材总时长≤15秒 |
上传素材使用source: "upload",已审核作品使用source: "generated"。对应ID同时列在assetIds或generatedAssetIds;集合须完全一致且不能重复。
准备本人参考素材
素材API目前仅开放个人账户的个人Key。上传不创建生成任务。此型号可用上传格式与配置如下;参考输入的角色和数量按生成方式或对应调用组合填写,不能把接口可上传格式当作模型输入能力。使用本人同账号Key上传原文件,返回data.id后填入assetIds,不能使用他人素材ID。
PNG / JPEG / WebP / TIFF / GIF / HEIC / HEIF / BMP;原文件≤28.61MiB;请求头X-Image-Profile: seedance-reference。总量与轮次按对应调用组合约束。
MP4 / MOV;原文件≤190.73MiB;请求头X-Image-Profile: seedance-native-v5-video。总量与轮次按对应调用组合约束。
WAV / MP3;原文件≤14.31MiB;请求头X-Image-Profile: seedance-reference。总量与轮次按对应调用组合约束。
curl "$UNICOMP_BASE_URL/assets" \
-H "Authorization: Bearer $UNICOMP_API_KEY" \
-H "Content-Type: image/png" \
-H "X-Image-Profile: seedance-reference" \
-H "X-File-Name: reference.png" \
--data-binary @reference.pngcurl "$UNICOMP_BASE_URL/assets" \
-H "Authorization: Bearer $UNICOMP_API_KEY" \
-H "Content-Type: video/mp4" \
-H "X-Image-Profile: seedance-native-v5-video" \
-H "X-Model-Id: doubao-seedance-2-0-260128" \
-H "X-File-Name: reference.mp4" \
--data-binary @reference.mp4curl "$UNICOMP_BASE_URL/assets" \
-H "Authorization: Bearer $UNICOMP_API_KEY" \
-H "Content-Type: audio/wav" \
-H "X-Image-Profile: seedance-reference" \
-H "X-File-Name: reference.wav" \
--data-binary @reference.wav{
"data": {
"id": "<本人素材ID>",
"object": "asset",
"name": "reference.png",
"kind": "image",
"mime_type": "image/png",
"bytes": "<真实文件字节数>",
"sha256": "<真实SHA256>",
"created_at": "<上传时间>",
"url": "/v1/assets/<本人素材ID>/content"
}
}按上方对应格式设置X-Image-Profile;原二进制大小按该profile及模型限制,Content-Type与实际内容必须匹配;X-File-Name为URL编码文件名。模型输入还需符合本页尺寸、格式、数量和总大小限制。素材列表GET /v1/assets,本人素材内容GET/HEAD /v1/assets/<素材ID>/content。
字段与限制
| 字段 | 类型 | 范围 / 默认值 |
|---|---|---|
model | string | 精确使用 doubao-seedance-2-0-260128 |
prompt | string | 生成描述;按所选生成方式的必填规则 |
parameters.generation_mode | string · 可选 | text_to_video、first_frame、first_last_frame、reference_images、reference_media;默认 text_to_video |
parameters.omni_reference_task_type | string · 可选 | auto、reference;默认 auto |
parameters.resolution | string · 可选 | 480P、720P、1080P、4K;默认 720P |
parameters.aspect_ratio | string · 可选 | 16:9、9:16、4:3、3:4、1:1、21:9、adaptive;默认 16:9 |
parameters.duration_seconds | integer · 可选 | -1、4、5、6、7、8、9、10、11、12、13、14、15;默认 4 |
parameters.frames | integer · 可选 | 29 – 289 |
parameters.generate_audio | boolean · 可选 | true / false;默认 true |
parameters.watermark | boolean · 可选 | true / false;默认 false |
parameters.return_last_frame | boolean · 可选 | true / false;默认 false |
parameters.seed | integer · 可选 | -1 – 2147483647 |
parameters.output_format输出格式 | string · 可选 | mp4 |
parameters.camera_fixed固定镜头 | boolean · 可选 | true / false 省略时使用模型默认设置。 |
parameters.priority任务优先级 | integer · 可选 | 0 – 9 |
请求组合示例
示例随当前型号配置生成;请替换素材与历史消息占位内容。选择相应组合展开查看,不要混用不同组合参数。
生成方式:文生视频
{
"model": "doubao-seedance-2-0-260128",
"prompt": "白色背景上的橙色陶瓷杯",
"parameters": {
"aspect_ratio": "16:9",
"duration_seconds": 4,
"generate_audio": true,
"generation_mode": "text_to_video",
"omni_reference_task_type": "auto",
"resolution": "720P",
"return_last_frame": false,
"watermark": false
}
}- 素材ID是本人已上传素材占位;先按同一原Key、描述、参数与素材报价,再创建原任务;不接受裸远程URL。
- 报价后保存input_digest、price_version和quoted_amount,创建传原expected_input_digest、expected_price_version、expected_quote_amount;输入变化须重新报价,未知结果仅查询原任务。
生成方式:图生视频(首帧)
{
"model": "doubao-seedance-2-0-260128",
"prompt": "白色背景上的橙色陶瓷杯",
"parameters": {
"aspect_ratio": "16:9",
"duration_seconds": 4,
"generate_audio": true,
"generation_mode": "first_frame",
"omni_reference_task_type": "auto",
"resolution": "720P",
"return_last_frame": false,
"watermark": false
},
"assetIds": [
"<本人first_frame_1素材ID>"
],
"referenceAssets": [
{
"id": "<本人first_frame_1素材ID>",
"source": "upload",
"role": "first_frame"
}
]
}- 素材ID是本人已上传素材占位;先按同一原Key、描述、参数与素材报价,再创建原任务;不接受裸远程URL。
- 报价后保存input_digest、price_version和quoted_amount,创建传原expected_input_digest、expected_price_version、expected_quote_amount;输入变化须重新报价,未知结果仅查询原任务。
生成方式:首尾帧视频
{
"model": "doubao-seedance-2-0-260128",
"prompt": "白色背景上的橙色陶瓷杯",
"parameters": {
"aspect_ratio": "16:9",
"duration_seconds": 4,
"generate_audio": true,
"generation_mode": "first_last_frame",
"omni_reference_task_type": "auto",
"resolution": "720P",
"return_last_frame": false,
"watermark": false
},
"assetIds": [
"<本人first_frame_1素材ID>",
"<本人last_frame_1素材ID>"
],
"referenceAssets": [
{
"id": "<本人first_frame_1素材ID>",
"source": "upload",
"role": "first_frame"
},
{
"id": "<本人last_frame_1素材ID>",
"source": "upload",
"role": "last_frame"
}
]
}- 素材ID是本人已上传素材占位;先按同一原Key、描述、参数与素材报价,再创建原任务;不接受裸远程URL。
- 报价后保存input_digest、price_version和quoted_amount,创建传原expected_input_digest、expected_price_version、expected_quote_amount;输入变化须重新报价,未知结果仅查询原任务。
当前价格
接口金额使用整数微元:1元 = 1,000,000微元。按报价和实际用量结算。
| 规格 | 计价项 | 人民币单价 |
|---|---|---|
| 480P | 百万计费 Token | ¥92/百万计费 Token |
| 480P · 含参考视频 | 百万计费 Token | ¥56/百万计费 Token |
| 720P | 百万计费 Token | ¥92/百万计费 Token |
| 720P · 含参考视频 | 百万计费 Token | ¥56/百万计费 Token |
| 1080P | 百万计费 Token | ¥102/百万计费 Token |
| 1080P · 含参考视频 | 百万计费 Token | ¥62/百万计费 Token |
| 4K · 含参考视频 | 百万计费 Token | ¥32/百万计费 Token |
| 4K | 百万计费 Token | ¥52/百万计费 Token |
响应与结果
POST或GET尚未完成时返回202与真实任务状态,示意结构如下。视频使用JSON异步任务协议,按返回的poll_url查询结果。
{
"id": "<原任务号>",
"object": "media.task",
"protocol": "unicomp.media.v1",
"model": "doubao-seedance-2-0-260128",
"status": "queued",
"poll_url": "/v1/videos/<原任务号>",
"review_phase": "submitted"
}使用相同原Key GET /v1/videos/<原任务号> 查询。queued/running表示处理中;reviewing表示结果处理中;submission_unknown等待核对,不能重复生成;succeeded且output_approved才交付。余额不足待结算时仍可显示 reviewing 与 output_approved;以 billing.settlement_pending=true 和 error.code=MEDIA_BALANCE_REQUIRED 识别待结算状态,补足余额后沿原任务结算,不重新生成。
{
"id": "<原任务号>",
"status": "reviewing",
"review_phase": "output_approved",
"billing": {
"currency": "CNY_MICRO",
"quoted_amount": "<原报价整数微元>",
"charged_amount": 0,
"reserved_amount": "<原预留整数微元>",
"settlement_pending": true,
"actual_amount": "<实际所需整数微元>"
},
"error": {
"code": "MEDIA_BALANCE_REQUIRED",
"message": "余额不足,请补足余额后结算原任务"
}
}{
"id": "<原任务号>",
"status": "succeeded",
"created": 1800000000,
"review_phase": "output_approved",
"data": [
{
"url": "/v1/videos/<原任务号>/content?asset_id=<原作品号>",
"asset_id": "<原作品号>"
}
]
}data逐件列出批次作品。content须携带原Bearer,支持GET/HEAD/Range;未交付、跨Key/账号、撤销Key、错误asset_id均不能读取。不要将私有URL当无需鉴权的分享链接。