HappyHorse 1.1 is Alibaba's June 2026 update to HappyHorse. It generates 3-15 second clips at 720p or 1080p from text, one first-frame image, or 1-9 reference images. The main addition is addressable references: you name them in the prompt as [Image 1], [Image 2] and so on, which makes clear which character wears what and who does what. Nine aspect ratios, from 21:9 to 9:21, are available in text and reference modes. The rate depends only on resolution and duration.
Best for
- Scenes with two or three distinct characters from reference photos
- Ultra-wide 21:9 cinematic shots and tall 9:21 formats
- Product placement using a product image plus a scene image
- Feed videos in 4:5
Prompting tips
- Refer to references explicitly: "[Image 1] hands the cup from [Image 2] to [Image 3]".
- Prompts can be up to 5,000 characters in Latin scripts, or 2,500 in Chinese, Japanese or Korean.
- Use
image_urlfor image-to-video orimage_urlsfor references, not both. - The default resolution is 720p, so set 1080p for finals.
FAQ
How much does HappyHorse 1.1 cost?
HappyHorse 1.1 is priced at from $0.399 per second. Only resolution and duration change the cost, and failed generations are not charged.
How long can HappyHorse 1.1 videos be?
From 3 to 15 seconds, at 720p or 1080p.
Does HappyHorse 1.1 edit existing videos?
No. Video restyling is available on HappyHorse 1.0.
How to call HappyHorse 1.1 via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse-1.1",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "happyhorse-1.1",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "happyhorse-1.1",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Parameters
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt | string | ≤ 5000 chars | |
aspect_ratio | string | 16:9 9:16 3:4 4:3 4:5 5:4 1:1 9:21 21:9 | 16:9 |
resolution | string | 720p 1080p | 720p |
duration | integer | 3-15 | 5 |
image_url | string | ||
image_urls | array | max 9 |
The same schema is available from GET /v1/models/happyhorse-1.1.









