主题
Seedance 2.5 视频
使用 AruHub 的 seedance2.5 模型生成视频。本文按 AruHub 当前接入方式编写,适合第一次配置的用户、开发者,以及代用户配置软件的 AI。接口核对日期:2026-10-31。
最短流程:准备密钥 → 提交生成请求 → 保存任务 ID → 查询至完成 → 获取并保存视频。 创建请求返回的是任务,通常不会立即返回成片。
本页目录(点击展开)
先选适合你的接入方式
| 你的情况 | 怎么做 |
|---|---|
| 不写代码,想在网页中生成 | 使用 AruHub Studio,按下面的 Studio 配置操作 |
| 已有支持异步视频 API 的软件 | 配置 API 地址、密钥、模型和视频协议;必须支持查询任务和读取结果 |
| 使用 n8n、Dify、Coze 或自建工作流 | 使用 HTTP 请求节点,按 视频 API 接入与 AI 配置 连接提交、轮询和下载 |
| 让 AI 修改网站或写脚本 | 把本页末尾的“交给 AI 的配置指令”和 共用接入文档 一起发给 AI |
| 只有聊天窗口或图片生成节点 | 需要额外接入视频工具;仅在聊天模型列表中填模型名不能完成视频工作流 |
1. 准备地址、密钥和模型
| 项目 | 填写内容 |
|---|---|
| API 域名 | https://api.aruhub.com |
| SDK / 通用兼容客户端的 Base URL | https://api.aruhub.com/v1,前提是软件只自动追加 /videos |
| 完整创建地址 | https://api.aruhub.com/v1/videos |
| 完整查询地址 | https://api.aruhub.com/v1/videos/{task_id} |
| API Key | 你自己的 AruHub API 密钥 |
| 模型 ID | seedance2.5,注意没有连字符:不是 seedance-2.5 |
| 鉴权请求头 | Authorization: Bearer YOUR_API_KEY |
| 推荐请求格式 | application/json;本地文件也可用 multipart/form-data |
在 我的密钥 创建或取得密钥。密钥必须有目标模型的调用权限。可先请求 GET https://api.aruhub.com/v1/models,检查 data[].id 中是否有 seedance2.5。完整操作见 接入准备。
Base URL 与完整请求地址是两种填写方式
HTTP 请求工具直接填完整地址。会自动拼接 /v1/videos 的软件应填根域名;只拼接 /videos 的 SDK 应填带 /v1 的地址。最终请求必须是 /v1/videos,不能出现 /v1/v1/videos。文档网站 docs.aruhub.com 不是 API 地址。
本文使用统一模型 seedance2.5,通过 resolution 选择分辨率。不要根据分辨率自行拼接模型后缀;只有密钥实际返回且明确支持的模型 ID 才能使用。
2. 在 Studio 中配置
- 打开 AruHub Studio,进入设置中的视频模型配置,新增视频模型。
- 选择 New API 协议。Base URL 填
https://api.aruhub.com,API Key 填自己的 AruHub 密钥。 - 获取模型并选择
seedance2.5;若界面允许手动填写,必须使用这个完整 ID。 - 保存后进入视频生成工作台,选择刚配置的模型。先用 4 秒、480p、16:9、无参考素材 验证基本流程。
- 输入提示词并提交一次,等待任务完成后预览、下载。再逐步添加图片、视频或音频参考。
Studio 的 New API 协议使用 /v1/video/generations,由 Studio 处理对应返回格式;下方开发者示例使用 /v1/videos。两种入口都可用于本站视频任务,但自建客户端不要混用其状态解析方式。
通用参数面板可能显示其他模型使用的选项。面板里能选择,不等于当前模型支持。 Seedance 2.5 本教程使用 480p / 720p、4~30 秒以及下表中的比例;不要因为界面显示 4K 或更长时长就直接使用。
3. 参数怎么填
| 参数 | 类型 | 必填 / 默认 | 说明 |
|---|---|---|---|
model |
string | 必填 | seedance2.5 |
prompt |
string | 必填 | 非空提示词,最多 20,000 个字符 |
duration |
integer | 建议明确填写;默认 15 | 视频秒数,4~30 的整数,例如 4、10、15 |
resolution |
string | 建议明确填写;默认 720p |
本教程使用 480p 或 720p,带字母 p |
ratio |
string | 默认 16:9 |
16:9、9:16、1:1、4:3、3:4、21:9 |
mode |
string | 可选;默认 pro |
当前接入接受 pro / mini;首次接入使用 pro |
images |
string[] | 可选 | 参考图片,最多 30 张 |
videos |
string[] | 可选 | 参考视频,最多 10 个 |
audios |
string[] | 可选 | 参考音频,最多 10 段 |
分辨率填写 720p,比例填写 16:9,时长填写整数 10,这三项不能互换。当前适配层能识别 1080p 字段值,但本文核对的 Seedance 可用配置以 480p / 720p 为准,不把 1080p 作为可直接照抄的选项。
兼容旧客户端时,时长可用 seconds 或 duration_seconds,比例可用 aspect_ratio / aspectRatio。新接入统一使用 duration、resolution、ratio,不要同时发送多套重复参数。 若重复字段值冲突会被拒绝,例如 duration: 4 与 seconds: "10"。
size 表示像素尺寸,通常不需要填写。如果客户端强制要求,常见对应为 720p 横屏 1280x720、竖屏 720x1280;480p 横屏 854x480、竖屏 480x854。size、resolution、ratio 必须相互一致,不要填写 auto。
4. 文生视频:先跑通最小请求
以下命令在 macOS / Linux 的 Bash 中执行。先设置 ARUHUB_API_KEY 环境变量;Windows 用户见 PowerShell 示例。不要把真实密钥贴到公开代码或发给 AI。
bash
curl --fail-with-body --max-time 180 \
https://api.aruhub.com/v1/videos \
-H "Authorization: Bearer $ARUHUB_API_KEY" \
-H "Content-Type: application/json" \
--data-binary '{
"model": "seedance2.5",
"prompt": "一只橘猫坐在窗边,微风轻轻吹动窗帘。镜头缓慢推进,午后自然光,动作平稳。",
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"mode": "pro"
}'
创建响应结构示意如下,实际可能附带其他字段:
json
{
"id": "YOUR_LOCAL_TASK_ID",
"task_id": "YOUR_LOCAL_TASK_ID",
"object": "video",
"model": "seedance2.5",
"status": "queued"
}
马上保存顶层 id。YOUR_LOCAL_TASK_ID 只是占位符,必须替换为这次创建实际返回的值。HTTP 200 表示创建请求被受理,queued 不代表完成;不要再次 POST 来“获取结果”。
5. 图生视频:公网图片 URL
在最小请求里加入 images 数组。图片地址必须指向实际图片内容,能够由公网服务读取,不能是网页分享页、需要登录的网盘页面或本机文件路径。
json
{
"model": "seedance2.5",
"prompt": "以参考图为主体,保留服装、脸部和背景特征。人物自然抬头,镜头缓慢推近,动作连贯。",
"duration": 6,
"resolution": "720p",
"ratio": "9:16",
"images": ["https://YOUR_PUBLIC_MEDIA_HOST/reference.jpg"]
}
把占位地址替换为你自己的可访问图片直链。多张图片使用同一个数组,保持顺序,并在提示词里说明每张图片的用途,例如“第一张作为人物外观参考,第二张作为场景参考”。这是一种表达意图的方式,不保证模型精确绑定每个编号。
当前链路把图片作为参考素材处理。不要把第一张、最后一张图片自动解释成“首帧 / 尾帧”,也不要发送 first_frame、last_frame 等角色值来强制首尾帧。
6. 同时使用图片、视频和音频参考
json
{
"model": "seedance2.5",
"prompt": "参考图片中的产品外观,参考视频中的运镜节奏,并参考音频的节奏设计画面。产品在自然光下缓慢旋转,保持主体一致。",
"duration": 10,
"resolution": "720p",
"ratio": "16:9",
"images": ["https://YOUR_PUBLIC_MEDIA_HOST/product.png"],
"videos": ["https://YOUR_PUBLIC_MEDIA_HOST/motion.mp4"],
"audios": ["https://YOUR_PUBLIC_MEDIA_HOST/rhythm.mp3"]
}
这些字段提交参考素材,不是直接拼接素材的剪辑接口。输入音频不等于保证逐字配音、口型同步或原音轨完整保留;输入视频不等于续写、延长或编辑该视频的专用接口。最终参考效果由模型生成结果决定。
素材格式与大小
| 素材 | 接受格式 | 数量上限 | 内联 / 文件上传限制 |
|---|---|---|---|
| 图片 | JPEG/JPG、PNG、WebP、GIF | 30 张 | 单张 20 MiB |
| 视频 | MP4、MOV、WebM | 10 个 | 单个 50 MiB |
| 音频 | MP3、WAV、M4A、AAC、OGG | 10 段 | 单个 50 MiB |
一个请求内全部内联素材解码后的总大小不超过 50 MiB;完整请求体上限 72 MiB。数量上限和总大小上限需要同时满足,不能据单文件上限推算可上传 30 × 20 MiB。1 MiB = 1,048,576 字节。公网 URL 的实际可用性还取决于素材是否可读取及上游是否接受其编码。
Base64 会增加请求体大小,接近大小上限时优先使用可访问的公网直链。HEIC、AVIF、TIFF、BMP、SVG 请先转成受支持格式;改扩展名并不会转换真实文件格式。文件容器通过检查,也不代表其中的所有编解码器都被模型服务接受。
本地文件:multipart 上传
推荐用下面的方法提交电脑上的图片,不需要先自行搭建图片服务器:
bash
curl --fail-with-body --max-time 180 \
https://api.aruhub.com/v1/videos \
-H "Authorization: Bearer $ARUHUB_API_KEY" \
-F 'model=seedance2.5' \
-F 'prompt=让参考图中的主体自然运动,镜头缓慢推进,保持外观一致。' \
-F 'duration=4' \
-F 'resolution=480p' \
-F 'ratio=16:9' \
-F 'images=@./reference.jpg;type=image/jpeg'
多张图片重复 -F 'images=@...';视频使用 videos=@./reference.mp4;type=video/mp4;音频使用 audios=@./reference.mp3;type=audio/mpeg。Windows 中用 curl.exe,并使用实际文件路径。
multipart 不要手动添加 Content-Type: application/json,也不要自己编造 boundary。 让 cURL、浏览器 FormData 或 HTTP 库自动生成正确的请求头。
JSON 内联素材:Data URI
没有公网地址、又需要统一使用 JSON 时,可把文件编码为包含 MIME 类型的 Data URI:
text
data:image/jpeg;base64,文件的完整Base64编码
然后作为 images 数组中的字符串发送。视频、音频分别放入 videos、audios。不能只发裸 Base64,也不能把 C:\images\cat.jpg、file://...、blob:... 当作素材地址。
Python 构造图片字段示例(仅构造请求,不会提交任务):
python
import base64
from pathlib import Path
image = base64.b64encode(Path("reference.jpg").read_bytes()).decode("ascii")
payload = {
"model": "seedance2.5",
"prompt": "让图片中的主体自然运动,镜头缓慢推进。",
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"images": ["data:image/jpeg;base64," + image],
}
内联文件会被转换为生成服务可以访问的素材引用;用于处理视频、音频的临时素材链接不应当作永久存储。请仅提交适合交给生成服务处理的素材。
需要结构化素材时:content
新用户优先使用 images / videos / audios。已有工作流使用结构化消息时,可改用以下 content,不要再重复发送相同素材数组:
json
{
"model": "seedance2.5",
"duration": 4,
"resolution": "480p",
"ratio": "16:9",
"content": [
{"type": "text", "text": "参考图片中的主体,镜头缓慢推近。"},
{"type": "image_url", "image_url": {"url": "https://YOUR_PUBLIC_MEDIA_HOST/reference.jpg"}, "role": "reference_image"}
]
}
视频对应 type: "video_url"、video_url: {"url": "..."}、role: "reference_video";音频对应 audio_url 和 reference_audio。role 可以省略;填写时必须与媒体类型一致。url 对象仅包含 url,不要添加聊天图片接口的 detail 等字段。
7. 查询任务并拿到视频
bash
curl --fail-with-body \
"https://api.aruhub.com/v1/videos/YOUR_LOCAL_TASK_ID" \
-H "Authorization: Bearer $ARUHUB_API_KEY"
使用创建时的密钥和返回的任务 ID。建议每 5 秒查询一次,根据负载逐步增加到 10~15 秒。不要用循环 POST 替代 GET 轮询。
status |
客户端该怎么做 |
|---|---|
queued |
等待排队,稍后继续查同一个 ID |
in_progress |
正在生成,稍后继续查同一个 ID |
completed |
读取视频地址并下载 |
failed |
读取 error.message,停止轮询并显示原因 |
| 未识别状态 | 保存原始响应和任务 ID,显示待确认;不要自动重建任务 |
成功响应示意:
json
{
"id": "YOUR_LOCAL_TASK_ID",
"task_id": "YOUR_LOCAL_TASK_ID",
"object": "video",
"model": "seedance2.5",
"status": "completed",
"progress": 100,
"video_url": "https://YOUR_RESULT_HOST/result.mp4",
"metadata": {"url": "https://YOUR_RESULT_HOST/result.mp4"}
}
解析时使用 video_url || metadata.url。外部成片 URL 不需要携带 AruHub 密钥,不要把密钥转发给视频托管域名。成片地址可能包含有效期信息,完成后应尽快保存到自己的存储。
不要只保存提示词或网页卡片 ID。 保存创建返回的本地任务 id,页面刷新、程序退出或网络恢复后继续查询这个 ID。更多断线恢复和下载示例见 共用接入文档。
8. 常见问题
| 现象 / 报错 | 检查与处理 |
|---|---|
找不到 seedance2.5 |
检查密钥可见的 /v1/models,确认模型权限和完整拼写,不自行加后缀 |
unsupported Seedance option ... |
删除不属于本教程的参数;不要照搬其他供应商的 seed、watermark、negative_prompt、generate_audio、callback_url |
conflicting duration fields |
只保留一个时长字段,或确保所有别名值一致 |
size and resolution disagree |
删除非必要 size,或让尺寸、分辨率和比例完全一致 |
| 提示 4~30 秒或数量超限 | 检查实际发出的 JSON,不只看界面选项;确认数字是整数 |
| 素材 URL 无效 | 用未登录环境检查直链是否返回真实文件;本地路径和浏览器 blob 地址不可作为公网 URL |
| 图片上传失败 | 检查真实格式、MIME 类型、文件完整性与大小;HEIC 等先转换 |
| 413 / 请求过大 | 减小素材,减少数量或改用公网 URL;同时检查 Base64 膨胀和中间代理的限制 |
| 已生成但自己网站没视频 | 检查是否实现 GET 轮询、保存本地 ID,并兼容读取 metadata.url |
| completed 但下载失败 | 只重试查询 / 下载,确认成片 URL 有效;不要重新提交生成 |
| 想等待 webhook 通知 | 当前推荐链路不提供完成回调,客户端实现轮询 |
| 上传了音频但结果不符合预期 | 音频是参考输入,不是确定性的配音 / 音轨合成接口 |
9. 提示词怎么写更容易控制
建议按“主体 + 动作 + 场景 + 镜头 + 光线 / 风格 + 需要保持的特征”组织。短片先描述一个明确动作;长片可描述连贯的先后变化,避免在 4 秒内要求多个复杂场景切换。
- 产品展示:
参考图片中的香水瓶,保持瓶身文字和形状。镜头从侧面缓慢移动到正面,柔和侧光,背景简洁,动作平稳。 - 人像动效:
保持参考人物外观和服装,人物轻微转头并自然微笑,固定镜头,背景不发生明显变化。 - 风景短片:
清晨山谷薄雾流动,阳光逐渐照亮山脊,镜头缓慢向前,画面稳定,写实风格。
提示词表达期望,不构成像素级一致性、文字保真、声音效果或镜头精确执行的保证。
10. 交给 AI 的配置指令
复制下面整段给负责配置软件或编写代码的 AI。真实密钥在你的本地设置中填写,不要直接写进对话和源码。
text
请按 AruHub 当前文档接入 Seedance 2.5 视频:
https://docs.aruhub.com/guide/seedance-2-5
https://docs.aruhub.com/guide/video-api
目标模型:seedance2.5。不要自行改成 seedance-2.5 或添加分辨率后缀。
API 根地址:https://api.aruhub.com。
密钥从环境变量 ARUHUB_API_KEY 读取;检查该密钥的 /v1/models 是否包含目标模型。
新代码使用 POST /v1/videos 创建,GET /v1/videos/{创建返回的 id} 查询。
最小请求:model、prompt、duration:4、resolution:"480p"、ratio:"16:9"。
后续时长范围 4~30 秒;本文推荐分辨率 480p/720p。
图片用 images、视频用 videos、音频用 audios 数组。
素材可使用公网直链、带 MIME 的 Base64 Data URI 或 multipart 实际文件。
图片最多30张、视频10个、音频10段;单图20MiB、单视频/音频50MiB;
全部内联素材合计50MiB,请求体72MiB。不要把本地路径直接当作公网URL。
创建后立即持久保存 id,不把上游ID、网页ID或 data.id 当成本站任务ID。
轮询 queued/in_progress,completed 时取 video_url 或 metadata.url,failed 时显示 error.message。
外部视频URL下载不得携带 AruHub 密钥;断线恢复继续查原任务,不自动重发创建请求。
没有完成webhook;不使用聊天/图片接口、不使用stream=true、不编造首尾帧或视频编辑能力。
如果软件自动追加 /v1/videos,Base URL 填根域名;若只追加 /videos,填根域名加 /v1。
如软件仅支持聊天或图片,请明确说明需要新增异步视频工具,不能只填模型名冒充已完成。
先完成配置和无生成验证,展示最终请求地址与脱敏JSON;用户确认试运行后只提交一次最小任务。
交付应包含:实际配置文件位置、启动方式、任务ID持久化方式、查询恢复方式和下载位置。
