H3 Video

H3 Frames to Video

Changed on

Generate H3 / H3 Max video from a start image (required) and an optional end image, guided by a text prompt. Returns immediately with 202 Accepted.

The output aspect ratio follows the start image and the task shows aspect_ratio: "Auto". Leave aspect_ratio out: it is not used, but if sent it must still be one of 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 — any other value, including Auto, returns 400.

Example

curl -X POST https://genaipro.io/api/v2/hailuo/frames-to-video \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "start_image=@first.jpg" \
  -F "end_image=@last.jpg" \
  -F "prompt=The camera slowly pushes in as the sun sets" \
  -F "model=h3_max" \
  -F "resolution=768p" \
  -F "duration=6" \
  -F "number_of_videos=1"

Rate limit: 30 requests/minute — shared across all /v2/hailuo creation endpoints.

post/v2/hailuo/frames-to-video

Request

Request body multipart/form-data

start_imagestring binary required

First frame — JPEG/PNG/WebP, max 20 MB, short side ≥ 300 px, long side ≤ 5760 px, aspect ratio 2:5–5:2

end_imagestring binary

Optional last frame — same limits as start_image

promptstring required

Text description to guide the video (at most 2400 characters)

model'h3' | 'h3_max' required

Video model — h3 or h3_max

number_of_videosstring

Number of videos to generate (1–4). Sent as string in form data.

durationstring

Clip length in whole seconds — 5–15 (h3 at 2k: 5–12). Sent as string in form data.

resolution'480p' | '768p' | '2k'

Output resolution — h3: 768p or 2k; h3_max: 480p or 768p.

callback_urlstring

Optional http/https webhook URL. When the task reaches completed or failed, GenAIPro POSTs the task object (same shape as GET /v2/hailuo/tasks/{id}) to this URL.

Example request

{
  "prompt": "The camera slowly pushes in as the sun sets",
  "model": "h3_max",
  "duration": "6",
  "callback_url": "https://your-server.example.com/genaipro-webhook"
}

Response

Task accepted for processing

idstring

Task ID (use for GET /v2/hailuo/tasks/{id})

promptstring

The prompt used for generation (for Boost HD, the source task's prompt)

file_urlsstring[]

URLs of the generated files (empty while processing). Public; deleted about 90 days after creation (then 404) — download them yourself.

status'processing' | 'completed' | 'failed'

Task status

errorstring

Error message — present only when status is failed

task_typestring

text_to_video, frames_to_video, reference_to_video or upscale_video (image tasks: create_image)

aspect_ratiostring

Aspect ratio of the task — Auto for frames-to-video (follows the start image)

modelstring

Model and options of the task. Video: <model>_<resolution>_<duration>s (e.g. h3_768p_10s, h3_max_480p_5s); Boost HD: upscale_<resolution> (e.g. upscale_1440p).

number_of_outputsinteger

Number of videos (or images) requested

created_atstring date-time

Timestamp when the task was created

Example response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "prompt": "A drone flying over mountains at sunrise",
  "file_urls": [],
  "task_type": "text_to_video",
  "aspect_ratio": "16:9",
  "model": "h3_768p_10s",
  "number_of_outputs": 1
}

Changes