Happy Horse 1.1
Alibaba Happy Horse 1.1 — text-to-video, image-to-video, and reference-to-video (up to 9 images) with stronger motion, character consistency, and synced audio.
POST /v2/videos/generate — model: "happyhorse-1.1"
Happy Horse 1.1 is the upgrade to Alibaba's Happy Horse video model, with stronger motion expressiveness, better character consistency, and synchronized audio. It runs in three modes depending on how many images you provide. Served across Replicate and Alibaba Cloud (DashScope) with automatic failover.
The mode is selected automatically from the number of images:
- No images → text-to-video. Use
aspect_ratioto control the shape. - One image → image-to-video. The model animates it as the first frame and adopts its aspect ratio (
aspect_ratiois ignored). - Two to nine images → reference-to-video. The model keeps the subjects and scenes from your references; address them in the prompt as
[Image 1],[Image 2], and so on.
See Video Generation overview for common request fields, response format, and error codes.
Model-specific parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
happyhorse11Params.images | string[] | No | — | Input images. None = text-to-video, one = image-to-video, two to nine = reference-to-video. JPG, PNG, BMP, or WEBP; each side ≥ 300px. |
happyhorse11Params.resolution | string | No | "1080p" | Output resolution: "720p" or "1080p". |
happyhorse11Params.aspect_ratio | string | No | "16:9" | Text-to-video and reference-to-video. One of "16:9", "9:16", "1:1", "4:3", "3:4". Ignored for image-to-video. |
happyhorse11Params.duration | number | No | 5 | Video duration in seconds (integer, 3–15). |
happyhorse11Params.seed | number | No | — | Random seed (0–2147483647) for reproducible generation. |
Credit cost
Pricing is per second of generated video (credits = rate × duration), by resolution.
| Variant | Credits / second |
|---|---|
720p | 24 |
1080p | 31 |
A 10-second clip at 1080p therefore costs 31 × 10 = 310 credits.
Example result
Once the job is COMPLETED, the result object on GET /v2/jobs/:id looks like:
{
"videoUrl": "https://cdn2.apiframe.ai/videos/b2c3d4e5-f6a7-8901-bcde-f23456789012.mp4"
}See Result format for field details.
Code examples
curl -X POST https://api.apiframe.ai/v2/videos/generate \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A herd of horses thundering across desert dunes, dust trailing behind, golden hour",
"model": "happyhorse-1.1",
"happyhorse11Params": {
"duration": 8,
"resolution": "1080p",
"aspect_ratio": "16:9"
}
}'import requests
response = requests.post(
"https://api.apiframe.ai/v2/videos/generate",
headers={
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
json={
"prompt": "A herd of horses thundering across desert dunes, dust trailing behind, golden hour",
"model": "happyhorse-1.1",
"happyhorse11Params": {
"duration": 8,
"resolution": "1080p",
"aspect_ratio": "16:9",
},
},
)
print(response.json())const response = await fetch("https://api.apiframe.ai/v2/videos/generate", {
method: "POST",
headers: {
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "A herd of horses thundering across desert dunes, dust trailing behind, golden hour",
model: "happyhorse-1.1",
happyhorse11Params: {
duration: 8,
resolution: "1080p",
aspect_ratio: "16:9",
},
}),
});
console.log(await response.json());Reference-to-video
Provide up to nine reference images and refer to them in the prompt as [Image 1], [Image 2], etc.
curl -X POST https://api.apiframe.ai/v2/videos/generate \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "[Image 1] walks through the gate of [Image 2] at dusk, cinematic",
"model": "happyhorse-1.1",
"happyhorse11Params": {
"images": [
"https://example.com/character.jpg",
"https://example.com/castle.jpg"
],
"duration": 6,
"resolution": "1080p",
"aspect_ratio": "16:9"
}
}'Try it
/v2/videos/generateTry it