TL;DR
seedance-2.5/image-to-video让一张图动起来,也可以同时给首帧和尾帧,让模型补出中间的过程。单条 4–30 秒,自带声音。打开模型页 就能在线生成,新用户注册送 200 积分。- 和文生视频同价:720p 每秒 $0.204,1080p 每秒 $0.516。4 秒 720p 是 $0.816。
- 两种用法二选一:首帧 / 首尾帧,或者参考图 + 参考音频,不能混用。
先看一条实际效果:首尾帧
给一张「空花盆」当首帧、一张「长满罗勒的花盆」当尾帧,提示词只写中间怎么变:


Time-lapse growth of a basil seedling sprouting and unfurling leaves inside the terracotta pot, smooth continuous motion, soft morning light staying consistent, camera locked off, no cuts
用这个提示词生成 →(上传你的首帧和尾帧,4 秒、720p)
seedance-2.5/image-to-video,首帧 + 尾帧,720p,4 秒,带声音,$0.816。
首尾两张图的构图、光线、道具位置保持一致,只改变你想让视频表现的东西(这里是植物),中间过渡才顺。提示词里的 "soft morning light staying consistent" 是为了不让模型把光线也一起做成延时。
curl:只用首帧
最常见的用法:一张产品图或插画,加一句「接下来怎么动」:
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "镜头缓慢推向冒着热气的咖啡杯,热气在晨光中旋转上升,轻微手持晃动",
"first_frame_url": "https://your-cdn.example.com/coffee-cup.jpg",
"duration": 5,
"resolution": "720p"
}
}'
返回 taskId:
{"code": 200, "data": {"taskId": "tk-hiapi-..."}, "message": "success"}
查结果:
curl https://api.hiapi.ai/v1/tasks/tk-hiapi-... \
-H "Authorization: Bearer $HIAPI_KEY"
status 为 success 后,从 output[0].url 下载视频。
首尾帧:再加一个 last_frame_url
{
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "同一张书桌从白天到夜晚的延时:日光渐渐变暗,台灯亮起暖光,窗外的城市灯光逐一亮起,镜头固定不动",
"first_frame_url": "https://your-cdn.example.com/desk-day.jpg",
"last_frame_url": "https://your-cdn.example.com/desk-night.jpg",
"duration": 4,
"resolution": "720p"
}
}
last_frame_url要和first_frame_url一起用。- 尾帧和首帧比例不一致时,尾帧会被居中裁剪,最好两张都用同一个比例出图。
- 画幅跟随首帧,
aspect_ratio只有adaptive一个值,不用传。
Python:提交、轮询、下载
# pip install requests;先 export HIAPI_KEY=你的 Key
import os, time, uuid, requests
KEY = os.environ["HIAPI_KEY"]
H = {"Authorization": f"Bearer {KEY}"}
def generate(prompt, model="seedance-2.5/image-to-video", timeout_s=900, **params):
body = {"model": model, "input": {"prompt": prompt, **params}}
# 重试提交同一个任务时带同一个 Idempotency-Key,避免重复扣费
headers = {**H, "Idempotency-Key": str(uuid.uuid4())}
r = requests.post("https://api.hiapi.ai/v1/tasks", json=body, headers=headers, timeout=30)
r.raise_for_status()
res = r.json()
if res.get("code") != 200:
raise RuntimeError(res)
task_id = res["data"]["taskId"]
deadline = time.time() + timeout_s
while time.time() < deadline:
d = requests.get(f"https://api.hiapi.ai/v1/tasks/{task_id}", headers=H, timeout=30).json()["data"]
if d["status"] == "success":
return d["output"][0]["url"]
if d["status"] == "fail":
raise RuntimeError(d)
time.sleep(10)
raise TimeoutError(task_id)
url = generate(
"Time-lapse growth of a basil seedling sprouting and unfurling leaves, camera locked off, no cuts",
first_frame_url="https://your-cdn.example.com/seedling-start.jpg",
last_frame_url="https://your-cdn.example.com/seedling-grown.jpg",
duration=4, resolution="720p",
)
with open("clip.mp4", "wb") as f:
f.write(requests.get(url).content)
另一种用法:参考图 + 参考音频
不想把某张图钉死成第一帧,而是想让模型「参考」人物长相、产品外观或画风,就改用 reference_image_urls(最多 30 张),还可以加 reference_audio_urls(最多 10 段)参考声音风格:
{
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "参考图里的女孩背着同款蓝色书包,走过下雨的街角,镜头跟随",
"reference_image_urls": [
"https://your-cdn.example.com/girl.jpg",
"https://your-cdn.example.com/backpack.jpg"
],
"duration": 5,
"resolution": "720p"
}
}
注意:参考图、参考音频不能和 first_frame_url / last_frame_url 同时传,二选一。
参数一览
| 参数 | 取值 | 说明 |
|---|---|---|
prompt | 字符串,必填 | 写动作、镜头和声音,不用重新描述整张图 |
first_frame_url | 图片 URL | 首帧 |
last_frame_url | 图片 URL | 尾帧,配合首帧使用 |
reference_image_urls | 最多 30 张 | 不能和首尾帧同时用 |
reference_audio_urls | 最多 10 段 | 不能和首尾帧同时用 |
duration | 4–30 的整数,默认 5 | 单位秒 |
resolution | 720p / 1080p,默认 720p | |
generate_audio | 默认 true | 声音和画面一起生成 |
output_format | mp4 / mov |
算一下费用
| 时长 | 720p($0.204/秒) | 1080p($0.516/秒) |
|---|---|---|
| 4 秒 | $0.816 | $2.064 |
| 5 秒 | $1.02 | $2.58 |
| 10 秒 | $2.04 | $5.16 |
| 15 秒 | $3.06 | $7.74 |
首尾帧和单首帧同价,费用只看分辨率和秒数。更细的账看 Seedance 2.5 API 价格。
上线前注意
- 图片地址要能公开访问:HTTP(S) 地址或 data URL 都行,内网地址模型拿不到。
- 用回调代替轮询:请求顶层加
"callback": {"url": "https://你的域名/hiapi/callback"},按taskId去重。 - 及时转存:
output[0].url是临时链接,拿到后马上存到自己的存储。 - 重试带幂等键:请求头加
Idempotency-Key,同一个键重试只创建一次任务。 - 失败自动退款:只按成功生成的视频计费。
常见问题
首尾帧中间出现「叠化」怎么办?
两张图差别太大时,中间一两秒容易像两张图在叠化。让两张图的构图和道具保持一致、只改变主体,再在提示词里写 "camera locked off, no cuts"。
可以只给尾帧吗?
不行,尾帧要配合首帧一起用。
能指定竖屏吗?
画幅跟随首帧,要竖屏就上传竖屏的首帧图。
首帧和参考图有什么区别?
首帧会原样成为视频第一帧;参考图只是让模型参考外观和风格,画面可以重新构图。
只有提示词、没有图?看 Seedance 2.5 文生视频 API。想要更多首帧写法,看 Seedance 2.5 使用手册,或者直接去模型页上传一张图试试。





