Seedance 2.0 视频生成 NEW
参考视频示例:一个 5 秒 720p 剪辑,仅文本输入 ≈ 33 IC ≈ 33 泰铢。
高级功能。 Seedance 2.0 仅限已至少购买过一次 iApp 积分 (IC) 套餐的账户使用。免费注册积分不解锁此功能 — 购买一次性套餐即可访问所有高级 API。
欢迎来到 iApp Seedance 2.0,我们是 BytePlus Ark 的 Dreamina Seedance 2.0 系列的经销商。您将获得相同的 सिंगापुर区域吞吐量、相同的模型质量,并通过您现有的 iApp API 密钥实现单一的 OpenAI 式账单通道 — 无需单独的 BytePlus 账户,无外币发票,无个人身份信息 (PII) 离开泰国的友好账单。
试用实时演示
Try Seedance 2.0 Video Generation
Login to your iApp account to use this premium video-generation demo.
Example Prompts
选择模型
| 模型 | 最高分辨率 | 音频 | 最适合 | 大约成本 (5 秒,720p,无输入视频) |
|---|---|---|---|---|
dreamina-seedance-2-0-260128 | 1080p | ✅ | 精彩广告、营销短片、任何需要最清晰输出的场景 | ~41 IC |
dreamina-seedance-2-0-fast-260128 | 最高 720p | ✅ | 草稿、社交媒体内容、批量生成、A/B 变体 | ~33 IC |
两种模型共享相同的 JSON 合同 — 通过 model 字段按请求切换层级。
定价 (每 1,000 个输出代币)
Seedance 按输出代币计费,代币大致等于 (输入视频时长 + 输出视频时长) × 宽度 × 高度 × 帧率 / 1024。更长或更高分辨率的视频会使用更多代币。输入提示代币不单独计费。
| 模型 | 分辨率 | 输入有视频? | iApp 费率 (IC / 1K 代币) | BytePlus 参考 (USD / 百万代币) |
|---|---|---|---|---|
| Seedance 2.0 | 480p / 720p | 否 | 0.302 | $7.00 |
| Seedance 2.0 | 480p / 720p | 是 | 0.186 | $4.30 |
| Seedance 2.0 | 1080p | 否 | 0.333 | $7.70 |
| Seedance 2.0 | 1080p | 是 | 0.203 | $4.70 |
| Seedance 2.0 Fast | 480p / 720p | 否 | 0.242 | $5.60 |
| Seedance 2.0 Fast | 480p / 720p | 是 | 0.143 | $3.30 |
费率采用每行中最高的 BytePlus 层级,并加上少量溢价以覆盖汇率和网关开销。您只需为成功生成的视频付费 — 失败的任务 (例如内容审核拒绝) 成本为 0 IC。轮询状态端点也是免费的。
端点
API 是异步的:您 POST 提交任务,然后轮询 GET 直到状态为 succeeded。
POST /v3/store/video/seedance/tasks — 提交任务
Headers:
| Header | Value |
|---|---|
apikey | 您的 iApp API 密钥 |
Content-Type | application/json |
Body schema:
{
"model": "dreamina-seedance-2-0-fast-260128",
"content": [
{ "type": "text", "text": "<your prompt>" },
{ "type": "image_url", "image_url": { "url": "https://..." }, "role": "reference_image" },
{ "type": "video_url", "video_url": { "url": "https://..." }, "role": "reference_video" },
{ "type": "audio_url", "audio_url": { "url": "https://..." }, "role": "reference_audio" }
],
"generate_audio": true,
"ratio": "16:9",
"duration": 5,
"watermark": false,
"resolution": "720p"
}
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
model | string | 必需 | dreamina-seedance-2-0-260128 或 dreamina-seedance-2-0-fast-260128 |
content | array | 必需 | 至少包含一个 text 块。可选的 image_url / video_url / audio_url 块可添加参考媒体。 |
content[].role | string | — | 对于图像:reference_image (主体/风格)、first_frame 或 last_frame。对于视频:reference_video。对于音频:reference_audio。 |
generate_audio | boolean | true | 随视频生成配乐。 |
ratio | string | 16:9 | 16:9、9:16、1:1、4:3、3:4、21:9 之一。 |
duration | integer | 5 | 秒。范围 4–15 (Seedance 2.0 的 BytePlus 最低要求是 4 秒)。 |
watermark | boolean | false | 如果为 true,BytePlus 将在输出上添加水印。 |
resolution | string | 模型默认 | 480p、720p 或 1080p (Fast 模型不支持 1080p)。 |
响应 (HTTP 200):
{ "id": "task_abc123" }
GET /v3/store/video/seedance/tasks/{task_id} — 轮询状态
免费调用;返回任务的当前状态。建议轮询间隔:5 秒。
完成时响应:
{
"id": "task_abc123",
"status": "succeeded",
"content": {
"video_url": "https://...mp4"
},
"usage": { "completion_tokens": 135000 }
}
状态值:queued、processing、succeeded、failed、cancelled、expired。
⚠️
video_url会在约 24 小时后过期。如果您需要保留视频,请立即下载 MP4 并自行托管。
身份验证
使用您 API Keys dashboard 中的任何有效密钥。相同的密钥适用于所有 iApp API。
代码示例
cURL
# 1. 提交
curl -X POST 'https://api.iapp.co.th/v3/store/video/seedance/tasks' \
-H "apikey: $IAPP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-0-fast-260128",
"content": [{ "type": "text", "text": "一只猫在日落时冲浪,电影感,24fps" }],
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"generate_audio": true
}'
# → {"id":"task_abc123"}
# 2. 轮询直到成功
curl -s 'https://api.iapp.co.th/v3/store/video/seedance/tasks/task_abc123' \
-H "apikey: $IAPP_API_KEY" | jq .
Python
import os, time, requests
API = "https://api.iapp.co.th/v3/store/video/seedance/tasks"
HEADERS = {"apikey": os.environ["IAPP_API_KEY"], "Content-Type": "application/json"}
# 1. Submit
r = requests.post(API, headers=HEADERS, json={
"model": "dreamina-seedance-2-0-fast-260128",
"content": [{"type": "text", "text": "一只猫在日落时冲浪,电影感,24fps"}],
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"generate_audio": True,
})
r.raise_for_status()
task_id = r.json()["id"]
print("submitted:", task_id)
# 2. Poll
while True:
s = requests.get(f"{API}/{task_id}", headers=HEADERS).json()
print("status:", s["status"])
if s["status"] == "succeeded":
video_url = s["content"]["video_url"]
break
if s["status"] in ("failed", "cancelled", "expired"):
raise SystemExit(f"task ended: {s}")
time.sleep(5)
# 3. Download
mp4 = requests.get(video_url).content
open("output.mp4", "wb").write(mp4)
print("saved output.mp4")
Node.js
const apiKey = process.env.IAPP_API_KEY;
const base = "https://api.iapp.co.th/v3/store/video/seedance/tasks";
const sub = await fetch(base, {
method: "POST",
headers: { "apikey": apiKey, "Content-Type": "application/json" },
body: JSON.stringify({
model: "dreamina-seedance-2-0-fast-260128",
content: [{ type: "text", text: "一只猫在日落时冲浪,电影感" }],
duration: 5, ratio: "16:9", resolution: "720p", generate_audio: true,
}),
});
const { id } = await sub.json();
let result;
while (true) {
await new Promise(r => setTimeout(r, 5000));
result = await (await fetch(`${base}/${id}`, { headers: { apikey: apiKey } })).json();
if (result.status === "succeeded") break;
if (["failed", "cancelled", "expired"].includes(result.status)) throw result;
}
console.log("video:", result.content.video_url);
Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
api := "https://api.iapp.co.th/v3/store/video/seedance/tasks"
key := os.Getenv("IAPP_API_KEY")
body, _ := json.Marshal(map[string]any{
"model": "dreamina-seedance-2-0-fast-260128",
"content": []map[string]string{{"type": "text", "text": "一只猫在冲浪"}},
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
})
req, _ := http.NewRequest("POST", api, bytes.NewReader(body))
req.Header.Set("apikey", key)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var sub struct{ ID string }
json.NewDecoder(resp.Body).Decode(&sub)
for {
time.Sleep(5 * time.Second)
r2, _ := http.NewRequest("GET", fmt.Sprintf("%s/%s", api, sub.ID), nil)
r2.Header.Set("apikey", key)
res, _ := http.DefaultClient.Do(r2)
var p struct {
Status string
Content struct{ VideoURL string `json:"video_url"` }
}
json.NewDecoder(res.Body).Decode(&p)
res.Body.Close()
if p.Status == "succeeded" {
fmt.Println("video:", p.Content.VideoURL)
return
}
if p.Status == "failed" || p.Status == "cancelled" || p.Status == "expired" {
io.Copy(os.Stderr, res.Body)
return
}
}
}
用途
- 营销短片 — 为 Instagram、TikTok、YouTube Shorts 一次性生成匹配的 9:16 / 1:1 / 16:9 剪辑。
- 产品演示 — 提供主图作为
first_frame,让模型围绕其动画摄像机。 - 本地化广告素材 — 直接输入泰语提示;无需翻译步骤。
- 故事板预览 — 使用更便宜的 Fast 模型以 480p 进行迭代,然后以 1080p 重新渲染选中的镜头。
常见问题
为什么 Seedance 仅限付费账户? 一次 1080p 的渲染可能花费 60–100 IC,远高于平台上任何其他 API。为防止免费注册意外 (或恶意) 耗尽数百美元的 GPU 时间,该端点要求账户至少进行过一次付费 IC 购买。新用户只需一次性充值即可解锁所有功能 — 查看 购买 IC。
如果生成失败怎么办? 您不会被收费。BytePlus 只对成功生成的视频收费,我们也遵循此政策。内容审核拒绝、不适宜内容过滤器和基础设施超时都会返回 0 IC。
渲染需要多长时间? 对于 Fast 模型上的 5 秒 720p 剪辑,通常需要 30–120 秒;对于完整模型上的 1080p 剪辑,则需要 1–4 分钟。您的客户端应每 5 秒轮询一次,超时时间为 15 分钟。
生成的视频归我所有吗? 是的 — 与直接客户一样。您保留生成内容的所有 商业权利。避免使用描绘真实公众人物、受版权保护的角色或受保护知识产权的提示。
API 托管在哪里?
上游是 BytePlus Ark 的 ap-southeast-1 (新加坡)。通过 api.iapp.co.th 的请求会增加约 10–30 毫秒的网关延迟。
我可以用它进行实时/即时视频吗? 不可以。Seedance 是一个离线、异步生成器。每个剪辑都会被渲染一次,然后输出 URL 有效期为 24 小时。
支持
- 定价或账单问题: sale@iapp.co.th
- API 技术问题: Discord
- Bug 报告: 请附带提交响应中的
task_id— 我们可以追溯每次调用。