# Happy-Horse Video Generation This file is the focused AI-readable context for one UniAll documentation page. URL: https://docs.uniall.ai/models/video/happy-horse Locale: en Markdown: https://docs.uniall.ai/ai/pages/models/video/happy-horse.md Description: Generate videos with Happy-Horse models through UniAll video APIs. Agent guidance: - Use this page when the user is asking about this specific route or model capability. - Preserve endpoint paths, JSON keys, model IDs, and placeholder values exactly. - Treat examples such as `sk-***`, `{BASE_URL}`, and `task_xxx` as safe placeholders, not real secrets. ## Page Markdown Happy-Horse supports text-to-video, image-to-video, multi-reference video generation, and video editing. Use the unified video generation endpoint to submit a task, then poll the task ID until a result URL is available. ## Supported Models | Model | Use case | | --- | --- | | `happy-horse-720p` | Text-to-video, image-to-video, and multi-reference generation at 720p. | | `happy-horse-1080p` | Text-to-video, image-to-video, and multi-reference generation at 1080p. | | `happy-horse-edit-720p` | Video editing at 720p. | | `happy-horse-edit-1080p` | Video editing at 1080p. | ## Endpoint ```http POST /v1/video/generations GET /v1/videos/{task_id} ``` ## Authentication ```http Authorization: Bearer sk-*** Content-Type: application/json ``` ## Request Parameters | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `model` | string | Yes | One of the Happy-Horse public model IDs. | | `prompt` | string | Yes | Prompt text. Maximum source limit: `2500` characters. | | `aspect_ratio` | string | No | `16:9`, `9:16`, `1:1`, `4:3`, or `3:4`. | | `duration` | integer | Conditional | Output seconds. Source range: `3` to `15`. | | `seed` | integer | No | Random seed from `0` to `2147483647`. | | `image` | string | Conditional | Single publicly accessible source image URL. | | `images` | string[] | Conditional | `1` to `9` public reference image URLs. | | `video` | string | Conditional | Source video URL for edit models. | | `reference_image_urls` | string[] | No | Reference images for video editing. | | `audio_setting` | string | No | `auto` or `origin`; default follows the upstream provider. | ## Text-To-Video Example ```bash curl -X POST "{BASE_URL}/v1/video/generations" \ -H "Authorization: Bearer sk-***" \ -H "Content-Type: application/json" \ -d '{ "model": "happy-horse-720p", "prompt": "A cinematic wide shot of a white horse running across a misty grassland at sunrise, realistic motion, soft rim light.", "duration": 4, "aspect_ratio": "16:9", "size": "720p", "seed": 12345 }' ``` ## Image-To-Video Example ```bash curl -X POST "{BASE_URL}/v1/video/generations" \ -H "Authorization: Bearer sk-***" \ -H "Content-Type: application/json" \ -d '{ "model": "happy-horse-1080p", "prompt": "Animate the subject naturally, with subtle camera push-in and realistic cloth movement.", "image": "https://example.com/source-frame.png", "duration": 6, "size": "1080p", "seed": 67890 }' ``` ## Multi-Reference Example ```bash curl -X POST "{BASE_URL}/v1/video/generations" \ -H "Authorization: Bearer sk-***" \ -H "Content-Type: application/json" \ -d '{ "model": "happy-horse-1080p", "prompt": "character1 rides character2 through a futuristic city street, keep both identities consistent.", "images": [ "https://example.com/character1.png", "https://example.com/character2.png" ], "duration": 8, "aspect_ratio": "9:16", "seed": 24680 }' ``` ## Video Editing Example ```bash curl -X POST "{BASE_URL}/v1/video/generations" \ -H "Authorization: Bearer sk-***" \ -H "Content-Type: application/json" \ -d '{ "model": "happy-horse-edit-720p", "prompt": "Change the actor jacket into a red leather jacket while preserving motion, face identity, camera movement, and background.", "video": "https://example.com/source-video.mp4", "reference_image_urls": [ "https://example.com/jacket-reference.png" ], "duration": 4, "size": "720p" }' ``` ## Query Task Status ```bash curl "{BASE_URL}/v1/videos/task_xxx" \ -H "Authorization: Bearer sk-***" ``` ```json { "id": "task_xxx", "task_id": "task_xxx", "object": "video.generation.job", "model": "happy-horse-720p", "status": "completed", "progress": 100, "video_url": "https://example.com/output.mp4" } ``` Poll every 2 to 5 seconds. Stop when `status` is `completed` or `failed`. ## Billing Notes Happy-Horse billing depends on model tier, output resolution, output seconds, and operation type. Video editing can include source video handling. Use the current product pricing surface as the final price source. ## Common Errors - Passing an edit model without `video`. - Requesting a `duration` outside `3` to `15`. - Sending private or expired media URLs. - Passing more than `9` reference images. - Using a 720p model while requesting a 1080p `size`. ## Related Pages - [Video Generation Overview](/models/video/overview) - [Seedance 2.0 Video Generation](/models/video/seedance-2-0) - [Veo 3.1 Video Generation](/models/video/veo-3-1)