Restore this archival greenhouse footage to match @Image1: repair the broken glass panes, clear the overgrowth, and let morning sunlight fill the structure while keeping the original camera move, no text, no logos, no watermark, no promotional marks
Happy Horse 1.0 Video Edit API
alibaba/happyhorse-1.0/video-editHappy Horse 1.0 Video Edit 根据自然语言指令与可选参考图对现有源视频进行智能重塑,支持 3–60 秒源片输入、720p 与 1080p 梯级画质,以及自适应或保留原声音频策略。它能够严密继承原始运动骨骼拓扑与机位运行轨迹,同时精准落实角色服饰、环境材质与艺术风格的重绘变化。
拖拽文件、粘贴剪贴板素材,或输入 URL。
拖拽文件、粘贴剪贴板素材,或输入 URL。
生成的视频会显示在这里
填写提示词并添加所需素材,确认设置后点击“运行”。
示例
REST API
快速开始
使用 API 认证,提交源视频及编辑指令,通过任务 ID 获取重绘后的成片。
连接到 Vidgo API
创建 API 密钥,仅保存在服务器上,并发送 Authorization: Bearer VIDGO_API_KEY。
- 端点
- POST
https://api.vidgo.ai/api/generate/submit - 认证
- Authorization: Bearer VIDGO_API_KEY
提交视频编辑任务
在 video_url 中传入源视频,在 prompt 中输入修改需求,将 model 设为 alibaba/happyhorse-1.0/video-edit。
REQUEST_BODY=$(cat <<'JSON'
{
"model": "alibaba/happyhorse-1.0/video-edit",
"input": {
"prompt": "Restore this archival greenhouse footage to match @Image1: repair the broken glass panes, clear the overgrowth, and let morning sunlight fill the structure while keeping the original camera move, no text, no logos, no watermark, no promotional marks",
"resolution": "1080p",
"audio_setting": "auto",
"video_url": "https://cdn.vidgo.ai/apis/models/alibaba/happyhorse-1.0/video-edit/v1/01/input-source.mp4",
"reference_image_urls": [
"https://cdn.vidgo.ai/apis/models/alibaba/happyhorse-1.0/video-edit/v1/01/input-01.png"
]
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"等待结果
用 task_id 查询,not_started/running 时继续,finished/failed 时停止。成功后读取 data.files[].file_url。
跟踪状态
GET https://api.vidgo.ai/api/generate/status/{task_id}以 2 秒为基准轮询状态,任务较长时加大间隔。仅在 not_started 或 running 时继续,finished 或 failed 时停止。也可以在请求中指定 callback_url 接收 webhook。
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "running",
"created_time": "2026-09-17T10:00:00Z"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}完整可运行示例
展开查看包含 HTTP 与业务码检查、task_id 校验、轮询、终态处理和超时边界的完整代码。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "alibaba/happyhorse-1.0/video-edit",
"input": {
"prompt": "Restore this archival greenhouse footage to match @Image1: repair the broken glass panes, clear the overgrowth, and let morning sunlight fill the structure while keeping the original camera move, no text, no logos, no watermark, no promotional marks",
"resolution": "1080p",
"audio_setting": "auto",
"video_url": "https://cdn.vidgo.ai/apis/models/alibaba/happyhorse-1.0/video-edit/v1/01/input-source.mp4",
"reference_image_urls": [
"https://cdn.vidgo.ai/apis/models/alibaba/happyhorse-1.0/video-edit/v1/01/input-01.png"
]
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
done输入参数
下表列出可用输入参数、类型和默认值。请求示例还包含顶层 model 字段。
| 字段 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
| video_url | string | Yes | — | 字符串。公开访问的源视频 URL。支持源片时长 3–60 秒。 |
| prompt | string | Yes | — | 必填,非空且最多 2,500 个字符。描述编辑指令,可结合参考图。 |
| reference_image_urls | array | No | — | 字符串数组。最多 5 张参考图 URL,用于结合提示词中的参考描述指导设计细节。 |
| resolution | string | No | 1080p | 字符串。输出分辨率。支持 720p 与 1080p。 |
| audio_setting | string | No | auto | 字符串。音频策略。auto(智能重构匹配音画)或 origin(保留源片音轨)。 |
| seed | integer | No | — | 整数。0 到 2147483647,用于稳定生成基底并复现镜头。 |
| enable_safety_checker | boolean | No | — | 布尔值。启用输入和输出的内容安全审核。 |
响应字段
任务提交返回 task_id;查询状态返回当前处理进度与成片文件列表。
| 字段 | 类型 | 说明 |
|---|---|---|
| code | integer | 业务状态码,200 表示成功。 |
| data.task_id | string | 唯一任务标识,用于跟踪和轮询进度。 |
| data.status | string | 任务生命周期状态:not_started、running、finished 或 failed。 |
| data.progress | integer | 生成进度百分比 (0–100)。 |
| data.files[].file_url | string | 生成视频的公开 URL。 |
| data.files[].file_type | string | 文件类型,例如 video。 |
| data.error_message | string | null | status 为 failed 时的失败详情。 |
任务生命周期
在 not_started 或 running 时继续查询。在 finished 或 failed 时结束轮询。
not_started任务已接受,等待开始。
running生成进行中。继续轮询同一 task_id。
finished生成成功。从 data.files[].file_url 读取视频。
failed生成失败。读取 data.error_message 并停止轮询。
轮询与错误处理
- 认证遇到 401 时,检查 Authorization 中的 Bearer API key,更新凭证后重试。
- 校验遇到 400 时,根据响应检查必填输入、参数值和可用积分,再重新提交。
- 网络和超时状态查询遇到网络错误或超时,保留原 task_id 并重试查询。
- 轮询间隔以 2 秒为基准轮询状态,任务较长时逐步加大间隔。
- 终态仅在 not_started 或 running 时继续。finished 或 failed 立即停止。
- 回调选项可在请求顶层提供 callback_url 接收最终任务对象;投递失败时仍可轮询。
端点限制
| 规格 | 值 | 详情 |
|---|---|---|
| 输入模式 | 源视频 + 编辑提示词 (+ 可选参考图) | 输入源视频与文字指令,可选传入最多 5 张参考图。 |
| 源视频时长 | 3 至 60 秒 | 源视频支持 3–60 秒。积分按 min(实际探测秒数, 15) × 当前分辨率每秒积分计算,结果按 6 位小数精度规范化。 |
| 参考图语法 | 自然语言参考描述 | 在提示词中对应 reference_image_urls 指代。 |
| 音频模式 | auto / origin | auto 智能重构音轨,origin 保留原视频音轨。 |
| 输出规格 | MP4 视频文件 | 异步生成返回 task_id;完成后提供视频下载地址。 |
| 分辨率 | 720p / 1080p | 默认预选 1080p。 |
| 计费方式 | 按秒计费(上限 15 秒) | 720p 32 credits/s,1080p 64 credits/s。 |
相关模型
Happy Horse 1.0 Video Edit API 常见问题
Happy Horse 1.0 Video Edit API 是什么?
Happy Horse 1.0 Video Edit 是阿里巴巴研发的视频编辑与视频生视频(Video-to-Video)模型。它接收 3–60 秒源视频、自然语言编辑指令以及最多 5 张可选参考图,生成 720p 或 1080p 的重塑视频,具备突出的运动继承、局部重绘与风格迁移能力。基于先进的时空潜变量重塑机制,它在紧密贴合源片动作骨骼、透视变换与时间线节奏的同时,精准实现画风与材质的无缝替换,并支持原声音轨保留。你可以通过 API 进行程序化调用,也可以在上方体验区直接在线试用。
Happy Horse 1.0 Video Edit 支持多长的源视频?
源视频支持 3–60 秒。积分按 min(实际探测秒数, 15) × 当前分辨率每秒积分计算,结果按 6 位小数精度规范化。
如何在编辑中指代 Happy Horse 1.0 Video Edit 的参考图?
在 reference_image_urls 数组中传入最多 5 张图片,并在 prompt 中描述需要参考的内容,指导模型将特定材质或角色特征迁移至视频中。
Happy Horse 1.0 Video Edit 可以保留源视频的原始声音吗?
可以。将 audio_setting 参数设置为 origin 即可保留源视频中的对白与环境原声;设置为 auto 则由模型根据新生成的重绘画面智能重构匹配音频。
Happy Horse 1.0 Video Edit 的计费封顶机制是怎样的?
当源视频时长超过 15 秒(例如 20 秒或 45 秒)时,计费按 15 秒封顶结算(720p 封顶 480 credits,1080p 封顶 960 credits),无需为超出部分重复支付。
Happy Horse 1.0 Video Edit 会改变原视频的动作幅度吗?
模型以源视频中主体的走位、手势动作与镜头流动为参考,主要在视觉外观、材质表面与光影层面进行风格化重塑。
什么时候该选用 Happy Horse 1.0 Video Edit 而不是 Reference to Video?
当已有成片或实拍视频,需要继承其特定的运镜机位、时间节奏或表演动作进行画风重塑或换装时,选用 Video Edit;若没有现有源视频素材,则选用 Reference to Video。















