Fashion lookbook video in 3:4 or 9:16: which Sume models take it

Wan 3.0, Seedance and MiniMax H3 take 3:4 and 9:16 on Sume; Kling and Omni do not take 3:4. Wan at 720p is $0.125 a second, H3 at 768p is $0.075.

5 min readSume
All posts

For a lookbook shot in 3:4 portrait, use wan-3.0, minimax-h3, minimax-h3-max or a Seedance row; all four accept both 3:4 and 9:16 on Sume. kling-3 takes 9:16 and 1:1 but not 3:4, and gemini-omni-flash-1.1 takes only 16:9 or 9:16. Grok Imagine and the person-swap rows have no aspect_ratio option.

The ratio lists come from the catalog in the Video Router guide and Video Generation, read 2026-10-05.

Portrait ratios by model

Sume bills the provider list price times 1.25 and rounds the job up to the cent, so a one-second figure here is a rate, not a charge.

Portrait aspect ratios and rates on Sume (read 2026-10-05)
Model id3:49:16Clip lengthRate per second
wan-3.0YesYes2 to 30 s$0.125 at 720p
minimax-h3YesYes5 to 15 s$0.075 at 768p
minimax-h3-maxYesYes5 to 15 s$0.10 at 768p
seedance-2.5YesYes4 to 30 sper 1,000 video tokens
kling-3NoYes4 to 15 s$0.14 without audio
gemini-omni-flash-1.1NoYes3 to 10 s$0.125 at 720p

Planning a lookbook

A lookbook is many short shots of the same outfit set. Keep each clip to 5 or 6 seconds, use the garment photo as first_frame or as a reference, and join the clips on a Timeline. Six 5-second shots at H3 768p are $0.375 each, $2.25 in all, before rounding.

3:4 is the one portrait ratio here that Kling and Omni lack, so decide the ratio before you generate rather than after.

  • Use 3:4 for feeds and product pages, 9:16 for Reels and Shorts.
  • Keep the outfit photo as the same reference across every shot.
  • Draft at 480p; Wan and H3 are $0.0625 a second there.

Request

aspect_ratio and resolution are explicit; 3:4 at 768p is native on H3.

import os, time, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
payload = {
    "model": "minimax-h3",
    "prompt": "A model turns slowly in a wool coat on a city street, golden hour, shallow focus",
    "duration": 5,
    "resolution": "768p",
    "aspect_ratio": "3:4",
}
job = requests.post("https://api.sume.com/v1/videos", headers=H, json=payload).json()
while True:
    time.sleep(30)
    s = requests.get(job["polling_url"], headers=H).json()
    if s["status"] in ("completed", "failed", "cancelled"):
        break
print(s["status"], s.get("unsigned_urls"), s.get("usage"))

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume