Kling 3 at 1080p: $0.14 a second, 44% below Wan 3.0's $0.25 on Sume

On Sume, silent Kling 3 is $0.14 a second at 1080p and Wan 3.0 is $0.25. A 10-second 1080p clip is $1.40 on Kling and $2.50 on Wan; Wan reaches 30 s.

5 min readSume
All posts

For a silent 1080p clip, kling-3 is $0.14 a second on Sume and wan-3.0 is $0.25, so Kling is 44% cheaper: a 10-second clip is $1.40 against $2.50. Kling charges the same at 720p, which makes 1080p the right setting there. Wan is cheaper at 720p ($0.125) and 480p ($0.0625), so the 1080p price is the only place Kling wins.

Prices are list times 1.25, from the Video Router guide, read 2026-10-05. Add audio and Kling rises to $0.21, which is still below Wan's 1080p rate.

Rates at each resolution

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.

Kling 3 and Wan 3.0 per second on Sume (read 2026-10-05)
Resolutionkling-3 audio offkling-3 audio onwan-3.0
480pnot offerednot offered$0.0625
720p$0.14$0.21$0.125
1080p$0.14$0.21$0.25
10 s at 1080p$1.40$2.10$2.50

Where Wan still wins

Wan takes 2 to 30 seconds, Kling 4 to 15. Wan takes reference images, clips and audio; Kling takes none. Wan's ratios are 16:9, 4:3, 1:1, 3:4 and 9:16; Kling takes 16:9, 9:16 and 1:1.

So the rule is narrow: for a 1080p clip of 4 to 15 seconds with a first frame, optional last frame and no references, Kling is the lower bill. For anything with references or a longer cut, or any draft at 720p or below, use Wan.

  • 1080p, 4 to 15 s, 16:9, 9:16 or 1:1, no references: Kling 3.
  • 720p or 480p: Wan 3.0.
  • Over 15 s or with references: Wan 3.0.

Request

Kling with audio off at 1080p.

import os, time, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
payload = {
    "model": "kling-3",
    "prompt": "Slow orbit around a leather backpack on a wooden table, soft window light",
    "duration": 10,
    "resolution": "1080p",
    "aspect_ratio": "1:1",
    "generate_audio": False,
}
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 Pricing

All Pricing posts

Written by Sume