curl --request POST \
--url https://api.poyo.ai/api/generate/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "happy-horse",
"callback_url": "https://your-domain.com/callback",
"input": {
"prompt": "A small robot barista prepares coffee in a sunlit Tokyo cafe, cinematic camera movement, warm ambient sound.",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
}
'{
"code": 200,
"data": {
"task_id": "task-unified-1757165031-uyujaw3d",
"status": "not_started",
"created_time": "2026-04-27T10:30:00"
}
}Alibaba
Happy Horse
The Happy Horse API generates 3–15 second 720p or 1080p video from text, one first frame, or up to nine reference images, or edits a source video while keeping or replacing its audio.
POST
/
api
/
generate
/
submit
curl --request POST \
--url https://api.poyo.ai/api/generate/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "happy-horse",
"callback_url": "https://your-domain.com/callback",
"input": {
"prompt": "A small robot barista prepares coffee in a sunlit Tokyo cafe, cinematic camera movement, warm ambient sound.",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
}
'{
"code": 200,
"data": {
"task_id": "task-unified-1757165031-uyujaw3d",
"status": "not_started",
"created_time": "2026-04-27T10:30:00"
}
}- After submission, a
task_idwill be returned. If you provided acallback_url, when the task status becomesfinishedorfailed, a POST request will be sent to thecallback_url. - Regardless of whether
callback_urlis provided, you can retrieve the result through the unified Query Task Status endpoint.
happy-horse supports text-to-video, image-to-video, reference-to-video, and video-edit through one public model ID.
Models
- happy-horse - Alibaba Happy Horse 1.0 video generation and editing
Input modes
Text to Video
Send aprompt without image or video input fields. Use aspect_ratio, resolution, and duration to control the output.
Image to Video
Send a single-itemimage_urls array. The image is used as the first frame. prompt is optional in this workflow.
Reference to Video
Sendreference_image_urls with 1-9 images and a required prompt. Reference the images in prompt text as character1, character2, and so on, matching the order of reference_image_urls.
Do not combine reference_image_urls with image_urls.
Video Edit
Sendvideo_url with a required edit prompt. Optional reference_image_urls can guide the edit; refer to them as @Image1, @Image2, and so on. audio_setting controls whether Happy Horse decides audio handling automatically or preserves the original audio.
The source video must be 3-60 seconds. Output follows the source video and truncates longer input to the first 15 seconds.
Required parameters
- model:
happy-horse - input.prompt: Required for text-to-video, reference-to-video, and video-edit. Optional for image-to-video. Maximum length is 5,000 non-Chinese characters or 2,500 Chinese characters.
- input.video_url: Required for video-edit.
- input.reference_image_urls: Required for reference-to-video.
Optional parameters
- image_urls: Single-item first-frame image URL array for image-to-video
- reference_image_urls: 1-9 images for reference-to-video, or up to 5 optional images for video-edit
- aspect_ratio: Text-to-video and reference-to-video only.
16:9,9:16,1:1,4:3, or3:4. Default is16:9 - resolution:
720por1080p. Default is1080p - duration: Integer seconds from
3to15for text-to-video, image-to-video, and reference-to-video. Ignored for video-edit - audio_setting: Video-edit only.
autoororigin. Default isauto - seed: Optional integer from
0to2147483647 - enable_safety_checker: Optional boolean
Notes
image_urlsmust resolve to exactly one image and is only for image-to-video.reference_image_urlsselects reference-to-video unlessvideo_urlis present, in which case it is treated as optional video-edit reference imagery.- For text-to-video and reference-to-video, omit
video_urland useaspect_ratio. - For video-edit, omit
duration; the backend probes the source video duration for validation.
Authorizations
All API endpoints require Bearer Token authentication
Get your API Key:
Visit the API Key Management Page to get your API Key
Add it to the request header:
Authorization: Bearer YOUR_API_KEY
Body
application/json
