> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cdn-fly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HappyHorse 1.0 I2V

> Alibaba DashScope HappyHorse 1.0 image-to-video model. Generate videos from a single first-frame image via an asynchronous task interface.

HappyHorse 1.0 I2V animates a single first-frame image into a short video. Uses an **asynchronous task interface** — submit a task and poll until completion.

## Key Capabilities

* **Image-to-video** — Use one image as the first frame, with text description driving motion
* **Resolution** — 720P / 1080P
* **Aspect ratio** — 16:9, 9:16, 1:1, 4:3, 3:4
* **Duration** — 3–15 seconds
* **Watermark control** — Optionally disable the bottom-right watermark

## Workflow

```
1. POST /v1/video/generations  →  task_id
2. GET  /v1/video/generations/{task_id}  →  Poll until SUCCESS / FAILURE
3. Read data.result_url  (valid for 24 hours)
```

## Quick Example

```bash cURL theme={null}
curl https://dayu.cdn-fly.com/v1/video/generations \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "happyhorse-1.0-i2v",
    "prompt": "Camera slowly zooms in, the scene comes to life",
    "image": "https://example.com/first-frame.png",
    "parameters": {
      "resolution": "720P",
      "duration": 5,
      "watermark": false
    }
  }'
```

```python Python theme={null}
import requests, time

headers = {"Authorization": "Bearer YOUR_API_KEY"}

resp = requests.post(
    "https://dayu.cdn-fly.com/v1/video/generations",
    headers=headers,
    json={
        "model": "happyhorse-1.0-i2v",
        "prompt": "Camera slowly zooms in, the scene comes to life",
        "image": "https://example.com/first-frame.png",
        "parameters": {"resolution": "720P", "duration": 5, "watermark": False}
    }
)
task_id = resp.json()["task_id"]

while True:
    r = requests.get(
        f"https://dayu.cdn-fly.com/v1/video/generations/{task_id}",
        headers=headers,
    ).json()
    if r["data"]["status"] == "SUCCESS":
        print(r["data"]["result_url"])
        break
    if r["data"]["status"] == "FAILURE":
        print(r["data"]["fail_reason"])
        break
    time.sleep(15)
```

> The `image` field accepts a single URL. You can also use the `images: [...]` array form (only the first image is used as the first frame).

## Parameters

| Parameter | Type | Required | Description |
| - | - | - | - |
| `model` | string | Yes | Must be `happyhorse-1.0-i2v` |
| `prompt` | string | Yes | Description of the motion effect |
| `image` | string | Yes | First-frame image URL |
| `resolution` | string | No | `720P` / `1080P`, default `1080P` |
| `ratio` | string | No | `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, default `16:9` |
| `duration` | integer | No | Video duration 3–15 seconds, default `5` |
| `watermark` | boolean | No | Default `true`, set to `false` to disable watermark |
| `seed` | integer | No | Random seed `[0, 2147483647]` |

## Billing

Billed by **resolution tier × user-requested duration**. The pre-charged amount is the final amount. Failed tasks are automatically refunded.

> **[API Reference](/en/api-reference/model-api/alibaba/happyhorse-1.0-i2v)**
>
> HappyHorse 1.0 I2V interactive Playground.

> **[Task Query](/en/guides/model-api/alibaba/happyhorse-task-query)**
>
> Poll task status and retrieve the final video URL.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.