Skip to main content
alibaba avatar

Happy Horse 1.1 Image to Video API

alibaba/happy-horse/v1.1/image-to-video

Animate a still photo into a 3-15 second video at 720P or 1080P, with audio generated alongside the picture and the output frame shape taken straight from your image.

Priced by resolution

Model Input

Input

The photo to animate. It becomes the opening frame, and the finished clip takes its frame shape from this image, so upload it already cropped to the proportions you want. JPEG, JPG, PNG or WEBP; at least 300 px on each side, aspect ratio between 1:2.5 and 2.5:1, up to 20 MB.

Optional. Describe what happens next - the movement, the camera, any spoken line, and the sound you want. The scene is already fixed by the image, so describe the action rather than re-describing the picture. Any language, up to 5000 characters (2500 for Chinese). Leave it empty to let the model animate the image on its own.

Output video resolution. 720P bills at $0.14 per second of finished video; 1080P (default) bills at $0.18 per second.

Min: 3 - Max: 15

Length of the generated video in whole seconds (3-15). Cost scales directly with this value.

Additional Settings

Customize your input with more control.

Min: 0 - Max: 2147483647

Random seed for reproducible results. Omit for a different clip each run.

You need to be logged in to run this model and view results.
Log in

Model Output

Output

Loading
Generated in 102.078 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1

Model Pricing

Pricing

Model pricing varies by the target resolution of your output video.

720P
$0.14
per second of output video
or around 7 seconds for $1
1080P
$0.18
per second of output video
or around 6 seconds for $1

Happy Horse 1.1 Image to Video API

Happy Horse 1.1 Image to Video is a image-to-video AI model by alibaba. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.18 per second of video.

POST https://queue.modelrunner.run/alibaba/happy-horse/v1.1/image-to-video

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/alibaba/happy-horse/v1.1/image-to-video \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "She lifts the pot of mint to her face and breathes in, then looks to camera and says \u0027gel, çay hazır\u0027 — a warm smile …",
    "duration": 5,
    "resolution": "1080P",
    "start_image_url": "https://media.modelrunner.ai/un2tpPpD15tTkv1AHosEm.jpeg",
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/alibaba/happy-horse/v1.1/image-to-video/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/alibaba/happy-horse/v1.1/image-to-video/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("alibaba/happy-horse/v1.1/image-to-video", {
  input: {
    "prompt": "She lifts the pot of mint to her face and breathes in, then looks to camera and says 'gel, çay hazır' — a warm smile …",
    "duration": 5,
    "resolution": "1080P",
    "start_image_url": "https://media.modelrunner.ai/un2tpPpD15tTkv1AHosEm.jpeg"
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/alibaba/happy-horse/v1.1/image-to-video",
    headers=headers,
    json={
      "prompt": "She lifts the pot of mint to her face and breathes in, then looks to camera and says 'gel, çay hazır' — a warm smile …",
      "duration": 5,
      "resolution": "1080P",
      "start_image_url": "https://media.modelrunner.ai/un2tpPpD15tTkv1AHosEm.jpeg"
    },
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

Input parameters of Happy Horse 1.1 Image to Video
NameTypeRequiredDescription
start_image_urlstring (uri)yesThe photo to animate. It becomes the opening frame, and the finished clip takes its frame shape from this image, so upload it already cropped to the proportions you want. JPEG, JPG, PNG or WEBP; at least 300 px on each side, aspect ratio between 1:2.5 and 2.5:1, up to 20 MB.
promptstringnoOptional. Describe what happens next - the movement, the camera, any spoken line, and the sound you want. The scene is already fixed by the image, so describe the action rather than re-describing the picture. Any language, up to 5000 characters (2500 for Chinese). Leave it empty to let the model animate the image on its own.
resolutionenumnoOutput video resolution. 720P bills at $0.14 per second of finished video; 1080P (default) bills at $0.18 per second. One of: 720P, 1080P. Default: "1080P".
durationintegernoLength of the generated video in whole seconds (3-15). Cost scales directly with this value. Default: 5.
seedintegernoRandom seed for reproducible results. Omit for a different clip each run.

Machine-readable: OpenAPI schema · llms.txt

Use Happy Horse 1.1 Image to Video from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Happy Horse 1.1 Image to Video becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this model with the run_model tool using the endpoint alibaba/happy-horse/v1.1/image-to-video.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run alibaba/happy-horse/v1.1/image-to-video on ModelRunner to generate video”. MCP setup guide.

Model Details

Model Details

Happy Horse 1.1 Image to Video animates a photo you supply: the picture becomes the opening frame and an optional prompt says what happens next. You never pick an aspect ratio: the clip takes its frame shape from the image you upload, so a portrait photo comes back portrait and a widescreen still comes back wide. Clips run 3 to 15 seconds at 720P or 1080P, and audio, including spoken dialogue when the prompt asks for it, is generated alongside the picture in the same pass. Send only an image and it works out the motion on its own.

## Best for - Animating a real photo — a portrait, a product shot, a landscape — with the subject and setting staying as supplied - Vertical clips from phone photos, where the source frame shape must survive intact - Short social and ad cuts that need finished sound without a separate audio pass - Turning an illustration, poster or piece of concept art into a short animation

## Choose another model when - No starting photo, and the whole scene has to come from a written description — use a text-to-video model such as `alibaba/happy-horse/v1.1/text-to-video` - You need to pin a closing frame too — `wan-video/wan/v2.7/image-to-video` accepts both a start and an end image - You have an audio track to drive the performance — `wan-video/wan/v2.7/image-to-video/audio-driven` times lip-sync and motion to that clip - You need to set the output's aspect ratio yourself, or need a guaranteed silent clip — neither is controllable on this alias

## Tips - Spend the prompt on what happens next, not on what the frame already shows — motion, camera and sound are what words can still change - Write any spoken line straight into the prompt — up to 5000 characters, or 2500 for Chinese - Crop the source image to the proportions you want before uploading — it is your only control over the output's shape

## Limitations - Exactly one input image is accepted: JPEG, JPG, PNG or WEBP, at least 300x300 px, between 1:2.5 and 2.5:1, under 20 MB - Output proportions follow the source image closely but are not guaranteed to match it exactly - `duration` takes whole seconds, 3 to 15; anything longer must be rendered as separate shots

To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("alibaba/happy-horse/v1.1/image-to-video", { input: { start_image_url: "https://media.modelrunner.ai/un2tpPpD15tTkv1AHosEm.jpeg", prompt: "She lifts the pot of mint to her face, breathes in, then looks to camera and says 'come in, the tea is ready' as gulls call over the rooftops", resolution: "1080P", duration: 5, }, }); ```