# Happy Horse Reference-to-Video > Generate 1080p video with synchronized native audio from a text prompt and references. Aspect ratios: 16:9, 9:16, 1:1, 4:3, 3:4. Duration: 3–15s. ## Overview - **Endpoint**: `https://api.runflow.io/v1/run/alibaba/happy-horse/reference-to-video` - **Model ID**: `alibaba/happy-horse/reference-to-video` - **Provider**: Alibaba - **License**: commercial - **Last Updated**: 2026-04-28 ## Pricing - **Base price**: $0.14/second - **Note**: Per second of generated video (720p baseline) ### Pricing rules - **resolution**: $0.28/second ## Input Schema ### `prompt` (string, required) Text prompt describing the desired video. Reference subjects from your images using ``character1``, ``character2``, ... up to ``character9`` (the order matches the order of ``image_urls``). Max 2500 characters. ### `image_urls` (image_list, required) Reference images for subject consistency (1-9 images). Formats: JPEG, JPG, PNG, WEBP. Shortest side must be at least 400 px (720P or higher recommended). Max 10 MB each. ### `aspect_ratio` (string, optional) Aspect ratio of the generated video. - **Default**: `16:9` ### `duration` (integer, optional) Output video duration in seconds (3-15). - **Default**: `5` ### `enable_safety_checker` (boolean, optional) Enable content moderation for input and output. - **Default**: `true` ### `resolution` (string, optional) Output video resolution tier. - **Default**: `1080p` ### `seed` (integer, optional) Random seed for reproducibility (0-2147483647). ## Usage Examples ### cURL ```bash curl -X POST https://api.runflow.io/v1/run/alibaba/happy-horse/reference-to-video \ -H "Authorization: Bearer $RUNFLOW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A professional headshot, soft studio lighting" }' ``` ### Python ```python import requests response = requests.post( "https://api.runflow.io/v1/run/alibaba/happy-horse/reference-to-video", headers={"Authorization": "Bearer RUNFLOW_API_KEY"}, json={ "prompt": "A professional headshot, soft studio lighting", }, ) data = response.json() print(data["video"]["url"]) ``` ### JavaScript ```javascript const response = await fetch( "https://api.runflow.io/v1/run/alibaba/happy-horse/reference-to-video", { method: "POST", headers: { "Authorization": "Bearer RUNFLOW_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ prompt: "A professional headshot, soft studio lighting", }), } ); const data = await response.json(); console.log(data.video.url); ``` ## Additional Resources - [Playground](https://www.runflow.io/models/alibaba/happy-horse/reference-to-video) - [API Reference](https://www.runflow.io/models/alibaba/happy-horse/reference-to-video/api) - [Documentation](https://docs.runflow.io) - [OpenAPI](https://api.runflow.io/v1/openapi.json)