概览
SeeGen AI 是一个统一的生成式 API:用同一套一致的端点即可调用多款领先的 AI 视频与图像模型。通过 model 参数选择模型 —— 所有模型的身份验证、任务提交、状态轮询和 webhook 用法完全一致。
当前可用模型:
- 视频 —— Seedance 2.0 Pro (
sd2)、Seedance 2.0 Fast (sd2-fast)、Seedance 2.0 Mini (sd2-mini)、Seedance 2.5 (sd2.5)、HappyHorse 1.1 (happyhorse) - 图像 —— GPT Image 2 (
gpt-image-2)、Nano Banana 2 (nano-banana-2)、Nano Banana Pro (nano-banana-pro)、Seedream 5.0 Lite (seedream-v5.0-lite)、Seedream 5.0 Pro (seedream-v5.0-pro)
基础 URL: https://seegen.ai/api/v1
模型: 将上述任一别名传入 model 字段即可(例如 sd2、gpt-image-2)。
为什么选择 SeeGen AI?
选择 SeeGen AI 的更多理由:
- 不止 Seedance 2.0:还有 HappyHorse 1.1、Nano Banana、ChatGPT Image 等更多模型。
- 无需订阅 —— 按量付费
- 第一时间接入最新模型
- 全天候客户支持
- 支持官方模型相关咨询
- 面向开发者的控制台访问权限
- 企业与个人用户均可使用
价格
API Pack
125,000 积分 ($0.004/积分)
约 781 个 5 秒视频
API-XL Pack
500,000 积分 ($0.004/积分)
约 3,125 个 5 秒视频
Seedance 2.0 / Fast / Mini / 2.5 —— 费用计算
设 out = 输出秒数,in = 各输入视频 ⌈时长⌉ 之和(每个视频向上取整,最小值为 out × 2/3)。Seedance 2.5 的计算方式与 Seedance 2.0 相同。在套用任务公式前,各对应模型的基础费率会先乘以 1.5 并四舍五入(1080P 在 sd2.5 上为原生输出,费率为其 720P 的 2.5 倍);与模型无关的超分辨率附加费仍为 2K / 4K 每输出秒 +30 / +40 积分(仅 sd2-fast / sd2-mini 的 1080P 为 +20)。
| 无视频输入 | 包含视频输入 | |
|---|---|---|
| sd2.5: 480P | 30 × out | 23 × (out + in) |
| sd2.5: 720P | 60 × out | 45 × (out + in) |
| sd2.5: 1080P (原生) | 150 × out | 113 × (out + in) |
| sd2.5: 2K | (60 + 30) × out | 45 × (out + in) + 30 × out |
| sd2.5: 4K | (60 + 40) × out | 45 × (out + in) + 40 × out |
| sd2-pro: 480P | 20 × out | 15 × (out + in) |
| sd2-pro: 720P | 40 × out | 30 × (out + in) |
| sd2-pro: 1080P (原生) | 100 × out | 75 × (out + in) |
| sd2-pro: 2K | (40 + 30) × out | 30 × (out + in) + 30 × out |
| sd2-pro: 4K (原生) | 200 × out | 150 × (out + in) |
| sd2-fast: 480P | 16 × out | 12 × (out + in) |
| sd2-fast: 720P | 32 × out | 24 × (out + in) |
| sd2-fast: 1080P | (32 + 20) × out | 24 × (out + in) + 20 × out |
| sd2-fast: 2K | (32 + 30) × out | 24 × (out + in) + 30 × out |
| sd2-fast: 4K | (32 + 40) × out | 24 × (out + in) + 40 × out |
| sd2-mini: 480P | 10 × out | 7.5 × (out + in) |
| sd2-mini: 720P | 20 × out | 15 × (out + in) |
| sd2-mini: 1080P | (20 + 20) × out | 15 × (out + in) + 20 × out |
| sd2-mini: 2K | (20 + 30) × out | 15 × (out + in) + 30 × out |
| sd2-mini: 4K | (20 + 40) × out | 15 × (out + in) + 40 × out |
注意: sd2-pro 的 1080P 和 4K 为官方原生输出(4K = 720P 费率的 5 倍);sd2-pro 的 2K 以及所有 sd2-fast / sd2-mini 的 1080P/2K/4K 均由 SeeGen AI 进行超分辨率处理。sd2.5 在 480P/720P/1080P 下为原生生成(1080P = 720P 费率的 2.5 倍,无超分辨率附加费),2K/4K 则自动使用超分辨率。可通过 outputResolution: "4k" 请求任意档位(如 "2k" / "4k";网关会自动选择原生或超分辨率 —— 二者仅价格和 Native 标签不同)。sd2-mini 的定价为 sd2-pro 的 50%,是成本最低的档位。Seedance 2.5 沿用 Seedance 2.0 的单视频时长取整、最小输入时长下限和超分辨率计算方式。在任务计算前,各对应模型的基础费率会先乘以 1.5 并四舍五入(例如带视频的 1080P:75 × 1.5 → 113)。与模型无关的 2K / 4K 超分辨率附加费保持为每输出秒 +30 / +40 积分。若超分辨率处理失败,已完成的任务将返回 720P 兜底结果,且不会部分退还积分。
- sd2.5 480P,4 秒输出,无视频输入:120 积分
- sd2.5 720P,5 秒输出,无视频输入:300 积分
- sd2.5 720P,5 秒输出 + 3 秒输入视频(最小输入时长 4 秒):405 积分
- sd2.5 1080P 原生,5 秒输出,无视频输入:750 积分
- sd2.5 1080P 原生,5 秒输出 + 5 秒输入视频:1,130 积分
happyhorse — 每秒积分
| 输出 | 积分 / 秒 | 5秒示例 |
|---|---|---|
| 720P | 32 | 160 |
| 1080P | 60 | 300 |
| 2K | 32 + 30 | 310 |
| 4K | 32 + 40 | 360 |
注意: 2K / 4K 超分辨率是在 720P 基础价格之上叠加的(不会与原生 1080P 叠加计费)。t2v / i2v / r2v 共用相同的每秒费率——参考图不计费。
🎉 限时优惠:所有图片生成立减 33%——以下图片价格均已是优惠后价格。
gpt-image-2 — 每张图片积分
| 分辨率 | 中等质量 | 高质量 |
|---|---|---|
| 1k | 1015 | 4770 |
| 2k (默认) | 2335 | 84125 |
| 4k | 4060 | 154230 |
每个任务生成 1 张图片。提交 N 个任务即可获得 N 个变体。失败任务将自动退还积分。
nano-banana-2 与 nano-banana-pro — 每张图片积分
| 分辨率 | nano-banana-2 | nano-banana-pro |
|---|---|---|
| 1k | 2030 | 4060 |
| 2k (默认) | 3045 | 4060 |
| 4k | 4770 | 74110 |
每个任务生成 1 张图片。提交 N 个任务即可获得 N 个变体。失败任务将自动退还积分。
Seedream 5.0 — 每张图片积分
| 模型 / 档位 | 积分 |
|---|---|
| Lite 2k / 4k(统一价) | 710 |
| Pro 1k (默认) | 1015 |
| Pro 2k | 2030 |
每个任务生成 1 张图片。提交 N 个任务即可获得 N 个变体。失败任务将自动退还积分。 参考图不单独计费。
查询余额:GET /api/v1/account/credits
身份验证
所有 API 请求都需要在 Authorization 请求头中携带 Bearer token。你可以在账户设置中创建和管理 API 密钥。
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://seegen.ai/api/v1/account/credits重要提示: API 密钥仅在创建时显示一次,请妥善保存。每个账户最多可创建 10 个 API 密钥。
快速开始
两步生成视频:创建任务,然后轮询获取结果。
# 1. Create a text-to-video task
TASK_ID=$(curl -s -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"prompt": "A golden retriever running on the beach at sunset",
"duration": "5s",
"resolution": "1280x720"
}
}' \
https://seegen.ai/api/v1/jobs/createTask | jq -r '.taskId')
echo "Task created: $TASK_ID"
# 2. Poll for result
while true; do
RESULT=$(curl -s -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/jobs/queryTask?taskId=$TASK_ID")
STATUS=$(echo $RESULT | jq -r '.status')
echo "Status: $STATUS"
if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ]; then
echo $RESULT | jq .
break
fi
sleep 5
done接口
/api/v1/jobs/createTask创建新的视频生成任务
/api/v1/jobs/queryTask查询任务状态和结果
/api/v1/account/credits查询积分余额
/api/v1/assets/upload上传素材(图片/视频/音频)以供审核
/api/v1/assets/status查询素材审核状态
/api/v1/assets/list列出已上传的素材
/api/v1/upscale/create提交独立的视频超分辨率任务(720p / 1080p / 2K / 4K)
/api/v1/upscale/query轮询独立超分辨率任务的状态和结果
选择模型(视频)
有两大模型系列可生成视频。请根据模式和价格进行选择;结合价格部分估算费用。
| 模型 | T2V | I2V | 首尾帧 | 多参考 | R2V | 原生 1080p | 原生 4K | 音频 | 720p / 5秒 |
|---|---|---|---|---|---|---|---|---|---|
| sd2.5 | ✓ | ✓ | ✓ | ✓ | — | ✓ | 超分 | ✓ | 300 积分 |
| sd2 | ✓ | ✓ | ✓ | ✓ | — | ✓ | ✓ | ✓ | 200 积分 |
| sd2-fast | ✓ | ✓ | ✓ | ✓ | — | 超分 | 超分 | ✓ | 160 积分 |
| sd2-mini | ✓ | ✓ | ✓ | ✓ | — | 超分 | 超分 | ✓ | 100 积分 |
| happyhorse | ✓ | ✓ | — | — | ✓ | ✓ | 超分 | ✓ | 160 积分 |
T2V = 文生视频 · I2V = 图生视频(首帧)· First–Last = 首帧 + 尾帧关键帧 · Multi-Ref = 混合图像/视频/音频参考 · R2V = 1–9 张带角色标记的参考图
Seedance 2.0 / 2.0 Fast / 2.0 Mini / Seedance 2.5
文生视频
根据文本提示词生成视频,无需提供图像。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"prompt": "A futuristic city with flying cars at night, neon lights reflecting on wet streets",
"duration": "5s",
"resolution": "1280x720"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 对要生成视频的文字描述。最多 20000 字符。 |
| duration | string | 否 | 视频时长:"4s" 到 "15s";sd2.5 最长支持 "30s"(默认:"5s") |
| resolution | string | 否 | 通过分辨率指定宽高比。可选值:auto(默认)、720x720、720x960、960x720、1280x720、720x1280、1280x540 |
| outputResolution | string | 否 | 输出分辨率档位:"480p"、"720p"(默认)、"1080p"、"2k" 或 "4k"。各模型的原生分辨率不同:Seedance 2.0 Pro:480p/720p/1080p/4k;Seedance 2.0 Fast & Mini:480p/720p;Seedance 2.5:480p/720p/1080p。更高档位会自动超分。 |
| seed | int | 否 | 可复现性种子:-1 或省略表示随机;0–2147483647 表示固定值。 |
| generateAudio | boolean | 否 | 是否合成同步音轨。默认为 true;传入 false 则生成无声视频。 |
图生视频
将静态图像转化为动态视频。提供一个图像 URL 作为起始帧。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"urls": ["https://example.com/photo.jpg"], // or "asset://asset-20260326-abc123"
"prompt": "The woman slowly turns her head and smiles",
"duration": "5s"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| urls | string[] | 是 | 包含一个图像 URL(源帧)的数组。支持 HTTP URL 和资源引用(例如 "asset://asset-20260326-abc123") |
| prompt | string | 否 | 对期望动作效果的文字描述 |
| duration | string | 否 | 视频时长:"4s" 到 "15s";sd2.5 最长支持 "30s"(默认:"5s") |
| outputResolution | string | 否 | 输出分辨率档位:"480p"、"720p"(默认)、"1080p"、"2k" 或 "4k"。各模型的原生分辨率不同:Seedance 2.0 Pro:480p/720p/1080p/4k;Seedance 2.0 Fast & Mini:480p/720p;Seedance 2.5:480p/720p/1080p。更高档位会自动超分。 |
| seed | int | 否 | 可复现性种子:-1 或省略表示随机;0–2147483647 表示固定值。 |
| generateAudio | boolean | 否 | 是否合成同步音轨。默认为 true;传入 false 则生成无声视频。 |
首尾帧
定义起始帧和结束帧,模型会生成两者之间的过渡动画。使用 videoInputMode: "keyframe"。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"prompt": "Smooth camera transition from day to night",
"duration": "5s",
"videoInputMode": "keyframe"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| urls | string[] | 是 | 包含恰好 2 个图像 URL 的数组:[首帧, 尾帧]。支持 HTTP URL 和资源引用(例如 "asset://asset-20260326-abc123") |
| videoInputMode | string | 是 | 必须为 "keyframe" |
| prompt | string | 否 | 指导过渡效果的文字描述 |
| duration | string | 否 | 视频时长:"4s" 到 "15s";sd2.5 最长支持 "30s"(默认:"5s") |
| outputResolution | string | 否 | 输出分辨率档位:"480p"、"720p"(默认)、"1080p"、"2k" 或 "4k"。各模型的原生分辨率不同:Seedance 2.0 Pro:480p/720p/1080p/4k;Seedance 2.0 Fast & Mini:480p/720p;Seedance 2.5:480p/720p/1080p。更高档位会自动超分。 |
| seed | int | 否 | 可复现性种子:-1 或省略表示随机;0–2147483647 表示固定值。 |
| generateAudio | boolean | 否 | 是否合成同步音轨。默认为 true;传入 false 则生成无声视频。 |
多参考
使用多个参考图像、视频和音频文件来指导生成。使用 videoInputMode: "reference"。对于 sd2.5,这是默认的参考子任务;如需编辑或续写已有视频,请参见下方的 Video Edit & Extend。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"urls": [
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg"
],
"videoUrls": ["asset://asset-motion-video"],
"audioUrls": ["https://example.com/audio.mp3"],
"prompt": "Character walks through a garden",
"duration": "5s",
"videoInputMode": "reference",
"resolution": "1280x720"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| urls | string[] | 否 | 参考图像 URL(最多 9 张)。支持 HTTP URL 和资源引用(例如 "asset://asset-20260326-abc123") |
| videoUrls | string[] | 否 | 参考视频的 asset:// URI —— 需先通过 /api/v1/assets/upload 上传;不接受外部 URL。sd2:最多 3 个视频,每个 ≤15 秒。sd2.5:最多 10 个视频,每个 2–30 秒且 ≤200MB,参考总时长 ≤30 秒,支持 480p–4K 输入。 |
| audioUrls | string[] | 否 | 参考音频输入。sd2 / sd2-fast / sd2-mini:最多 3 个音频文件,每个 2–15 秒,总时长 ≤15 秒——这些模型上音频不能作为唯一参考(需至少添加一张图像或一个视频)。sd2.5:最多 10 个文件,每个 ≤15MB 且 2–30 秒,总时长 ≤30 秒,且支持纯音频输入。 |
| videoInputMode | string | 是 | 必须为 "reference" |
| prompt | string | 否 | 文字描述 |
| duration | string | 否 | 视频时长:"4s" 到 "15s";sd2.5 最长支持 "30s"(默认:"5s") |
| resolution | string | 是 | 参考模式下必填。可选值:720x720、720x960、960x720、1280x720、720x1280、1280x540 |
| outputResolution | string | 否 | 输出分辨率档位:"480p"、"720p"(默认)、"1080p"、"2k" 或 "4k"。各模型的原生分辨率不同:Seedance 2.0 Pro:480p/720p/1080p/4k;Seedance 2.0 Fast & Mini:480p/720p;Seedance 2.5:480p/720p/1080p。更高档位会自动超分。 |
| seed | int | 否 | 可复现性种子:-1 或省略表示随机;0–2147483647 表示固定值。 |
| generateAudio | boolean | 否 | 是否合成同步音轨。默认为 true;传入 false 则生成无声视频。 |
参考约束
- 最多 9 张图像、3 个视频、3 个音频文件
- 所有类型合计最多 12 个文件
- 每个视频/音频文件必须 ≤ 15 秒
- 图像最短边至少为 400px
- sd2.5:最多 30 张图片、10 个视频、10 个音频文件,总计 50 个;视频与音频总时长均 ≤ 30 秒
视频编辑与延展
sd2.5 将基于参考的生成拆分为三个子任务。省略 mode 表示普通参考生成,设置 mode: "edit" 可编辑现有视频,设置 mode: "extend" 可延续视频。两者都需要在 videoUrls 中至少包含一个视频,且始终输出与源视频相同的宽高比。
将要操作的视频放在 videoUrls 的第一位,并在提示词中将其称为“Video 1”。edit 会强制输出时长匹配该第一个(源)视频,其时长必须为 4–30 秒,因此你发送的任何 duration 都会被忽略;计费以源视频时长作为输出时长,并加上所有参考视频作为输入。extend 接受按顺序拼接的 1–3 个片段,你请求的 duration 是本次生成的输出时长(与源时长无关)——按普通参考生成计费。
2.0 系列模型(sd2 / sd2-fast / sd2-mini)也支持 mode: "edit" 和 mode: "extend":它们会根据你的提示词推断操作(需明确描述编辑或延续内容),宽高比跟随源视频,duration 仍由你自行控制并按普通方式计费。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2.5",
"inputs": {
"mode": "edit",
"videoUrls": ["asset://asset-source-video"],
"urls": ["https://example.com/annotation-at-1.2s.png"],
"source_frame_timestamps_ms": [1200],
"prompt": "Replace the marked object with a red umbrella",
"outputResolution": "720p"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| mode | string | 否 | “edit”或“extend”。普通参考生成时省略。 |
| videoUrls | string[] | 是 | 至少一个视频;第一个为源视频(“Video 1”)——编辑输出时长和计费均以它为准。之后的视频为额外参考(edit)或按顺序拼接的更多片段(extend,最多 3 个)。 |
| urls | string[] | 否 | 可选的标注/参考图片。 |
| source_frame_timestamps_ms | number[] | 否 | 仅限 mode 为“edit”时使用。urls 中每张图片对应一个非负的源视频毫秒时间戳。 |
| outputResolution | string | 否 | 输出分辨率档位:"480p"、"720p"(默认)、"1080p"、"2k" 或 "4k"。各模型的原生分辨率不同:Seedance 2.0 Pro:480p/720p/1080p/4k;Seedance 2.0 Fast & Mini:480p/720p;Seedance 2.5:480p/720p/1080p。更高档位会自动超分。 |
Seedance 参数参考
sd2 / sd2-fast / sd2-mini / sd2.5 模型全部 inputs 参数的完整参考。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 否 | 文字描述(文生视频必填,其他模式可选)。最多 20000 字符。 |
| urls | string[] | 否 | 图片 URL。同时支持 HTTP URL 和素材引用(例如 “asset://asset-20260326-abc123”)。内部映射为 uploadedUrls。 |
| videoUrls | string[] | 否 | 视频参考 asset:// URI(仅参考模式)。必须先通过 /api/v1/assets/upload 上传——外部 URL 将被拒绝。 |
| audioUrls | string[] | 否 | 音频参考 URL(仅参考模式)。sd2.5 支持纯音频输入;sd2 / sd2-fast / sd2-mini 需要在音频之外至少附带一张图片或一个视频。 |
| duration | string | 否 | 通常为 “4s” 至 “15s”;sd2.5 最长支持 “30s”。默认值:“5s” |
| resolution | string | 否 | 宽高比:auto(默认)| 720x720 | 720x960 | 960x720 | 1280x720 | 720x1280 | 1280x540 |
| outputResolution | string | 否 | 输出分辨率档位:"480p"、"720p"(默认)、"1080p"、"2k" 或 "4k"。各模型的原生分辨率不同:Seedance 2.0 Pro:480p/720p/1080p/4k;Seedance 2.0 Fast & Mini:480p/720p;Seedance 2.5:480p/720p/1080p。更高档位会自动超分。 |
| videoInputMode | string | 否 | “keyframe”(默认)或 “reference” |
| mode | string | 否 | 参考模式子任务(所有 Seedance 模型):省略表示普通参考生成,“edit”表示编辑 videoUrls 中的第一个视频,“extend”表示延续 1-3 个片段。详见视频编辑与延展。 |
| source_frame_timestamps_ms | number[] | 否 | 仅限 sd2.5 视频编辑:每张标注图片对应一个非负的毫秒时间戳。 |
| seed | int | 否 | 用于结果复现的随机种子。填 -1 或省略表示服务器随机。相同种子加相同输入会得到高度接近的结果(因 GPU 的非确定性,并非逐位相同)。取值范围:-1 至 2147483647。 |
| generateAudio | boolean | 否 | 是否合成与视频同步的音轨(语音、音效、背景音乐)。默认 true。设为 false 可生成无声视频——速度稍快,适合计划另行配音的场景。 |
| bitrateMode | string | 否 | 同一分辨率下的输出码率档位:“standard”(默认)或 “high”。“high”能保留更多细节并减少色带/块状瑕疵,文件体积约为 3-5 倍——不会改变分辨率或价格。 |
| upscaleResolution | string | 否 | (已弃用)旧版拆分字段,仍保留以兼容旧版本。新接入应使用 outputResolution,现已可直接传入 “2k” / “4k”。若两者同时传入,upscaleResolution 优先——但在原生支持 1080p 的模型上(Seedance2 Pro / Seedance 2.5),upscaleResolution:“1080p” 会解析为原生 1080p(按原生费率计费)。 |
顶层请求字段:model(必填)、inputs(必填)、callBackUrl(可选 webhook URL)。
素材
素材是图片、视频和音频文件,在用于视频生成任务前需经过审核流程。上传素材、等待其变为 ACTIVE 状态,然后在任务中使用其 asset:// URL。
注意: 真人图片和视频素材需要经过官方审核,通常在数秒内完成。审核通过后即可直接用作参考。未经审核可能导致生成失败。
上传素材
有两种上传方式:直接发送本地文件(multipart/form-data),或提交可公开访问的 HTTPS URL。无论哪种方式,素材都会自动处理和审核。
方式 A — 直接上传文件(multipart/form-data)
发送本地文件,无需图床。媒体类型通过文件字节检测(不信任文件名后缀)。允许类型:图片(jpg/png/webp/gif/bmp/tiff/heic)、视频(mp4/mov)、音频(wav/mp3)。每个文件最大 50MB(图片 ≤30MB,视频 ≤50MB,音频 ≤15MB)。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-F "file=@/path/to/photo.jpg" \
-F "name=my-photo" \
https://seegen.ai/api/v1/assets/upload| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| file | file | 是 | 本地文件(multipart 表单字段)。媒体类型通过内容检测。 |
| name | string | 否 | 素材名称(最多 64 个字符) |
方式 B — 通过 URL(application/json)
适用于文件已托管在可公开访问的 HTTPS URL 上的情况。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/photo.jpg",
"type": "IMAGE",
"name": "my-photo"
}' \
https://seegen.ai/api/v1/assets/upload| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| url | string | 是 | 要上传文件的公开可访问 HTTPS URL |
| type | string | 是 | "IMAGE"、"AUDIO" 或 "VIDEO" |
| name | string | 否 | 素材名称(最多 64 个字符) |
上传响应
{
"assetId": 123,
"volcAssetId": "asset-20260326-abc123",
"type": "IMAGE",
"status": "PROCESSING",
"failReason": null,
"url": "https://example.com/photo.jpg",
"name": "my-photo",
"createdAt": 1711234567890
}查询素材状态
轮询素材的审核状态。当状态为 PROCESSING 时,该接口会自动检查审核系统的最新结果。
# Query by asset ID (numeric)
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/status?assetId=123"
# Query by volcAssetId (string)
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/status?assetId=asset-20260326-abc123"素材状态值
PROCESSING— 审核中,尚不可用ACTIVE— 审核通过,可用于任务FAILED— 审核失败,请查看 failReason
获取素材列表
列出你已上传的素材,可按类型和状态筛选,支持基于游标的分页。
# List all assets
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/list"
# Filter by type and status
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/list?type=IMAGE&status=ACTIVE&limit=10"
# Paginate with cursor
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/list?cursor=100&limit=20"| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| type | string | 否 | 按类型筛选:"IMAGE"、"AUDIO" 或 "VIDEO" |
| status | string | 否 | 按状态筛选:"NONE"、"PROCESSING"、"ACTIVE" 或 "FAILED" |
| cursor | number | 否 | 分页游标(使用上一次响应中的 nextCursor) |
| limit | number | 否 | 每页条数,1-50(默认:20) |
列表响应
{
"items": [
{
"assetId": 123,
"volcAssetId": "asset-20260326-abc123",
"type": "IMAGE",
"status": "ACTIVE",
"failReason": null,
"url": "https://example.com/photo.jpg",
"name": "my-photo",
"width": 1920,
"height": 1080,
"size": 245000,
"duration": null,
"createdAt": 1711234567890
}
],
"nextCursor": 122
}在任务中使用素材
素材状态变为 ACTIVE 后,即可在任务 URL 中使用其 volcAssetId 配合 asset:// 协议:
{
"model": "sd2",
"inputs": {
"urls": ["asset://asset-20260326-abc123"],
"prompt": "The person slowly looks up and smiles",
"duration": "5s"
}
}HappyHorse 1.1(阿里巴巴)
来自阿里巴巴 DashScope 的备选视频生成模型。支持三种模式:文生视频、首帧图生视频,以及参考图生视频(每次提示词可融合 1–9 张参考图;在提示词中用 character1、character2、… 指代主体)。HappyHorse 1.1 不支持尾帧、参考视频或参考音频。模型名称:happyhorse。
无需素材审核 —— 你可以直接使用公开的 HTTPS 图片 URL,或传入素材库中的 asset:// 引用(会自动解析回原始 R2 URL)。
文生视频
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse",
"inputs": {
"prompt": "A panda DJ at a beach party, smoky sunset",
"duration": "5s",
"outputResolution": "720p",
"ratio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTask图生视频(首帧)
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse",
"inputs": {
"urls": ["https://example.com/panda.jpg"],
"prompt": "The panda blinks and smiles",
"duration": "5s",
"outputResolution": "1080p"
}
}' \
https://seegen.ai/api/v1/jobs/createTask参考图生视频(1–9 张参考图)
传入 videoWorkflowTab: "multi-reference" 并附上 1–9 张参考图 URL,即可将多个主体融合到同一个输出中。在提示词中用 character1、character2、… 指代每张图(与 urls 顺序对应)。画面比例由 ratio 字段控制(没有首帧可供推断)。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse",
"inputs": {
"videoWorkflowTab": "multi-reference",
"urls": [
"https://example.com/character.jpg",
"https://example.com/folding-fan.jpg",
"https://example.com/earrings.jpg"
],
"prompt": "A woman in red character1 opening folding fan character2, with tassel earrings character3 swinging",
"duration": "5s",
"outputResolution": "720p",
"ratio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskHappyHorse 参数参考
happyhorse 模型全部 inputs 参数的完整参考。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 否 | 文本描述。文生视频和参考图生视频为必填;图生视频为选填。非中日韩字符最多 5000 个,或中日韩字符最多 2500 个(超出部分上游会自动截断)。在 r2v 中用 character1/character2/… 指代第 N 张参考图。 |
| urls | string[] | 否 | t2v:省略。i2v:恰好 1 个 URL(作为首帧使用)。r2v:1–9 个 URL。支持公开 HTTPS URL 和素材引用(如 "asset://asset-20260326-abc123")。 |
| videoWorkflowTab | string | 否 | 设为 "multi-reference" 以启用参考图生视频模式(必须搭配 1 个及以上 URL)。文生视频/图生视频时省略。 |
| duration | string | 否 | "3s" 到 "15s"(默认 "5s")。 |
| outputResolution | string | 否 | "720p"(默认)或 "1080p"。 |
| ratio | string | 否 | "16:9" / "9:16" / "1:1" / "4:3" / "3:4"。用于文生视频和参考图生视频 —— 图生视频的画面比例由首帧推断。 |
| seed | int | 否 | 0 到 2147483647。留空则使用随机种子。 |
图片要求(i2v / r2v)
- 短边 ≥ 300px
- 宽高比介于 1:2.5 到 2.5:1 之间
- 格式:JPEG、JPG、PNG、BMP、WEBP
- 单张图片最大 10MB(r2v:1–9 张输入图片均需满足)
选择模型(图片)
图像模型接收一个 prompt(可选附带参考图)并为每个任务返回一张图片。每次请求按所选模型的档位计费(Seedream Lite 为固定费率)。失败的任务会自动退款。没有批量参数——如需生成多张变体,请为每张图片单独调用一次 createTask。
| 模型 | T2I | I2I(编辑) | 多参考 | 最大分辨率 | 2k / medium |
|---|---|---|---|---|---|
| gpt-image-2 | ✓ | ✓ | 最多 10 张 | 4k | 查看定价 |
| nano-banana-2 | ✓ | ✓ | 最多 10 张 | 4k | 查看定价 |
| nano-banana-pro | ✓ | ✓ | 最多 10 张 | 4k | 查看定价 |
| seedream-v5.0-lite | ✓ | ✓ | 最多 10 张 | 4k | 固定费率 |
| seedream-v5.0-pro | ✓ | ✓ | 最多 10 张 | 2k | 查看定价 |
GPT Image 2
OpenAI 的 GPT Image 2 模型,用于高质量的文生图和图生图编辑。同一套工作流同时支持两种模式——传入 urls 即可自动切换到编辑模式。输出内容会以你请求的格式(PNG / JPEG / WEBP)通过 R2 交付。模型名称:gpt-image-2。
文生图
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"inputs": {
"prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
"quality": "medium",
"resolution": "2k",
"aspectRatio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTask图生图(编辑)
通过 urls 传入 1–10 张参考图。模型会将它们作为视觉上下文,用于 prompt 中描述的编辑。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"inputs": {
"urls": ["https://example.com/portrait.jpg"],
"prompt": "Restyle as oil painting",
"quality": "medium",
"resolution": "1k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskGPT Image 2 参数参考
gpt-image-2 模型全部 inputs 参数的完整参考。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 要生成的图像的文字描述;若提供了 urls,则为要应用的编辑说明。 |
| urls | string[] | 否 | 图生图(编辑)模式的参考图 URL(1–10 张)。文生图模式下省略此项。仅接受公开的 HTTPS URL。 |
| quality | string | 否 | "medium" / "high"。默认值:"medium"。积分消耗按档位递增(详见定价)。 |
| resolution | string | 否 | "1k" / "2k" / "4k"。默认值:"2k"。积分消耗按档位递增(详见定价)。 |
| aspectRatio | string | 否 | "1:1" / "16:9" / "9:16" / "4:3" / "3:4"。默认值:"1:1"。 |
| outputFormat | string | 否 | "png" / "jpeg" / "webp"。默认值:"png"。 |
输入图像要求(图生图模式)
- 每个任务最多 10 张参考图
- 单张图片最大文件大小 50 MB
- 最短边 ≥ 256px
- 宽高比需介于 1:3 与 3:1 之间
- 支持格式:JPEG、JPG、PNG、WEBP
每张图片的积分消耗随分辨率和质量档位变化——完整对照表参见 定价 部分。
Nano Banana 2
Nano Banana 2 是一款高保真图像模型,宽高比覆盖范围比 gpt-image-2 更广——新增竖屏/横屏预设(3:2、2:3、4:5、5:4)以及电影感的 21:9。同一套工作流同时支持两种模式——传入 urls 即可自动切换到编辑模式。模型名称:nano-banana-2。
文生图
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"inputs": {
"prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
"resolution": "2k",
"aspectRatio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTask图生图(编辑)
通过 urls 传入 1–10 张参考图。模型会将它们作为视觉上下文,用于 prompt 中描述的编辑。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"inputs": {
"urls": ["https://example.com/portrait.jpg"],
"prompt": "Restyle as oil painting",
"resolution": "2k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskNano Banana 2 参数参考
nano-banana-2 模型全部 inputs 参数的完整参考。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 要生成的图像的文字描述;若提供了 urls,则为要应用的编辑说明。 |
| urls | string[] | 否 | 图生图(编辑)模式的参考图 URL(1–10 张)。文生图模式下省略此项。仅接受公开的 HTTPS URL。 |
| resolution | string | 否 | "1k" / "2k" / "4k"。默认值:"2k"。积分消耗按档位递增(详见定价)。 |
| aspectRatio | string | 否 | "1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9"。默认值:"1:1"。 |
输入图像要求(图生图模式)
- 每个任务最多 10 张参考图
- 单张图片最大文件大小 50 MB
- 最短边 ≥ 256px
- 宽高比需介于 1:3 与 3:1 之间
- 支持格式:JPEG、JPG、PNG、WEBP
每张图片的积分消耗随分辨率变化——完整对照表参见 定价 部分。
Nano Banana Pro
Nano Banana Pro 是一款高保真图像模型,宽高比覆盖范围比 gpt-image-2 更广——新增竖屏/横屏预设(3:2、2:3、4:5、5:4)以及电影感的 21:9。同一套工作流同时支持两种模式——传入 urls 即可自动切换到编辑模式。模型名称:nano-banana-pro。
文生图
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"inputs": {
"prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
"resolution": "2k",
"aspectRatio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTask图生图(编辑)
通过 urls 传入 1–10 张参考图。模型会将它们作为视觉上下文,用于 prompt 中描述的编辑。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"inputs": {
"urls": ["https://example.com/portrait.jpg"],
"prompt": "Restyle as oil painting",
"resolution": "2k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskNano Banana Pro 参数参考
nano-banana-pro 模型全部 inputs 参数的完整参考。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 要生成的图像的文字描述;若提供了 urls,则为要应用的编辑说明。 |
| urls | string[] | 否 | 图生图(编辑)模式的参考图 URL(1–10 张)。文生图模式下省略此项。仅接受公开的 HTTPS URL。 |
| resolution | string | 否 | "1k" / "2k" / "4k"。默认值:"2k"。积分消耗按档位递增(详见定价)。 |
| aspectRatio | string | 否 | "1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9"。默认值:"1:1"。 |
输入图像要求(图生图模式)
- 每个任务最多 10 张参考图
- 单张图片最大文件大小 50 MB
- 最短边 ≥ 256px
- 宽高比需介于 1:3 与 3:1 之间
- 支持格式:JPEG、JPG、PNG、WEBP
每张图片的积分消耗随分辨率变化——完整对照表参见 定价 部分。
Seedream 5.0 Lite
快速文生图与图生图,支持 2K 或 4K 分辨率及 15 种宽高比。模型名称:seedream-v5.0-lite。
文生图
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-lite",
"inputs": {
"prompt": "A cinematic product photograph, soft studio light",
"resolution": "2k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTask图生图(编辑)
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-lite",
"inputs": {
"prompt": "Restyle the references as a premium fashion campaign",
"urls": ["https://example.com/reference.png"],
"resolution": "4k",
"aspectRatio": "3:4"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskSeedream 5.0 Lite 参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 图像描述或编辑指令。 |
| urls | string[] | 否 | 1–10 个公开的 HTTPS 参考图 URL。文生图模式下省略此项。 |
| resolution | string | 否 | "2k" 或 "4k"。默认值:"2k"。 |
| aspectRatio | string | 否 | "1:1"、"1:2"、"2:1"、"1:3"、"3:1"、"2:3"、"3:2"、"3:4"、"4:3"、"4:5"、"5:4"、"9:16"、"16:9"、"9:21" 或 "21:9"。 |
Seedream 5.0 Pro
高保真生成与编辑,支持 1K 或 2K 分辨率。模型名称:seedream-v5.0-pro。
文生图
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-pro",
"inputs": {
"prompt": "Editorial portrait with dramatic rim lighting",
"resolution": "2k",
"aspectRatio": "3:4"
}
}' \
https://seegen.ai/api/v1/jobs/createTask图生图(编辑)
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-pro",
"inputs": {
"prompt": "Turn the reference into a cinematic poster",
"urls": ["https://example.com/reference.png"],
"resolution": "2k",
"aspectRatio": "1:2"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskSeedream 5.0 Pro 参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 图像描述或编辑指令。 |
| urls | string[] | 否 | 1–10 个公开的 HTTPS 参考图 URL。文生图模式下省略此项。 |
| resolution | string | 否 | "1k" 或 "2k"。默认值:"1k"。不支持 4k。 |
| aspectRatio | string | 否 | "1:1"、"1:2"、"2:1"、"1:3"、"3:1"、"2:3"、"3:2"、"3:4"、"4:3"、"4:5"、"5:4"、"9:16"、"16:9"、"9:21" 或 "21:9"。 |
视频超分辨率
创建任务
POST /api/v1/upscale/create
# source.url accepts ANY https video URL — your own CDN, OR a file you first
# uploaded to us via /api/v1/assets/upload (pass the r2Url it returns). No need
# to declare which: we detect it. External URLs are validated; our own are trusted.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": { "type": "url", "url": "https://your-cdn.com/video.mp4" },
"targetResolution": "2k",
"callBackUrl": "https://your-server.com/webhook"
}' \
https://seegen.ai/api/v1/upscale/create| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| source.type | string | 是 | 任意来源使用 "url"。("uploadId" 是为向后兼容保留的旧版别名。) |
| source.url | string | 否 | 配合 type="url" 使用。任意 https 视频链接——可以是你自己的 CDN,也可以是 /api/v1/assets/upload 返回的 r2Url。对于外部 URL,http 及私有/内网 IP 会被拒绝(SSRF 防护);我们自有素材主机上的 URL 会跳过该检查。 |
| source.r2Url | string | 否 | 旧版字段——仅配合 type="uploadId" 使用(向后兼容)。新接入应使用 type="url"。 |
| targetResolution | string | 是 | "720p"、"1080p"、"2k" 或 "4k"。必须高于源视频分辨率。 |
| callBackUrl | string | 否 | 任务进入终态(completed 或 failed)时调用一次的 Webhook URL。 |
创建响应
{
"taskId": "n770mo4sh6rpi690ff3gwymx",
"orderId": "ord_2026...",
"status": "validating"
}查询状态
GET /api/v1/upscale/query?taskId=...
状态依次为 validating → processing → completed / failed。
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/upscale/query?taskId=n770mo4sh6rpi690ff3gwymx"已完成响应
{
"taskId": "n770mo4sh6rpi690ff3gwymx",
"status": "completed",
"targetResolution": "2k",
"creditsConsumed": 900,
"result": {
"url": "https://static.seegen.ai/standalone-upscale/results/...mp4",
"probedDurationSeconds": 30,
"probedSourceResolution": "1280x720"
},
"error": null,
"createdAt": "2026-04-29T01:23:45.000Z",
"finishedAt": "2026-04-29T01:35:01.000Z"
}失败响应
{
"taskId": "n770mo4sh6rpi690ff3gwymx",
"status": "failed",
"creditsConsumed": null,
"result": null,
"error": {
"code": "SOURCE_RESOLUTION_TOO_HIGH",
"message": "Source 3840x2160 is not below target 4k"
}
}限制
- 来源:https 链接或你此前上传的 R2 URL
- 时长最长 600 秒(不足 5 秒的片段按 5 秒计费)
- 文件大小 ≤ 200 MB
- 格式:MP4 / MOV / WebM
- 源分辨率必须低于目标分辨率
价格
- 720P:17 积分/秒(5 秒 = 85,30 秒 = 510)
- 1080P:25 积分/秒(5 秒 = 125,30 秒 = 750)
- 2K:38 积分/秒(5 秒 = 190,30 秒 = 1140)
- 4K:50 积分/秒(5 秒 = 250,30 秒 = 1500)
- 最低计费 5 秒;失败会自动退还积分
错误代码
以下是可以据此采取行动的常见错误。其他失败会返回含义清晰的 message 字段——在假定错误码属于以下之一前,请先阅读该字段。
| 代码 | 含义 |
|---|---|
| INVALID_URL | URL 格式错误或不是 https |
| URL_NOT_REACHABLE | 无法获取该 URL——请检查其是否公开可访问 |
| UNSUPPORTED_MEDIA_TYPE | 文件不是视频,或不是 MP4 / MOV / WebM 格式 |
| FILE_TOO_LARGE | 源文件超过 200 MB |
| DURATION_EXCEEDS_LIMIT | 源视频时长超过 600 秒 |
| SOURCE_RESOLUTION_TOO_HIGH | 源分辨率已达到或超过目标分辨率——请选择更高的目标分辨率 |
| INSUFFICIENT_CREDITS | 积分不足——请充值后重试 |
Webhook 回调
除了轮询之外,你也可以提供 callBackUrl,在任务完成或失败时自动接收结果。
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"callBackUrl": "https://your-server.com/webhook/callback",
"inputs": {
"prompt": "A cat playing piano",
"duration": "5s"
}
}' \
https://seegen.ai/api/v1/jobs/createTask回调负载
任务完成时,我们会向你的 URL 发送一个 POST 请求,格式与 queryTask 响应相同:
// POST to your callBackUrl
{
"taskId": "task_abc123",
"model": "sd2",
"status": "COMPLETED",
"creditsUsed": 200,
"output": [
{
"url": "https://static.seegen.ai/videos/result.mp4",
"width": 1280,
"height": 720
}
],
"error": null,
"createTime": 1711234567890,
"completeTime": 1711234612345
}重试策略: 如果你的接口返回非 2xx 状态码,我们会按递增延迟(1 秒、5 秒、30 秒)最多重试 3 次。
响应格式
createTask 响应
// 200 OK
{ "taskId": "task_abc123" }queryTask 响应
{
"taskId": "task_abc123",
"model": "sd2",
"status": "COMPLETED", // "PENDING" | "PROCESSING" | "COMPLETED" | "FAILED"
"creditsUsed": 200,
"output": [ // null when status is not "COMPLETED"
{
"url": "https://static.seegen.ai/videos/result.mp4",
"width": 1280,
"height": 720
}
],
"error": null, // error message when status is "FAILED"
"createTime": 1711234567890,
"completeTime": 1711234612345
}credits 响应
{
"credits": 5000,
"availableCredits": 4800
}错误处理
| 状态码 | 含义 | 处理方式 |
|---|---|---|
| 400 | 参数无效 | 检查错误信息并修正请求 |
| 401 | API 密钥无效或缺失 | 检查 Authorization 请求头格式 |
| 402 | 积分不足 | 前往 seegen.ai 购买更多积分 |
| 403 | 访问被拒绝 | 你只能查询自己的任务 |
| 404 | 任务未找到 | 确认 taskId 是否正确 |
| 429 | 并发限制(3 个任务) | 等待现有任务完成 |
| 500 | 服务器内部错误 | 几秒后重试 |
提交前校验(带错误码的 400)
Seedance 请求会先对照上游契约进行校验,再扣除积分。校验失败时,createTask 会返回 HTTP 400 和 { "message": "...", "code": "..." },且不会创建任务。错误信息会明确说明触发了哪条限制、该如何修正。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| EMPTY_CONTENT | code | 否 | 既未提供 prompt,也没有参考图片 / 视频 / 音频。 |
| AUDIO_ONLY_NOT_SUPPORTED | code | 否 | 在 sd2 / sd2-fast / sd2-mini 上,参考素材仅有音频。请添加图片或视频,或改用 sd2.5(支持仅音频)。 |
| DURATION_OUT_OF_RANGE | code | 否 | duration 不是模型允许范围内的整数(sd2 系列为 "4s"–"15s",sd2.5 为 "4s"–"30s")。 |
| EDIT_SOURCE_VIDEO_REQUIRED / EXTEND_SOURCE_VIDEO_REQUIRED | code | 否 | 请求了 mode "edit" / "extend",但 videoUrls 中没有视频。 |
| EDIT_SOURCE_DURATION_INVALID | code | 否 | sd2.5 Video Edit:请求中某个视频时长短于 4s 或长于 30s(ARK 对 edit 任务中的每个视频都要求 4–30s)。 |
| TOO_MANY_REFERENCES | code | 否 | 参考图片 / 视频 / 音频片段数量超过模型上限(sd2 系列为 9 / 3 / 3,sd2.5 为 30 / 10 / 10;extend ≤3 个视频)。 |
| REFERENCE_VIDEO_DURATION_INVALID | code | 否 | 某个参考视频超过单条上限(sd2 系列 15s,sd2.5 30s),或参考视频总时长超过上限(15s / 30s)。 |
| ASSET_NOT_FOUND / EXTERNAL_URL / READ_TIMEOUT / READ_FAILED | code | 否 | videoUrls 中的某一项无法解析为你已上传的素材,或无法读取其时长。 |
完整示例
完整流程:上传素材、等待审核、用审核通过的素材创建任务,并轮询结果。
const API_KEY = process.env.API_KEY;
const BASE = "https://seegen.ai/api/v1";
const headers = {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json",
};
// 1. Upload asset and wait for review
// (To upload a LOCAL file instead of a URL, POST multipart/form-data with a "file"
// field — no Content-Type header, no "type" — see the Upload Asset section above.)
async function uploadAndWaitForAsset(url, type = "IMAGE") {
const res = await fetch(`${BASE}/assets/upload`, {
method: "POST",
headers,
body: JSON.stringify({ url, type }),
});
if (!res.ok) throw new Error(`Upload failed: ${(await res.json()).message}`);
const asset = await res.json();
console.log(`Asset uploaded: ${asset.assetId}, status: ${asset.status}`);
// Poll until review completes
while (true) {
const statusRes = await fetch(
`${BASE}/assets/status?assetId=${asset.assetId}`,
{ headers }
);
const status = await statusRes.json();
if (status.status === "ACTIVE") {
console.log(`Asset approved: asset://${status.volcAssetId}`);
return status.volcAssetId;
}
if (status.status === "FAILED") {
throw new Error(`Asset review failed: ${status.failReason}`);
}
await new Promise((r) => setTimeout(r, 3000));
}
}
// 2. Create a task
async function createTask(inputs, callBackUrl) {
const res = await fetch(`${BASE}/jobs/createTask`, {
method: "POST",
headers,
body: JSON.stringify({
model: "sd2",
inputs,
...(callBackUrl && { callBackUrl }),
}),
});
if (!res.ok) throw new Error(`[${res.status}] ${(await res.json()).message}`);
return res.json();
}
// 3. Poll until done
async function waitForResult(taskId, timeoutMs = 300000) {
const start = Date.now();
while (Date.now() - start < timeoutMs) {
const res = await fetch(
`${BASE}/jobs/queryTask?taskId=${taskId}`,
{ headers }
);
const result = await res.json();
if (result.status === "COMPLETED") return result;
if (result.status === "FAILED") throw new Error(result.error);
await new Promise((r) => setTimeout(r, 5000));
}
throw new Error("Timeout waiting for task");
}
// Full workflow: upload → review → generate → result
async function main() {
// Upload image and wait for review
const volcAssetId = await uploadAndWaitForAsset(
"https://example.com/photo.jpg", "IMAGE"
);
// Create task with approved asset
const { taskId } = await createTask({
urls: [`asset://${volcAssetId}`],
prompt: "The person slowly looks up and smiles",
duration: "5s",
});
console.log(`Task: ${taskId}`);
// Wait for video
const result = await waitForResult(taskId);
console.log(`Video: ${result.output[0].url}`);
}
main().catch(console.error);