Hunyuan Video Fast API Quick Start

Hunyuan Video Fast API Quick Start

Hunyuan Video Fast is available on Novita AI at POST https://api.novita.ai/v3/async/hunyuan-video-fast. It is the speed-optimized variant of Tencent’s open-source Hunyuan Video foundation model — it cuts generation time compared to the standard version at the cost of some motion fidelity, making it practical for high-throughput pipelines, prompt iteration, and staging workflows where turnaround speed matters more than peak cinematic quality.

Like all Novita async video APIs, it returns a task_id on submission and delivers the video URL once the task completes. This guide covers the endpoint, request format, working Python and cURL examples, and where the fast variant fits versus the standard model.

When to Use Hunyuan Video Fast vs Standard

The fast variant is the right choice when generation turnaround and request volume matter more than peak visual quality. Standard Hunyuan Video produces higher-fidelity motion and better prompt adherence per generation. The fast variant cuts that time significantly — useful for:

  • Prompt iteration — test many variations cheaply before committing to a full-quality render
  • High-throughput pipelines — batch content generation where latency per clip directly affects throughput
  • Staging and internal review — get shareable output quickly, then switch to standard for final delivery
  • Low-latency applications — production workflows with tight response-time budgets

If output quality is the primary constraint — broadcast, final delivery, or photorealistic motion — use the standard Hunyuan Video endpoint instead.

Step 1: Get Your Novita AI API Key

Sign up at novita.ai and generate an API key from the key management page. New accounts receive free credits. Store the key as an environment variable — never hard-code it in source files.

export NOVITA_API_KEY="your_api_key_here"

Step 2: Endpoint and Model ID

FieldValue
Submit endpointPOST https://api.novita.ai/v3/async/hunyuan-video-fast
Result retrievalGET https://api.novita.ai/v3/async/task-result?task_id=<id>
Auth headerAuthorization: Bearer $NOVITA_API_KEY
Content-Typeapplication/json

Official API reference: novita.ai/docs/api-reference/model-apis-hunyuan-video-fast

Step 3: Send Your First Request

Submit a generation request with your prompt and output settings:

curl -s -X POST https://api.novita.ai/v3/async/hunyuan-video-fast \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox running through a snowy forest at dawn, slow motion, cinematic wide shot",
    "negative_prompt": "blurry, low quality, distorted, watermark",
    "width": 1280,
    "height": 720,
    "seed": -1
  }'

The API returns a task_id immediately:

{
  "task_id": "hunyuan-fast-abc123"
}

The video is not in this response — store the task_id and use it in the next step.

Step 4: Poll for the Video Result

curl -s "https://api.novita.ai/v3/async/task-result?task_id=hunyuan-fast-abc123" \
  -H "Authorization: Bearer $NOVITA_API_KEY"

Keep polling until task_status is TASK_STATUS_SUCCEED:

{
  "task_status": "TASK_STATUS_SUCCEED",
  "videos": [
    {
      "video_url": "https://cdn.novitai.com/output/...",
      "video_url_ttl": 3600,
      "video_type": "mp4"
    }
  ]
}

Download or store video_url promptly — it expires after video_url_ttl seconds.

Task Status Values

StatusMeaning
TASK_STATUS_QUEUEDRequest accepted, waiting to run
TASK_STATUS_PROCESSINGGeneration in progress
TASK_STATUS_SUCCEEDComplete — video URL available in videos[0].video_url
TASK_STATUS_FAILEDGeneration failed — check the response for a failure reason

Python Example

import os
import time
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
BASE_URL = "https://api.novita.ai"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}


def submit_video(
    prompt: str,
    negative_prompt: str = "",
    width: int = 1280,
    height: int = 720,
    seed: int = -1,
) -> str:
    payload = {
        "prompt": prompt,
        "negative_prompt": negative_prompt,
        "width": width,
        "height": height,
        "seed": seed,
    }
    resp = requests.post(
        f"{BASE_URL}/v3/async/hunyuan-video-fast",
        headers=HEADERS,
        json=payload,
    )
    resp.raise_for_status()
    return resp.json()["task_id"]


def poll_result(task_id: str, interval: int = 5, timeout: int = 300) -> dict:
    deadline = time.time() + timeout
    while time.time() < deadline:
        resp = requests.get(
            f"{BASE_URL}/v3/async/task-result",
            headers=HEADERS,
            params={"task_id": task_id},
        )
        resp.raise_for_status()
        data = resp.json()
        status = data.get("task_status", "")
        if status == "TASK_STATUS_SUCCEED":
            return data
        if status == "TASK_STATUS_FAILED":
            raise RuntimeError(f"Task failed: {data}")
        time.sleep(interval)
    raise TimeoutError(f"Task {task_id} did not complete within {timeout}s")


if __name__ == "__main__":
    task_id = submit_video(
        prompt="A red fox running through a snowy forest at dawn, slow motion, cinematic wide shot",
        negative_prompt="blurry, low quality, distorted, watermark",
        width=1280,
        height=720,
    )
    print(f"Task submitted: {task_id}")

    result = poll_result(task_id)
    for video in result.get("videos", []):
        print(f"Video URL (expires in {video['video_url_ttl']}s): {video['video_url']}")

cURL Example

# Step 1: Submit the generation request
TASK_ID=$(curl -s -X POST https://api.novita.ai/v3/async/hunyuan-video-fast \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A timelapse of a city skyline transitioning from dusk to night, cinematic",
    "negative_prompt": "blurry, low quality, distorted",
    "width": 1280,
    "height": 720,
    "seed": 42
  }' | jq -r '.task_id')

echo "Task ID: $TASK_ID"

# Step 2: Poll until complete
while true; do
  RESULT=$(curl -s "https://api.novita.ai/v3/async/task-result?task_id=$TASK_ID" \
    -H "Authorization: Bearer $NOVITA_API_KEY")
  STATUS=$(echo "$RESULT" | jq -r '.task_status')
  if [ "$STATUS" = "TASK_STATUS_SUCCEED" ]; then
    echo "$RESULT" | jq -r '.videos[0].video_url'
    break
  elif [ "$STATUS" = "TASK_STATUS_FAILED" ]; then
    echo "Failed: $RESULT"
    break
  fi
  echo "Status: $STATUS — waiting..."
  sleep 5
done

Key Parameters

ParameterTypeRequiredDescription
promptstringYesText description of the video scene, subject, motion, and style
negative_promptstringNoElements to avoid in the output (e.g., “blurry, low quality”)
widthintegerNoOutput width in pixels — check the API docs for supported values
heightintegerNoOutput height in pixels — paired with width to set resolution
seedintegerNoSet a fixed integer to reproduce the same output; -1 for random

For the complete parameter list including duration options, maximum resolution constraints, and any model-specific fields, see the Hunyuan Video Fast API reference.

Pricing and Limits

Verify current per-video pricing at the Novita AI models page. Video generation pricing is typically per generated clip and varies by resolution and duration. Check the pricing page before building a cost model for production workloads.

Confirm the following limits in the official docs before deploying:

  • Maximum prompt character length
  • Supported resolution values (width × height combinations)
  • Maximum video duration in seconds
  • Rate limits and concurrent task caps per API key

The fast variant typically costs less per clip than the standard model due to reduced compute time — verify the current differential on the Novita pricing page.

Troubleshooting

401 Unauthorized — The API key is missing, invalid, or expired. Confirm NOVITA_API_KEY is set and the key is active in your Novita AI dashboard.

422 Unprocessable Entity — A required parameter is missing or a value is out of range. Confirm prompt is non-empty and that width/height values are in the supported set from the API docs.

Task stays in TASK_STATUS_PROCESSING — Generation is still running. The fast variant completes faster than standard, but higher resolutions and longer durations take more time. Increase your polling timeout for large outputs.

video_url returns 403 or 404 — The URL has expired (video_url_ttl elapsed). In production, download or transfer the video immediately after TASK_STATUS_SUCCEED — do not rely on the hosted URL as permanent storage.

Consistent quality issues on specific prompt types — Switch to the prompt refinement approach: describe the subject, action, camera angle, and style explicitly. Add negative_prompt entries for common artifacts. If quality is still insufficient for the use case, evaluate the standard Hunyuan Video endpoint.

FAQ

What is the Novita AI endpoint for Hunyuan Video Fast?

POST https://api.novita.ai/v3/async/hunyuan-video-fast. The API is asynchronous: submit a request, receive a task_id, then poll GET https://api.novita.ai/v3/async/task-result?task_id=<id> until task_status is TASK_STATUS_SUCCEED.

How does Hunyuan Video Fast differ from Hunyuan Video standard?

The fast variant is optimized for generation speed — it reduces the time from task submission to completed video. The tradeoff is that motion fidelity and fine-grained prompt adherence are lower than the standard model. Use the fast variant for prompt iteration, high-throughput batch jobs, or staging; use standard for final-quality output.

Can I set a specific video duration?

Check the API reference for supported duration parameters. Some Novita video APIs expose an explicit duration field; others use a model default. Verify before assuming a default clip length.

How do I reproduce a specific video output?

Set seed to a fixed integer. The same seed, prompt, width, and height combination should produce consistent output across runs.

Does Hunyuan Video Fast support image-to-video?

Hunyuan Video Fast on Novita AI is a text-to-video model. For image-to-video generation on Novita, check the available I2V models such as Kling, Vidu, or Wan on the Novita models page.

How much does Hunyuan Video Fast cost on Novita AI?

Verify current pricing at novita.ai/models. Per-clip pricing for video models can change; always check the pricing page before building production cost estimates.

Is Hunyuan Video Fast suitable for production video pipelines?

Yes, with appropriate handling. Design your pipeline around asynchronous task submission, store the task_id for status tracking, download the video immediately after completion (before video_url_ttl expires), and handle TASK_STATUS_FAILED with a retry or fallback strategy.