One continuous cinematic medium shot of an adult female glaciologist in a mustard expedition jacket on a safe rocky overlook beside a blue glacier in clear cold daylight. Her uncovered face remains large and readable. Over five seconds she turns slightly toward the camera, quietly says exactly in English, "Listen—the ice is moving.", then listens as a distant deep ice crack rolls across the valley. Slow subtle camera push-in, realistic breath and restrained expression. Accurate visible lip synchronization, soft wind and one distant cracking sound, no music. No collapse or disaster. No logos, brands, advertising, captions, subtitles or watermarks.
Happy Horse 1.1 Text to Video API
alibaba/happyhorse-1.1/text-to-videoHappy Horse 1.1 Text to Video transforms written descriptions into 3–15 second cinematic video clips at 720p or 1080p, with native synchronized audio, multilingual lip-sync across seven languages, and expressive physical motion. It maintains temporal coherence and shot staging across complex scene prompts while generating speech, sound effects, and music in a single forward pass.
Your generated video will appear here
Add your prompt and required media, review the settings, then click Run.
Examples
REST API
Quick Start
Authenticate via API Key, submit prompt instructions, and retrieve the video using the task ID.
Connect to Vidgo API
Create an API Key, store it securely on your server, and set Authorization: Bearer VIDGO_API_KEY.
- Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authentication
- Authorization: Bearer VIDGO_API_KEY
Submit a Generation Task
Configure inputs as shown in the request example with model set to alibaba/happyhorse-1.1/text-to-video.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "alibaba/happyhorse-1.1/text-to-video",
"input": {
"prompt": "One continuous cinematic medium shot of an adult female glaciologist in a mustard expedition jacket on a safe rocky overlook beside a blue glacier in clear cold daylight. Her uncovered face remains large and readable. Over five seconds she turns slightly toward the camera, quietly says exactly in English, \"Listen—the ice is moving.\", then listens as a distant deep ice crack rolls across the valley. Slow subtle camera push-in, realistic breath and restrained expression. Accurate visible lip synchronization, soft wind and one distant cracking sound, no music. No collapse or disaster. No logos, brands, advertising, captions, subtitles or watermarks.",
"duration": 5,
"resolution": "1080p",
"seed": 11001,
"aspect_ratio": "16:9"
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Await Results
Poll with task_id while status is not_started or running. Stop at finished or failed; read data.files[].file_url on success or data.error_message on failure.
Track Status
GET https://api.vidgo.ai/api/generate/status/{task_id}Poll every 2 seconds, backing off for extended jobs. Continue only while not_started or running. Alternatively provide callback_url.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "NPWT1EXYV382D336",
"status": "running",
"created_time": "2026-09-21T17:16:09"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}Complete Runnable Example
Expand to inspect complete code including status checks, task_id validation, polling, and timeout boundaries.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "alibaba/happyhorse-1.1/text-to-video",
"input": {
"prompt": "One continuous cinematic medium shot of an adult female glaciologist in a mustard expedition jacket on a safe rocky overlook beside a blue glacier in clear cold daylight. Her uncovered face remains large and readable. Over five seconds she turns slightly toward the camera, quietly says exactly in English, \"Listen—the ice is moving.\", then listens as a distant deep ice crack rolls across the valley. Slow subtle camera push-in, realistic breath and restrained expression. Accurate visible lip synchronization, soft wind and one distant cracking sound, no music. No collapse or disaster. No logos, brands, advertising, captions, subtitles or watermarks.",
"duration": 5,
"resolution": "1080p",
"seed": 11001,
"aspect_ratio": "16:9"
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneInput Parameters
Available request parameters, data types, and default values. The top-level model field is also required.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| prompt | string | Yes | — | Up to 2500 Unicode characters after trimming surrounding whitespace. A nonblank prompt is required. |
| resolution | string | No | 1080p | 720p or 1080p. Default: 1080p. |
| duration | integer | No | 5 | Integer from 3 to 15 seconds. Default: 5. |
| aspect_ratio | string | No | 16:9 | Supported values: 21:9, 16:9, 4:3, 1:1, 3:4, 4:5, 5:4, 9:16, 9:21. Default: 16:9. |
| seed | integer | No | — | Optional integer from 0 to 2147483647. Omitted when not specified. |
| enable_safety_checker | boolean | No | — | Optional boolean. Omitted when not specified. |
Response Fields
Task submission returns a task_id; status queries yield lifecycle progress and video assets.
| Field | Type | Description |
|---|---|---|
| code | integer | Business response code, 200 on success. |
| data.task_id | string | Unique task identifier used to track and poll progress. |
| data.status | string | Lifecycle state: not_started, running, finished, or failed. |
| data.progress | integer | Generation completion percentage (0–100). |
| data.files[].file_url | string | Public URL of the generated video asset. |
| data.files[].file_type | string | File type string, e.g., video. |
| data.error_message | string | null | Failure details when status equals failed. |
Task Lifecycle
Continue polling while in not_started or running. Conclude when finished or failed is reached.
not_startedTask is accepted in the queue and awaiting execution.
runningGeneration is actively in progress. Continue polling.
finishedTask completed successfully. Read video from data.files[].file_url.
failedGeneration failed. Read data.error_message and stop polling.
Polling & Error Handling
- AuthenticationIf HTTP 401 is returned, verify the Bearer API key in the Authorization header.
- ValidationIf HTTP 400 is returned, verify required parameters, valid value ranges, and available credits.
- Network & TimeoutIf status polling encounters a network timeout, retain the task_id and retry the query.
- Polling FrequencyPoll every 2 seconds initially, gradually backing off for longer generations.
- Terminal StatesOnly continue polling on not_started or running. Halt on finished or failed.
- Callback SupportProvide callback_url in the request payload to receive final task payloads via webhook.
Endpoint Specifications
| Specification | Value | Details |
|---|---|---|
| prompt | 2500 | Up to 2500 Unicode characters after trimming surrounding whitespace. A nonblank prompt is required. |
| resolution | 1080p | 720p or 1080p. Default: 1080p. |
| duration | 5 | Integer from 3 to 15 seconds. Default: 5. |
| aspect_ratio | 16:9 | Supported values: 21:9, 16:9, 4:3, 1:1, 3:4, 4:5, 5:4, 9:16, 9:21. Default: 16:9. |
Happy Horse 1.1 Text to Video
Happy Horse 1.1 Text to Video generates complete video clips with native synchronized sound from text prompts alone. Describe the environment, characters, camera direction, and auditory cues in up to 2,500 characters, then choose an integer duration from 3 to 15 seconds, a resolution of 720p or 1080p, and your preferred framing from 9 aspect ratios. The model produces video frames, speech dialogue, ambient Foley, and background music together in one unified step.
Key Capabilities & Advantages
Joint audio-video generationProduces visual frames and matching audio tracks simultaneously, eliminating secondary dubbing or separate audio post-processing pipelines.
Multilingual native lip-syncAligns character mouth movements to spoken dialogue accurately in English, Mandarin, Cantonese, Japanese, Korean, German, and French.
Dynamic and grounded motionDelivers smooth physical movement in fast-action sequences like athletics, dance, and chases with significantly reduced stutter.
Storyboard-style prompt timingUnderstands time markers such as 0-4s and 4-8s to choreograph sequential actions, shot transitions, and spoken lines across the clip.
Flexible cinematic aspect ratiosSupports 9 native framing options including widescreen 21:9, standard 16:9, square 1:1, and vertical 9:16 for direct multi-platform delivery.
Predictable second-based billingComputes cost directly from requested duration and resolution, ensuring transparent budget estimation before running.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| prompt | Required | Up to 2500 Unicode characters after trimming surrounding whitespace. A nonblank prompt is required. |
| resolution | Optional | 720p or 1080p. Default: 1080p. Default 1080p |
| duration | Optional | Integer from 3 to 15 seconds. Default: 5. Default 5 |
| aspect_ratio | Optional | Supported values: 21:9, 16:9, 4:3, 1:1, 3:4, 4:5, 5:4, 9:16, 9:21. Default: 16:9. Default 16:9 |
| seed | Optional | Optional integer from 0 to 2147483647. Omitted when not specified. |
| enable_safety_checker | Optional | Optional boolean. Omitted when not specified. |
How to Call Happy Horse 1.1 Text to Video API
Establish the subject and settingBegin your prompt by defining the environment, lighting style, and primary character or focal object in clear detail.
Describe motion and pacingOutline how characters move, specify camera behavior such as dolly shots or tracking pans, and define timing across the clip.
Specify dialogue and acoustic cuesInclude dialogue lines in quotation marks, mention the spoken language for lip-sync, and describe ambient sound or background score.
Select duration, resolution, and ratioChoose an output length from 3 to 15 seconds, pick 720p or 1080p, and configure your target aspect ratio from the 9 supported options.
Submit generation taskCall the asynchronous API endpoint or click generate in the playground console with your configured parameters.
Retrieve final videoQuery the task status using the returned task_id and download the resulting MP4 video with embedded audio upon completion.
Pricing
Cost = output seconds × resolution rate. 1 credit = $0.005; all three modes use the same rates. Failed tasks are refunded automatically.
| Usage | Rate | Details |
|---|---|---|
| 720p | 22 credits/s ($0.11/s) | 5 seconds: 110 credits ($0.55) |
| 1080p | 28 credits/s ($0.14/s) | 5 seconds: 140 credits ($0.70) |
Best Use Cases
Commercial concept visualizationRapidly turn written advertising scripts into dynamic video concepts complete with voiceover and background music for client pitches.
Social media short-form contentProduce engaging vertical 9:16 narrative clips with spoken punchlines and synchronized reactions tailored for TikTok, Shorts, and Reels.
Game cinematics and cutscenesGenerate dramatic character performances and action vignettes with tailored environmental soundscapes for game development previsualization.
Multilingual ad localizationWrite prompts featuring local dialogue in French, German, Japanese, Korean, Cantonese, or Mandarin for global marketing campaigns.
Pro Tips
- Use timestamped dialogue blocks (for example, '0-3s: Character speaks in English; 3-5s: Camera dollies back with ambient room tone') to direct pacing cleanly.
- Explicitly name sound details in your prompt; mentioning footstep textures, rain ambience, or orchestral tone helps the joint audio engine construct richer soundscapes.
- Separate character action instructions from camera movement instructions into distinct sentences for tighter visual adherence.
- Test short 5-second 720p generations during creative ideation before ordering 15-second 1080p deliverables.
Usage Notes
- Prompts must contain between 1 and 2,500 Unicode characters; whitespace-only submissions are rejected before deduction.
- Generation is asynchronous; query status periodically with task_id until the task transitions to finished or failed.
- Audio tracks are generated natively within the video file; no auxiliary audio stream or external dubbing tool is required.
- Aspect ratio defaults to 16:9; choose from 9 native ratios to match your presentation target without letterboxing.
Related Models
Happy Horse 1.1 Text to Video API frequently asked questions
What is the Happy Horse 1.1 Text to Video API?
Happy Horse 1.1 Text to Video is an Alibaba model for video generation from text prompts. It generates 3–15 second cinematic video clips at 720p or 1080p with native synchronized audio, multilingual lip-sync across seven languages, and expressive physical motion. Built on Alibaba's unified single-stream self-attention Transformer architecture, it preserves coherent temporal continuity and lighting realism while generating speech, sound effects, and music in a single forward pass. You can call it programmatically or try it from the playground above.
Can Happy Horse 1.1 Text to Video generate dialogue with lip-sync from text?
Yes. When dialogue lines are included in quotation marks within your prompt, the model synchronizes character facial musculature and mouth shapes to the spoken phonemes while rendering matching vocal audio directly in the video file.
Which languages support lip-sync in Happy Horse 1.1 Text to Video?
Happy Horse 1.1 Text to Video supports high-accuracy lip-sync in English, Mandarin, Cantonese, Japanese, Korean, German, and French. Specify the language alongside dialogue text in your prompt to guide pronunciation and acoustic delivery.
How do I structure multi-scene timing in Happy Horse 1.1 Text to Video prompts?
Use clear second markers such as 0-4s and 4-8s in your text prompt. The model reads these chronological ranges to transition camera positions, sequence character actions, and pace spoken phrases across your chosen duration.
What durations and resolutions does Happy Horse 1.1 Text to Video offer?
You can choose an integer duration from 3 to 15 seconds, with 5 seconds set as default. Resolutions include 720p for fast drafting and 1080p for final production deliverables.
Which aspect ratios are available for Happy Horse 1.1 Text to Video?
The endpoint provides 9 aspect ratios: 21:9, 16:9, 4:3, 1:1, 3:4, 4:5, 5:4, 9:16, and 9:21. Specify your desired ratio in the aspect_ratio field to match your intended presentation format without cropping.
How does audio generation work in Happy Horse 1.1 Text to Video?
Audio and visual frames are synthesized jointly during inference. Describing acoustic elements such as footstep materials, weather ambience, crowd murmur, and musical mood enables the model to produce coordinated sound effects alongside character speech.
How are credits calculated for Happy Horse 1.1 Text to Video?
Billing is computed by multiplying the requested duration in seconds by the resolution rate: 22 credits per second for 720p, and 28 credits per second for 1080p. Credits are deducted upon submission and refunded automatically if generation cannot complete.















