许多 Happy Horse 1.1 的开发者文档默认读者只使用 JavaScript,但这篇指南不是这样。下面将通过 Python 和 curl 演示如何在 Muapi 上调用 Happy Horse 1.1 图生视频端点,内容包括完整输入架构、真实错误处理、关于开源状态的明确说明,以及可以据此规划预算的价格信息。如果你正在评估替代方案,Seedance 2.5 API 指南介绍了最接近的竞品模型。
Happy Horse 1.1 是什么?
Happy Horse 1.1 是 Alibaba ATH AI Innovation Unit 推出的视频生成模型。该团队过去被称为 Taotian Future Life Lab,由前 Kuaishou 副总裁 Zhang Di 领导。模型最初匿名发布,后来由 CNBC 的报道归属于 Alibaba。它采用 150 亿参数的统一 Transformer 架构,支持原生音视频同步和多语言口型同步;最大的差异点在于音频与动作会联合生成,而不是在视频完成后再拼接。
它曾在 Artificial Analysis Video Arena 排行榜上达到第 1 名,超过了 Sora、Veo 和 ByteDance Seedance 2.0。如果想了解这场竞争的背景,可以阅读我们的 Seedance 2.0 对比 Kling 3.0 分析。该模型家族包含四个端点:图生视频、参考图生视频、文生视频和视频编辑。本文重点介绍图生视频端点,它可以将一张静态图片制作成带同步音频和口型同步的 1080p 视频。
设置:身份验证与 Muapi 客户端
先从 Muapi 控制台获取 API 密钥,然后将它导出,避免密钥进入源代码管理:
export MUAPI_KEY="your_api_key_here"
所有请求都要在 Authorization 请求头中使用 Bearer token,并发送到 https://muapi.ai/api。Python 只需要安装 requests:
pip install requests
不需要 SDK。该端点是普通的异步 REST 队列,因此下面的 curl 方式同样适用于不使用 SDK 的开发者。
逐项说明图生视频输入架构
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
images_list | string[] | 是 | — | 单元素数组:一个 JPEG/PNG/WEBP URL。图片短边必须 ≥400px,且 ≤10 MB |
prompt | string | 否 | "" | 动作与镜头指导 |
aspect_ratio | enum | 否 | 16:9 | 16:9、9:16、1:1、4:3、3:4 |
duration | integer | 否 | 5 | 3–15 秒 |
唯一的硬性要求是 images_list。即使它只接受一张图片,也必须传入数组——使用一个元素的列表,而不是单独的字符串。
提交请求:Python 与 curl
流程是:向端点发送 POST,接收 request_id,然后轮询结果端点,直到 status 变为 completed。输出会返回一个包含 url、content_type、file_name、file_size、width、height、fps、duration 和 num_frames 的 video 文件对象,以及实际使用的 seed。
import os, time, requests
API_KEY = os.environ["MUAPI_KEY"]
BASE = "https://muapi.ai/api"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
def submit_i2v():
payload = {
"images_list": ["https://example.com/portrait.jpg"],
"prompt": "The camera slowly pushes in as she turns her head and smiles, soft wind moves her hair",
"aspect_ratio": "16:9",
"duration": 5,
}
r = requests.post(
f"{BASE}/v1/happy-horse-1.1-image-to-video",
headers=HEADERS, json=payload, timeout=30,
)
r.raise_for_status()
return r.json()["request_id"]
def poll(request_id, timeout_s=600, interval=5):
deadline = time.time() + timeout_s
while time.time() < deadline:
r = requests.get(
f"{BASE}/v1/predictions/{request_id}/result",
headers=HEADERS, timeout=30,
)
r.raise_for_status()
data = r.json()
status = data.get("status")
if status == "completed":
return data["output"]
if status in ("failed", "error"):
raise RuntimeError(f"Job failed: {data.get('error', 'unknown error')}")
time.sleep(interval)
raise TimeoutError(f"Job {request_id} did not finish in {timeout_s}s")
if __name__ == "__main__":
rid = submit_i2v()
out = poll(rid)
video = out["video"]
print("URL: ", video["url"])
print("Size: ", video["width"], "x", video["height"])
print("FPS: ", video["fps"])
print("Duration: ", video["duration"], "s")
print("Frames: ", video["num_frames"])
print("Seed used:", out["seed"])
如果你更喜欢直接使用 curl,非 SDK 开发者可以这样调用:
# 1. Submit
REQ=$(curl -s -X POST https://muapi.ai/api/v1/happy-horse-1.1-image-to-video-1080p \
-H "Authorization: Bearer $MUAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"images_list": ["https://example.com/portrait.jpg"],
"prompt": "The camera slowly pushes in as she turns and smiles",
"aspect_ratio": "16:9",
"duration": 5
}' | grep -o '"request_id":"[^"]*"' | cut -d'"' -f4)
# 2. Poll until completed
curl -s https://muapi.ai/api/v1/predictions/$REQ/result \
-H "Authorization: Bearer $MUAPI_KEY"
如果不想主动轮询,可以在提交时提供 webhook URL,Muapi 会将完成后的结果 POST 到你的回调端点。
错误处理与生产模式
上面的轮询循环已经覆盖了许多 JavaScript 快速入门示例会忽略的内容:明确处理 failed/error 状态,并设置墙钟超时,避免卡住的任务永远阻塞 worker。生产环境还应加入以下习惯:
- 预先验证图片。 提交前检查图片短边是否 ≥400px、文件是否 ≤10 MB。快速失败比等待队列拒绝更好。
- 只重试瞬时错误。 对 429/5xx 响应使用指数退避重试;输入本身有问题导致任务
failed时,不要自动用同样的输入重试。 - 固定 seed 以便复现。 需要进行 A/B 对比或回归测试时,传入固定的
seed(0 到 2147483647)。输出会返回实际使用的 seed,之后可以复现同一片段。 - 批量处理时并行化。 每个请求彼此独立,因此批量任务可以并发提交并收集
request_id,再将它们作为一个池统一轮询,而不是串行处理。
图生视频的提示词设计
在图生视频中,图片已经定义了场景,因此不要把 2500 个字符浪费在重新描述画面上。把重点放在动作与镜头上,例如:"slow dolly-in"、"subject turns toward camera"、"leaves drift left to right"、"handheld micro-shake"。由于 Happy Horse 1.1 能生成同步音频并支持多语言口型同步,你也可以提示对白或环境音,模型会让嘴部动作与之匹配。提示词要简洁,并按主体动作、镜头运动、氛围的顺序组织。
Happy Horse 是开源的吗?澄清常见误解
尽管网上广泛流传“完全开源”的说法,目前没有发布模型权重。官方 GitHub 和 Hugging Face 页面都显示“coming soon”,这意味着该模型目前是闭源的,只能通过 API 使用。如果自托管是硬性要求,Happy Horse 1.1 目前不符合条件。
点击链接时要保持谨慎。网上有未经授权的 happyhorse.* 克隆域名,也有冒充官方的 brooks376/Happy-Horse-1.0 GitHub 仓库;它们都不是官方来源,也没有真正的模型权重。只应把 Alibaba 的第一方渠道和 Muapi 上的模型页面视为权威来源,价格则以 Muapi 定价页面为准。
价格与成本规划
成本会随时长和分辨率变化。在 Muapi 上,Happy Horse 1.1 的所有模式都按输出视频秒数计费:
- 1080p: 每秒 $0.18
- 720p: 每秒 $0.14
因此,默认 5 秒的 1080p 片段费用为 $0.90,同样时长的 720p 片段为 $0.70;15 秒 1080p 片段为 $2.70。可以用 费率 × 时长 估算单片段成本,先用 720p 原型验证,再为最终渲染切换到 1080p——模型和运动质量相同,但成本约为一半。你可以先在 Happy Horse 1.1 Playground 中免费试用,再查看 Muapi 方案页了解当前费率和方案限制。
FAQ
Happy Horse 1.1 是开源的吗?我可以下载权重并自托管吗?
不可以。尽管有“完全开源”的宣传,目前没有发布任何权重。官方 GitHub 和 Hugging Face 页面写着“coming soon”,所以模型目前是闭源且仅提供 API。不要使用未经授权的克隆域名或虚假的 brooks376/Happy-Horse-1.0 仓库,它们没有真正的权重。
Happy Horse 有哪些端点?如何通过 API 访问?
共有四个:图生视频、参考图生视频、文生视频和视频编辑。它们都通过 https://muapi.ai/api 上的异步 REST 队列访问,并使用 Bearer token。提交 POST 请求后,轮询 GET /v1/predictions/{request_id}/result,也可以使用 webhook 回调。
不同的时长和分辨率如何计算 Happy Horse 1.1 的价格?
价格按输出秒数计算。在 Muapi 上,1080p 为每秒 $0.18,720p 为每秒 $0.14,因此成本等于 费率 × 时长。5 秒 1080p 为 $0.90,5 秒 720p 为 $0.70。当前费率请在 Muapi 方案页确认。




