Hypernatural

TechniqueBy HypernaturalVersion 2, Oct 26, 2026

h3-max-image-to-video

Animate a still with MiniMax H3 Max image-to-video (or its reference-to-video mode when characters or products need reference pictures): the fastest and cheapest video model, with good motion and performance but smoothed, painted-looking hair and skin up close. Use to draft every shot quickly, and for wide shots or subjects without fine texture; upgrade to kling-v3-image-to-video or seedance-2-5-image-to-video where close-up realism, 1080p grain or complex physics matter.

SKILL.md

H3 Max: image to video

Give it a first frame, a prompt, and optionally a last frame or reference pictures; get a clip back in a fraction of the time and price of Kling or Seedance, with good motion and acting. The cost is fine detail: facial hair, skin texture and hair strands come out mottled and smoothed together, painted rather than photographic, and close-ups look plastic. Draft on it, keep it for wide shots and subjects with little texture, and move to kling-v3-image-to-video (close-up texture) or seedance-2-5-image-to-video (physics, 1080p grain) where the shot needs it. For a still speaking an audio clip use h3-max-lipsync-a-still; for a scene with a dialogue track, h3-max-dialogue. Always H3 Max, never plain H3: Max is its fine-tune.

Inputs

  • The first frame. The output canvas follows its shape.
  • A last frame (optional), continuous with the first: derive it from the locked first frame (nano-banana-derive-last-frame). Two independently edited stills made her hair morph mid-shot.
  • Reference pictures (optional) for subjects the frame doesn't show well or who enter: up to 9 subjects and 9 pictures in all. Every subject keeps its first picture, the rest are dealt round-robin. Single views from a character sheet, not the sheet.

Run it

Call describe on the model before the first run in a job. Before that first run, a test included, show the person the still that will move and ask (core skill: the person decides every look).

run("fal/minimax/h3-max/image-to-video", {
  "image_url": "<job>/stills/shot04_first_c.png",
  "prompt": "<H3 prompt, see below>",
  "duration": 3.2,
  "resolution": "768P",
  "prompt_expansion_mode": "disabled",
  "seed": 5000
}, into="<job>/video/raw", unit="shot04_h3", tag="shot04")
  • duration: the length you want, in seconds as a float, from about 1 s up to 15 s. The clip may come back a little longer than asked (ask for 1 s, get 1.2 to 1.4 s); trim it to the shot. H3 returns 24 fps. Shots longer than about 15 s aren't advisable on any video model: split the shot at a cut or a pause.
  • resolution: 480P, 768P or 1080P, uppercase P. 1080P is 768P plus latent refinement. Priced per second by tier whatever the shape: 768P $0.052/s and 1080P $0.104/s at the promo rate ($0.08 and $0.16 at list).
  • prompt_expansion_mode: "disabled": required by the schema, and fal's "balanced" rewrite adds a soundtrack.
  • end_image_url pins the last frame. seed is optional; vary it for takes.
  • With reference pictures, call fal/minimax/h3-max/reference-to-video instead, with the same fields plus "reference_image_urls": [...], in the order of the prompt's <Picture N> labels. The first frame is still image_url. Each picture must be 256 to 2,048 px a side with an aspect between 0.4 and 2.5, or fal rejects the whole request (wide logos are the usual offender): pad with the edge colour, never crop.

Prompt

Load h3-prompt-format first: the image-to-video shape without references, the reference-to-video shape with them. For this mode:

  • Say "big, clear motion" in the direction and spell out counts ("blinks exactly once").
  • H3 pushes in by default; state "static shot, locked on the opening framing" when the frame must hold.
  • Never name a removed accessory, even to forbid it: "no pin or badge" grew a pin by 1 s. Describe the clean state instead ("a plain, unadorned knit, the same from the first frame to the last").
  • Ask for the shot's own length. If the clip still runs longer than the shot, ask for the action in real time, then a hold.

What you get

An MP4 at 24 fps, opening on the first frame, a little longer than the duration asked, with generated sound. Trim to the shot (ffmpeg-frame-exact-trim), keeping the raw render.

Tips and traps

  • Plastic skin on an otherwise good take: add grain in post (ffmpeg-grain-for-plastic-skin) before re-rendering on another model.
  • Not for complex physical motion (papers falling, cloth in wind), 1080p photographic realism, or close-ups where beard, skin or hair texture must hold.
  • A draft approves composition and timing, not motion. Re-judge the motion on the final model.
  • H3 sometimes reaches for a raised index finger however it's directed; take the least-bad take rather than looping.

Check it

  • Frame 0 against the still (and the end against a pinned last frame): python-check-pinned-frames.
  • Close-up texture at 100% against the source, if the shot is a close-up.
  • Then a review page beside the original or the earlier round.

Go make something cool.

Install the app, open your agent, describe the video. That's the whole onboarding.

Sticker HypernaturalSticker BannerSticker TVBoy