A marine researcher kneels beside a glowing tide pool at dawn, gently lifting a small translucent crab with tweezers as waves wash over volcanic rock, soft pink and gold sky, cinematic camera slowly pushing in, natural ambient sound, no text, no logos, no watermark, no promotional marks
Happy Horse 1.0 Text to Video API
alibaba/happyhorse-1.0/text-to-videoHappy Horse 1.0 Text to Video 将自然语言提示词转化为电影感短视频,支持 3–15 秒时长控制、720p 与 1080p 高清输出,以及适配多端发布的 5 种画幅比例。它能够精确遵循提示词中的场景构图、主体动作与运镜调度,同时保持画面元素在整段成片中的时间连贯性。
生成的视频会显示在这里
填写提示词并添加所需素材,确认设置后点击“运行”。
示例
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
提交一次生成任务
按请求示例填写输入,model 必须是 alibaba/happyhorse-1.0/text-to-video,并保存返回的 task_id。
REQUEST_BODY=$(cat <<'JSON'
{
"model": "alibaba/happyhorse-1.0/text-to-video",
"input": {
"prompt": "A marine researcher kneels beside a glowing tide pool at dawn, gently lifting a small translucent crab with tweezers as waves wash over volcanic rock, soft pink and gold sky, cinematic camera slowly pushing in, natural ambient sound, no text, no logos, no watermark, no promotional marks",
"duration": 5,
"resolution": "1080p",
"aspect_ratio": "16:9"
}
}
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/text-to-video",
"input": {
"prompt": "A marine researcher kneels beside a glowing tide pool at dawn, gently lifting a small translucent crab with tweezers as waves wash over volcanic rock, soft pink and gold sky, cinematic camera slowly pushing in, natural ambient sound, no text, no logos, no watermark, no promotional marks",
"duration": 5,
"resolution": "1080p",
"aspect_ratio": "16:9"
}
}
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 字段。
| 字段 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
| prompt | string | Yes | — | 字符串。最多 2,500 个字符。指导场景构图、主体动作与镜头调度。 |
| resolution | string | No | 1080p | 字符串。输出分辨率。支持 720p 与 1080p。 |
| duration | integer | No | 5 | 整数。输出时长 3–15 秒。 |
| aspect_ratio | string | No | 16:9 | 字符串。输出画面比例。支持 16:9、9:16、1:1、4:3、3:4。 |
| 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 接收最终任务对象;投递失败时仍可轮询。
端点限制
| 规格 | 值 | 详情 |
|---|---|---|
| 输入模式 | 纯文本提示词 | 提供自然语言提示词描述场景、动作与运镜。 |
| 输出规格 | MP4 视频文件 | 异步生成返回 task_id;完成后提供视频下载地址。 |
| 分辨率 | 720p / 1080p | 默认预选 1080p。 |
| 时长 | 3–15 秒 | 默认预选 5 秒。 |
| 画面比例 | 16:9 / 9:16 / 1:1 / 4:3 / 3:4 | 默认预选 16:9。 |
| 计费方式 | 按秒计费 | 720p 16 credits/s,1080p 32 credits/s。 |
相关模型
Happy Horse 1.0 Text to Video API 常见问题
Happy Horse 1.0 Text to Video API 是什么?
Happy Horse 1.0 Text to Video 是阿里巴巴研发的文本生成视频模型。它根据自然语言提示词生成 3–15 秒电影感短视频,支持 720p 与 1080p 两种清晰度及 5 档主流画幅,具备精确的提示词运镜遵循与动作稳定性。基于先进的视频扩散生成机制,它在严格保持人物形态与场景透视连贯的同时,呈现细腻逼真的动态光影与运镜轨迹。你可以通过 API 进行程序化调用,也可以在上方体验区直接在线试用。
Happy Horse 1.0 Text to Video 支持哪些画幅比例?
支持 16:9、9:16、1:1、4:3 与 3:4 五种标准画幅比例。横屏宣传片推荐选择 16:9,社交媒体移动端推荐选择 9:16,产品构图或艺术画卷可灵活选用方形或复古比例。
Happy Horse 1.0 Text to Video 单次可以生成 15 秒吗?
可以。duration 参数支持在 3 至 15 秒的整秒区间内自由指定,体验区默认预选 5 秒。无论选择何种时长,均保持一致的提示词运镜解析与动作连贯性。
Happy Horse 1.0 Text to Video 支持 1080p 输出吗?
支持。可通过 resolution 参数在 720p 与 1080p 之间自由切换。快速验证方案时可选择 720p,正式交付与高细节商业需求时可选择 1080p。
如何用提示词控制 Happy Horse 1.0 Text to Video 的运镜?
建议按时序将主体外观、动作变化与镜头调度(如 slow zoom-in, smooth panning, low-angle tracking)明确写出,避免在提示词中堆砌相互矛盾的方向指令。
Happy Horse 1.0 Text to Video 可以用 seed 复现结果吗?
可以。传入 0 到 2147483647 的整数 seed 可以固定底层随机噪声基底。在保持相同的提示词、分辨率与画幅下,有助于复现相似镜头或针对细节微调。
什么时候该选用 Happy Horse 1.0 Text to Video?
当创意完全由文字灵感或剧本文案起步、尚未具备任何静止视觉参考时,应选用 Text to Video;如果已有明确的静态开场图像,则推荐选用 Image to Video。















