# Alibaba | HappyHorse 1.1 | Reference to Video HappyHorse 1.1 Reference-to-Video turns reference images into 1080p videos that keep characters and scenes consistent across shots, with synchronized audio. ## API Information - **Model Slug:** alibaba-happyhorse-1-1-reference-to-video - **Branded URL:** https://www.eachlabs.ai/alibaba/happyhorse-1-1/alibaba-happyhorse-1-1-reference-to-video - **Provider:** Alibaba - **Category:** Reference to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.14–$0.18 per second, depending on resolution - **Estimated Processing Time:** 220 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/alibaba-happyhorse-1-1-reference-to-video ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.14–$0.18 per second, depending on resolution - **Pricing Details:** 720P: $0.14 - **Pricing Details:** default: $0.18 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text description of the video. Use 'character1', 'character2', ... in your prompt to reference each entry of Reference Images by array order. Supports any language. Maximum 5,000 non-Chinese characters or 2,500 Chinese characters; excess is automatically truncated. | | reference_images | array | Yes | - | - | 1-9 reference images. Each image's order in this list maps to character1, character2, ... in the prompt. Format: JPEG, JPG, PNG, WEBP. Shortest side at least 400 px (720P or higher recommended). Max 10 MB per image. | | resolution | string | No | 1080P | 720P, 1080P | Output video resolution. 720P: lower cost, faster generation. 1080P: higher quality (default). | | ratio | string | No | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4 | Output video aspect ratio. 16:9: landscape (default). 9:16: portrait/vertical. 1:1: square. 4:3: standard. 3:4: vertical standard. | | duration | integer | No | 5 | 3–15 | Video duration in seconds. Range: 3-15. Each second is billed separately. Default: 5. | | seed | integer | No | - | 0–2147483647 | Seed for reproducibility. Range [0, 2147483647]. Same seed produces similar (not identical) results because generation is probabilistic. Random if omitted. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "alibaba-happyhorse-1-1-reference-to-video", "input": { "prompt": "@character2 stands in a clean white studio, elegantly holding @character1. She presents the bag to the camera with a soft confident smile, slowly turning it to show its design. Minimal movement, she stays facing the camera. Soft even studio lighting, seamless white background, professional product commercial look. Slow smooth camera push-in. Photorealistic, cinematic, no dialogue. ", "reference_images": [ "https://cdn-us.eachlabs.ai/defaults/af89e712e5004c329df12878e2150913.png", "https://cdn-us.eachlabs.ai/defaults/bc65354c38af4c84a0dc29bb04f14dc9.png" ] } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **alibaba-happyhorse-1.1-reference-to-video Overview** **alibaba-happyhorse-1.1-reference-to-video** is a reference-to-video model from Alibaba that turns multiple reference images into a single generated video with consistent characters and synchronized native audio. It is designed for creators who need motion-driven output that preserves identity, style, and scene continuity across frames. In each::labs, this model is positioned as a practical choice for multilingual video creation because its strongest differentiator is **reference-based character consistency** combined with **native audio and lip-sync support**. Within the Alibaba **Happy Horse 1.1** family, the model serves teams that want to animate product shots, avatars, or brand characters without manually stitching scenes together. The official product name used in documentation is **Happy Horse 1.1**, while **alibaba-happyhorse-1.1-reference-to-video** functions as the platform-facing model identifier. This makes it useful for fast concept videos, localized talking-head content, and repeatable visual assets across campaigns. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.