Kling motion control still: 340 to 3,850 px edges, checked first

Kling's motion control guide sets a 340 px short edge and a 3,850 px long edge for the still. Check both in Python before a Sume job reserves money.

4 min readSume
All posts

Before you send a still to Kling 3.0 Motion Control, make sure its short edge is at least 340 px and its long edge is at most 3,850 px, with the whole body and head visible. Those numbers come from Kling's own motion control guide (read 2026-10-07). Sume's route takes a public HTTPS image_url and publishes no pixel check of its own, so the cheap move is to test the file yourself before a job reserves money.

This matters because the failure shows up late. A still that breaks the vendor rules is accepted at submit, reserved at admit, and only then fails or returns a poor clip. Sume refunds a failed job, but you still lose a polling cycle and a retry.

What Kling's guide asks of the still

Kling's guide lists the rules below for the character image. The table pairs each rule with what to do before you call Sume.

Kling Motion Control still-image rules (read 2026-10-07)
RuleKling guide saysBefore you submit
Short edgeMinimum 340 pxUpscale or regenerate the still
Long edgeMaximum 3,850 pxDownscale before upload
VisibilityWhole body and head clearly visible, not obstructedReject crops that cut off hands or head
ProportionMatch full-body or half-body to the motion referencePick a still that frames like the clip
Face data (3.0)Upload a clear facial close-up for Element BindingKeep the face large in the still

What the Sume route takes

POST /v1/kling/3.0/motion-control accepts exactly one visual source: a public HTTPS image_url, or a ready avatar by avatar_id or avatar_handle. It also needs a motion_video_url and a duration_seconds between 1 and 30. The body is strict, so extra fields are rejected rather than ignored.

The Sume docs do not state pixel limits for image_url. Treat Kling's numbers as the contract. If you use an avatar instead, the still is resolved server-side from the avatar identity, so there is no file for you to measure.

A pre-flight check in Python

This helper needs Pillow. It returns a list of problems and prints ok when the still passes the two size rules. It cannot judge whether the body is visible, so look at the image once yourself.

from PIL import Image
import sys

def check_still(path):
    problems = []
    with Image.open(path) as im:
        width, height = im.size
    short_edge, long_edge = min(width, height), max(width, height)
    if short_edge < 340:
        problems.append(f'short edge {short_edge} px is below 340')
    if long_edge > 3850:
        problems.append(f'long edge {long_edge} px is above 3850')
    return problems

if __name__ == '__main__':
    found = check_still(sys.argv[1])
    print('; '.join(found) if found else 'ok')

What a bad still costs

Sume prices the route at ceil(duration_seconds) times the Kling motion-control list of $0.126 per output second, times a 1.25 margin, which is $0.1575 per second. A 10-second reference reserves $1.575 at admit. The amount is captured on completion and refunded on failure, so a rejected still does not keep your money, but a poor clip that completes does.

A 30-second reference reserves $4.725. Run the size check, look at the still once, and then submit.

What this check does not cover

It does not test the motion video. Kling's guide gives the reference clip a 3 to 30 second window, and Sume caps duration_seconds at 30. It also does not decide who faces which way: that is the character_orientation setting.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume