muapi Logomuapi Logo
Happy Horse 1.1 API 指南

Happy Horse 1.1 API 指南

M
Muapi 团队
2026-06-22约 6 分钟阅读

许多 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 名,超过了 SoraVeoByteDance 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_liststring[]单元素数组:一个 JPEG/PNG/WEBP URL。图片短边必须 ≥400px,且 ≤10 MB
promptstring""动作与镜头指导
aspect_ratioenum16:916:99:161:14:33:4
durationinteger53–15 秒

唯一的硬性要求是 images_list。即使它只接受一张图片,也必须传入数组——使用一个元素的列表,而不是单独的字符串。

提交请求:Python 与 curl

流程是:向端点发送 POST,接收 request_id,然后轮询结果端点,直到 status 变为 completed。输出会返回一个包含 urlcontent_typefile_namefile_sizewidthheightfpsdurationnum_framesvideo 文件对象,以及实际使用的 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 方案页确认。

M

Muapi AI 洞察

用智能代理能力赋能创作者。

关注

更多 Muapi Muapi

查看全部 →