Alibaba Happyhorse 1.0 Video Extend

Alibaba Happyhorse 1.0 Video Extend

Playground

Try it on WaveSpeedAI!

Alibaba Happy Horse 1.0 (Video Extend) extends existing videos with seamless AI-generated continuation, supporting 720p/1080p output. Ready-to-use REST API, best performance, no coldstarts, affordable pricing.

Features

Alibaba Happy Horse 1.0 Video Extend continues an existing video clip with new AI-generated footage, seamlessly extending the scene from where the original ends. Upload a source video, describe how the video should continue, and the model generates a coherent continuation in 720p or 1080p.


Why Choose This?

  • Seamless video continuation Extend an existing clip with newly generated footage that picks up naturally from the original ending.

  • Prompt-guided scene progression Describe how the action, camera movement, atmosphere, or story should continue using natural language.

  • Cinematic motion Generate smooth, expressive motion while preserving the overall feel and flow of the source video.

  • Flexible resolution options Choose 720p for lower-cost iteration or 1080p for higher-quality final output.

  • Production-ready API Access the model through a REST inference API with no cold starts for scalable integration into creative workflows.


Parameters

ParameterRequiredDescription
videoYesSource video to extend.
promptYesText description of the desired continuation.
resolutionNoOutput resolution: 720p (default) or 1080p.
durationNoTotal output duration in seconds. Range: 3–15, default 5.
seedNoRandom seed for reproducibility. Range: 0–2147483647.

How to Use

  1. Upload your source video — provide the clip you want to continue.
  2. Write your prompt — describe how the scene, subject, camera, or atmosphere should progress after the original ending.
  3. Choose resolution — use 720p for lower-cost iteration or 1080p for higher-quality results.
  4. Set duration — choose the total output duration between 3 and 15 seconds.
  5. Set a seed (optional) — use a fixed seed if you want more reproducible results.
  6. Submit — generate and download the extended video.

Example Prompt

Continue the scene with a slow forward camera movement, the subject walking deeper into the alley, soft rain beginning to fall, stronger reflections on the ground, and a cinematic moody nighttime atmosphere


Pricing

Per 5 Seconds

ResolutionCost
720p$0.70
1080p$1.40

Example Costs

Resolution3s5s10s15s
720p$0.42$0.70$1.40$2.10
1080p$0.84$1.40$2.80$4.20

Billing Rules

  • Base price: 720p costs $0.70 per 5 seconds
  • 1080p surcharge: 1080p costs the 720p rate
  • Total price formula:
    total_price = 0.70 × (resolution == "1080p" ? 2 : 1) × duration / 5

Best Use Cases

  • Scene continuation — Extend cinematic clips with natural motion and coherent progression.
  • Storyboarding and concept work — Explore how a shot or sequence might continue without manual video production.
  • Ad creative development — Expand short promo clips into longer variations for campaigns and testing.
  • Social media content — Create longer edits from short source footage for platform-specific needs.
  • Atmospheric scene building — Continue motion, lighting, and mood from an existing clip into a richer sequence.
  • Creative prototyping — Quickly test alternate continuations before investing in full production.

Pro Tips

  • Use a source video with a clear ending frame for smoother continuation.
  • Be explicit about what should happen next, including subject action, camera motion, lighting, and atmosphere.
  • Keep prompts visually concrete, such as “camera slowly pushes in,” “the subject turns and walks away,” or “fog begins to roll in.”
  • Use 720p for quick testing, then switch to 1080p for final-quality output.
  • Reuse the same seed when you want more reproducible generations.
  • Start with shorter durations to validate continuity before generating longer clips.

Notes

  • Both video and prompt are required.
  • Ensure video URLs are publicly accessible.
  • Supported resolutions are 720p and 1080p.
  • Supported total output duration is 3–15 seconds.
  • Pricing scales linearly with duration.
  • 1080p pricing is exactly the 720p rate.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
  "resolution": "720p",
  "duration": 5
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/alibaba/happyhorse-1.0/video-extend" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-Text description of the desired continuation.
videostringYes-The source video to extend.
resolutionstringNo720p720p, 1080pOutput video resolution.
durationintegerNo53 ~ 15Total duration of the final output video in seconds (3-15).
seedintegerNo--Random seed for reproducibility.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.