HappyHorse 1.1
把一张或多张图片制作成 3~15 秒的 720p 或 1080p 视频。必须提供图片。
- 异步:创建调用返回任务 ID,任务成功后即可获得视频。
- 仅支持图生视频:
images必填(1 到 9 个链接)。没有文生视频模式。 - 片段长度 3 到 15 秒;
duration为整数秒。 - 按所选分辨率和请求的秒数计费。失败的任务不收费。
在调试窗口里打开本模型,填入你的 BeatAPI API 密钥即可创建任务。调用是真实的,费用从你自己的余额中扣除。
模型 ID
两个 HappyHorse 模型共用此端点,接受完全相同的请求。下表数值直接取自网关契约。
接口与鉴权
POST https://api.beatapi.io/v1/videos/tasks
Authorization
string
必需
你的 BeatAPI API 密钥,以 Bearer <BEATAPI_API_KEY> 形式发送。在控制台创建密钥。密钥只能保存在你的服务端,不要放进浏览器或移动端应用。
请求体使用 JSON,并设置 Content-Type: application/json。Idempotency-Key 为可选:每个逻辑请求发送一个唯一值(最长 255 个字符),仅在重试完全相同的请求体时复用。24 小时内,用相同的键和请求体重试会再次返回第一次的响应,并带上 Idempotent-Replayed: true;相同的键搭配不同的请求体则返回 409 idempotency_conflict。非 2xx 的响应不会被保存,因此 400 或 402 之后的重试会重新执行。
请求流程
等待任务完成
调用 GET /v1/tasks/{task_id},两次调用之间等待 data.poll_after_seconds 秒(图片 5 秒,视频 8 秒),直到 status 为 succeeded 或 failed。也可以为 task.succeeded 和 task.failed 注册 Webhook;仍需保留轮询作为兜底,因为因处理超时而终止的任务不会发送事件。
输入模式
请求参数
model
string
必需
要运行的模型。
取值:happyhorse-1.1
取值有误时
- 缺失:
"model" is required - 向此端点发送了图片模型:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
prompt
string
必需
视频中发生的内容:动作、表情和镜头。
长度:1–5000 个字符
- 长度按字符计算(一个中日韩文字算一个字符)。
取值有误时
- 缺失:
"prompt" is required - 为空或超出长度上限:
"prompt" has an unsupported length - 不是字符串:
"prompt" must be a string
images
string[]
必需
要让其动起来的图片,或按期望使用顺序排列的多张图片。必填。
数量:1–9
每一项都必须是公网 https:// 链接。本地文件请先上传(POST /v1/files),再传入返回的 data.url。
- 每个链接必须是公开的
https://URL。创建任务时,网关不会下载或检测这些文件。 - 此模型没有文生视频模式:不带
images的请求会被拒绝。 - 省略
aspect_ratio和resolution时沿用默认值(16:9、720p),因为网关不会从图片中读取这两项。请自行指定想要的画面形状。
取值有误时
- 缺失:
"images" is required - 超过 9 个链接:
"images" accepts at most 9 items - 空数组:
"images" requires at least 1 item - 不是数组:
"images" must be an array - 不是 https:// 链接:
"images[0]" must be a public HTTPS URL
duration
integer
可选默认值: 5
视频长度,单位为秒,须为整数。
默认值:5
范围:3–15
- 省略时使用
5并按其计费。 - 按秒计费(见“计费”),因此这是影响价格的主要因素。
取值有误时
- 超出 3~15、不是整数,或以字符串发送:
"duration" is outside its supported range
aspect_ratio
string
可选默认值: 16:9
视频的宽高比,格式为 宽:高。
可选值:16:9, 9:16, 1:1, 4:3, 3:4
默认值:16:9
- 省略时使用
16:9,图片为竖图时也一样。 - 此模型不提供
adaptive。
取值有误时
- 取值不在列表中:
"aspect_ratio" must be one of: [16:9 9:16 1:1 4:3 3:4]
resolution
string
可选默认值: 720p
输出分辨率。1080p 每秒的价格高于 720p。
可选值:720p, 1080p
默认值:720p
- 仅限小写。
取值有误时
- 取值不在列表中(例如
480p或720P):"resolution" must be one of: [720p 1080p]
输入素材限制
网关会在创建任务之前读取每一项输入,超出这些限制的输入会被拒绝,并返回点名该输入的 400 bad_request。不扣费。
- 创建任务时网关不会读取你的图片文件,因此此模型不检查大小、分辨率或格式限制;只适用上文的字段规则。
- 模型无法获取或使用的链接会在任务创建后导致任务失败,通常报
bad_request(输入被内容审核拒绝时为content_policy_violation),并全额退款。 - 有本地文件?用
POST /v1/files上传(png、jpg、jpeg 或 webp;最大 50 MB),再传入返回的data.url。
此模型不接受的字段
发送下列任一字段会在扣费之前被拒绝,而不是被忽略:
reference_images、reference_videos、reference_audios、generate_audio、seed、quality、sound、task_type、output_format、watermark,以及其他视频模型的字段 →field "reference_videos" is not supported by model happyhorse-1.1(其中是你发送的字段名)。图片请放进images。- 视频端点完全不认识的字段 →
unknown field: <name>。
请求示例
图生视频
由一张图片生成的 5 秒 720p 竖屏片段。
多张图片
两张图片按列表顺序传给模型,生成 10 秒的 1080p 片段。
响应
创建任务(201)
任务对象。任务成功之前 output 为 null。标注“运行中”的字段会在任务结束后消失。
任务完成
GET /v1/tasks/{task_id} 返回 HTTP 200 和 status: "succeeded",结果在 data.output 中。
输出字段
任务失败
失败的任务在 GET /v1/tasks/{task_id} 上仍然是 HTTP 200:失败信息在响应体里。预扣金额会全额退回,因此不会扣费。
完整示例
创建任务,按服务端给出的轮询提示等待,然后打印结果链接。请在环境变量中设置 BEATAPI_API_KEY 并安装 requests。
计费
- 价格取决于分辨率和请求的秒数(
duration,省略时为 5)。1080p 每秒的价格高于 720p。aspect_ratio和图片数量不影响价格。 - 下表以 8 秒片段为例;其他时长按对应分辨率的同一单价逐秒计费。
- 价格在创建任务时预留;
data.usage.billable_duration_seconds显示计费所依据的秒数。 - 失败的任务(包括提交后被内容审核拒绝的任务)全额退款。
当前牌价,与价格页一致。享有协商折扣的账户实付更低;任务的 data.usage 始终显示实际扣费金额。
常见错误
HTTP 错误速查
任务生成之前的错误会以非 2xx 响应返回,不扣费。请根据 error.code 或 error.retryable 判断处理方式;message 会指出问题所在。完整列表和重试策略见错误码。
身份验证
Send your API key as Authorization: Bearer <BEATAPI_API_KEY>.
请求头
请求体使用 JSON,并设置 Content-Type: application/json。Idempotency-Key 为可选:每个逻辑请求发送一个唯一值(最长 255 个字符),仅在重试完全相同的请求体时复用。24 小时内,用相同的键和请求体重试会再次返回第一次的响应,并带上 Idempotent-Replayed: true;相同的键搭配不同的请求体则返回 409 idempotency_conflict。非 2xx 的响应不会被保存,因此 400 或 402 之后的重试会重新执行。
请求
要让其动起来的图片,或按期望使用顺序排列的多张图片。必填。
数量:1–9
每一项都必须是公网 https:// 链接。本地文件请先上传(POST /v1/files),再传入返回的 data.url。
- 每个链接必须是公开的
https://URL。创建任务时,网关不会下载或检测这些文件。 - 此模型没有文生视频模式:不带
images的请求会被拒绝。 - 省略
aspect_ratio和resolution时沿用默认值(16:9、720p),因为网关不会从图片中读取这两项。请自行指定想要的画面形状。
取值有误时
- 缺失:
"images" is required - 超过 9 个链接:
"images" accepts at most 9 items - 空数组:
"images" requires at least 1 item - 不是数组:
"images" must be an array - 不是 https:// 链接:
"images[0]" must be a public HTTPS URL
要运行的模型。
取值:happyhorse-1.1
取值有误时
- 缺失:
"model" is required - 向此端点发送了图片模型:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
视频中发生的内容:动作、表情和镜头。
长度:1–5000 个字符
- 长度按字符计算(一个中日韩文字算一个字符)。
取值有误时
- 缺失:
"prompt" is required - 为空或超出长度上限:
"prompt" has an unsupported length - 不是字符串:
"prompt" must be a string
视频的宽高比,格式为 宽:高。
可选值:16:9, 9:16, 1:1, 4:3, 3:4
默认值:16:9
- 省略时使用
16:9,图片为竖图时也一样。 - 此模型不提供
adaptive。
取值有误时
- 取值不在列表中:
"aspect_ratio" must be one of: [16:9 9:16 1:1 4:3 3:4]
视频长度,单位为秒,须为整数。
默认值:5
范围:3–15
- 省略时使用
5并按其计费。 - 按秒计费(见“计费”),因此这是影响价格的主要因素。
取值有误时
- 超出 3~15、不是整数,或以字符串发送:
"duration" is outside its supported range
输出分辨率。1080p 每秒的价格高于 720p。
可选值:720p, 1080p
默认值:720p
- 仅限小写。
取值有误时
- 取值不在列表中(例如
480p或720P):"resolution" must be one of: [720p 1080p]
响应
任务对象。任务成功之前 output 为 null。标注“运行中”的字段会在任务结束后消失。

