Pular para o conteúdo principal

MiniMax H3 (Hailuo 3.0): The Open-Weight Omni Video Model

Intermediário

On August 3, 2026 MiniMax pushed the weights of MiniMax-H3 (consumer name: Hailuo 3.0) to Hugging Face — a 33-billion-parameter, single-stream Transformer that turns text, images, video and audio references into 4–15 second clips at up to 2K/24fps with native stereo audio, all generated in one pass. That last part is the interesting one: there is no separate TTS stage, no bolted-on SFX pipeline. Dialogue, room tone and picture come out together, from the same model.

Three days earlier the paid API had opened at $0.1625/second for 2K (~$9.75/minute of video), roughly half the cost of Kling 3.0 or Seedance 2.0 at comparable resolution. On the Artificial Analysis leaderboards single-run scores put H3 #1 in video editing with audio, top-three in text-to-video and image-to-video. That combination — frontier-tier video quality, open weights, and honest sub-$10/minute pricing — is what put H3 on every generative-media feed this week.

This page is what most other write-ups miss: the parts that determine whether H3 is actually useful to you.

What you'll learn
  • Understand the H3 architecture — single-stream Transformer, H3-VAE, MM-RoPE — and why it produces video and audio in one forward pass
  • Know the three self-hosting gotchas nobody puts on the landing page: the geo-restricted license, the 768p ceiling on the open base, and the AdaLN parameter-skip trick
  • Get a working self-hosted path: minimum 42.5 GB of weights, quantization choices, and how a 12 GB card runs it with offloading
  • Try H3 from the API with a real cURL you can copy, and know the input-shape limits (12 files max, ≤64 MB body, public URLs only)
  • Pick between H3 and the closed alternatives (Kling 3.0, Seedance 2.0, Veo, Sora) with clear tie-breakers on price, control and licensing

Three things about H3 that aren't obvious from the headlines

1. The Community License blocks self-hosting in the US, EU, UK and South Korea

The Hugging Face model card links a MiniMax H3 Community License Agreement whose text is application-gated for four regions: the United States, the European Union, the United Kingdom and the Republic of Korea. In practice that means: if you or your organisation is in any of those places and you want to run H3 on your own hardware (or serve it to your users), you need to complete the H3 licence application at platform.minimax.io/h3-license first. The restriction extends to outputs, not just the weights — a detail most reblog posts skip.

If you are outside those regions the standard Community License applies. If you are in them, treat the API as your default path until your application clears, or use the license reviewer at your org before shipping anything that touches the weights. This is a real, enforceable restriction — not the usual "please don't do bad things" clause.

2. The open base tops out at 768p — 2K only exists inside the API

Every "up to 2K" headline about H3 elides a key detail: the open-weight base models (Base FL2VA for text-to-video / first-last-frame, Base Ref2VA for multi-reference) generate at 768p. The 2K output people are marveling at on the Hailuo app comes from H3-Regenerate-2K, an in-context upsampler that runs after the base model and that MiniMax has not open-sourced. H3-Context-IR, the multimodal instruction preprocessor, is also API-only.

The consequence for self-hosters is simple: you get the same generation quality the frontier system is built on, but you top out at 768p unless you chain your own upscaler (Topaz, ESRGAN, a diffusion upsampler) after the fact. This is fine for many use cases — 768p at 24fps is more than enough for social clips, storyboards, and rapid iteration — but it's not the same product as the paid tier.

3. About 13 B of the 33 B parameters are AdaLN branches you can precompute and skip

The model card breaks the H3-Omni-Transformer down as a 33 B dense single-stream Transformer of which roughly 13 B parameters live in AdaLN-related branches. AdaLN (Adaptive Layer Norm) is how diffusion-style transformers absorb conditioning signals (timestep, class, text embedding) — and its outputs, per conditioning slot, are precomputable. That's how third-party providers hit a minimum 42.5 GB working configuration even though naive BF16 weights are much larger: they combine a pruned INT8 checkpoint (~20 GB) with an NVFP4 AWQ text encoder (~16 GB) and both VAEs (~5.8 GB), and skip the cached-branch weights at inference time.

The rule of thumb from the ComfyUI ecosystem: a 12 GB card can run H3 with CPU/RAM offloading, at the cost of longer render times per clip. If you have 24 GB or more, offload isn't needed.

What H3 actually is (the architecture in one page)

H3 is a single-stream, modality-agnostic Transformer. There is one attention stack, one FFN stack, and video/audio/text tokens all pass through it. The four components you actually load are:

ComponentRoleOpen-sourced?
H3-Omni-Transformer33 B dense generator (video + audio)✅ (BF16, INT8, pruned INT8)
H3-EncoderMultimodal text/vision encoder — reuses Qwen3-VL-32B layer-50 hidden states
H3-VisualVAETemporal-causal video autoencoder, f16t4d24 compression
H3-AudioVAEStereo audio, 32 kHz output, 40 Hz temporal rate
H3-Context-IRMultimodal instruction preprocessor❌ API-only
H3-Regenerate-2KIn-context upscaler to 2K❌ API-only

Two design choices are worth calling out for anyone comparing H3 to other video models:

  • 3-D MM-RoPE positional embeddings. Rotary positions are extended to three axes (spatial x, spatial y, time), so temporal coherence is baked into the attention pattern rather than added by a separate temporal module. This is one of the main reasons H3 keeps subject identity and lighting stable across 15-second clips.
  • H3-VAE gives a 4× effective sequence-length gain. The custom tokenizer packs more pixels per token than the standard VAEs used by prior open video models — that's what makes 2K output tractable at all in this parameter class.

The native audio pass is the other differentiator. Because dialogue, SFX and room tone are generated in the same forward pass as picture, lip-sync and diegetic audio come out coherent by default. Reference audio (WAV/MP3, 2–15s per clip, up to 3 clips) enables voice cloning; but audio references must accompany an image or video reference — the API rejects audio-only inputs.

The self-hosting math

If you're planning to run H3 locally, these are the numbers that determine what fits:

CheckpointDiffusion modelText encoderBoth VAEsMinimum working total
BF16 (reference)61.7 GB48.0 GB5.82 GB~115 GB
INT831.7 GB25.3 GB5.82 GB~63 GB
Pruned INT8 + NVFP4 AWQ TE19.5 GB14.6 GB5.82 GB~42.5 GB

VRAM: 24 GB comfortably, 12 GB with offload (slower per clip). SGLang example configs use 4 GPUs for serving.

Guided walkthrough1 of 4
  1. Native H3 support was merged into ComfyUI on the same day the weights dropped (August 3, 2026). Pull the latest and the new H3 nodes appear automatically.

Calling H3 through the API

The API is REST + polling. You post a job, receive a task_id, and poll a query endpoint until status == "succeeded". Only public URLs work — Base64 payloads are rejected, and the total request body is capped at 64 MB. Reference limits: ≤9 images, ≤3 video clips, ≤3 audio clips, 12 files total, ≤7 000-character prompt.

H3 text-to-video with a voice reference (Python)

import os, time, requests

headers = {"Authorization": f"Bearer {os.environ['MINIMAX_API_KEY']}"}

payload = {
  "model": "MiniMax-H3",
  "content": [
      {"type": "text",
       "text": "Wide shot: a lighthouse keeper walks onto the balcony and says, 'Follow the wind, live free.' Voice follows reference audio 1."},
      {"type": "audio_url",
       "audio_url": {"url": "https://example.com/voice-ref.mp3"},
       "role": "reference_audio"},
      {"type": "image_url",
       "image_url": {"url": "https://example.com/lighthouse.jpg"},
       "role": "reference_image"},
  ],
  "resolution": "2K",   # 2K is the only value the API accepts right now
  "duration": 8,        # seconds, 4–15
  "ratio": "16:9",
}

task_id = requests.post(
  "https://api.minimax.io/v2/video_generation",
  headers=headers, json=payload,
).json()["task_id"]

while True:
  time.sleep(10)
  task = requests.get(
      f"https://api.minimax.io/v2/query/video_generation/{task_id}",
      headers=headers,
  ).json()["task"]
  if task["status"] == "succeeded":
      print(task["video_url"])
      break
  if task["status"] == "failed":
      raise RuntimeError(task)

H3 locally via diffusers (self-host, 768p)

from diffusers import DiffusionPipeline
import torch

pipe = DiffusionPipeline.from_pretrained(
  "MiniMaxAI/MiniMax-H3",
  dtype=torch.bfloat16,
  device_map="cuda",
)

video, audio = pipe(
  prompt="Slow dolly-in on a neon-lit ramen shop at night; steam rising; jazz sax outside.",
  num_frames=24 * 8,   # 8 seconds at 24 fps
  height=768, width=1344,
  generator=torch.manual_seed(42),
)
video.save("ramen.mp4"); audio.save("ramen.wav")

H3 vs the closed video APIs — when each one wins

MiniMax H3Kling 3.0Dreamina Seedance 2.0Sora / Veo (frontier closed)
Max resolution (API)2K/24fps1080p1080p1080p–4K (variant)
Native audio✅ dialogue + SFX + room toneSeparate stageSeparate stage✅ (Sora 2), ✅ (Veo)
Open weights✅ (Community, geo-restricted)
Cost per minute (comparable tier)~$9.75 (2K + audio)~$20 (1080p)~$22 (1080p)Higher & rate-limited
Reference control≤9 images, ≤3 video, ≤3 audioSimilarFewer slotsFewer slots
Best forHighest-fidelity output at lowest $/min; on-prem/self-host if outside restricted regionsStyle stability across long shotsCinematic look, prompt fidelityWhen you can't leak prompts to a Chinese vendor and need frontier polish

Reach for H3 when you need audio-in-the-frame at 2K, when your cost/minute matters and the closed APIs would blow your budget, or when compliance forces you to keep generation on-prem and your legal situation clears the Community License. Skip H3 when your team lives in one of the restricted regions and you haven't cleared the application, when your workflow depends on native 4K, or when you can't send prompts to a mainland-China API (the paid tier is hosted by MiniMax; there are no US-region mirrors at launch).

Quiz

Check yourself

0/4
  1. The open-weight base H3 checkpoints on Hugging Face generate video at what maximum resolution?
  2. According to the MiniMax H3 Community License, which regions currently require an application to self-host the weights?
  3. The H3-Omni-Transformer has 33 B parameters. What is special about roughly 13 B of them?
  4. Which of these is a real limit of the paid H3 API today?
Pressione Enter ou Espaço para virar o cartão. Use as setas esquerda e direita para navegar entre os cartões.Termo exibido.
1 / 9

Sources & further reading