Kling 3 image-to-video on Sume: the first frame sets the shape

With a first frame, Sume's kling-3 builder does not send aspect_ratio. Crop the image to the shape you want before you submit. Here is the request.

4 min readSume
All posts

When you give kling-3 a first frame on Sume, the request sent to the provider carries the image but no aspect_ratio, so the shape of the clip follows the image. Crop or pad the still to 16:9, 9:16 or 1:1 first, and do not rely on the field to reframe it.

The aspect_ratio field is sent only for text-to-video. This is how the Sume Kling 3 builder works, and it explains clips that come out in the wrong shape after someone adds aspect_ratio: 9:16 to an image request.

What the request looks like

Use frame_images with frame_type: first_frame on /v1/videos. An optional last_frame image pins the end. The API infers image-to-video from the presence of frame_images. Do not add input_references, because Kling takes none.

import json, os, urllib.request

body = {
    "model": "kling-3",
    "prompt": "The camera pushes in slowly while steam rises from the cup",
    "duration": 5,
    "resolution": "1080p",
    "frame_images": [{
        "type": "image_url",
        "image_url": {"url": "https://example.com/cup-9x16.png"},
        "frame_type": "first_frame",
    }],
}
req = urllib.request.Request(
    "https://api.sume.com/v1/videos",
    data=json.dumps(body).encode(),
    headers={
        "Authorization": "Bearer " + os.environ["SUME_API_KEY"],
        "Content-Type": "application/json",
        "Idempotency-Key": "kling3-i2v-001",
    },
)
print(urllib.request.urlopen(req).read().decode())

Prepare the still

Export the image at the ratio you want in the clip, for example 1080 x 1920 for 9:16, and host it at a public https URL. The API fetches it, and an unreachable URL fails the job with a message that asks you to check the URL is publicly reachable.

Keep the subject inside the middle of the frame. Motion models often drift the edges, and a tight crop leaves nowhere for the drift to go.

Text-to-video differs

For a text-only request, aspect_ratio is honored: the builder maps the value to 16:9, 9:16 or 1:1. Send one of those three values explicitly, and check the catalog row for the list the API accepts.

kling-3 aspect_ratio handling on Sume, read 2026-10-05
Modeaspect_ratio sent to providerShape of output
Text-to-videoyes, 16:9, 9:16 or 1:1what you asked for
First framenofollows the image
First and last framenofollows the first image

Related checks

See the Kling 3 first and last frame request for the end-frame rules, and the square clips post for which ids take 1:1.

A pre-flight list for image-to-video

Most wrong-shape clips come from the input, not the model.

  • Export the still at the final ratio, not just any size.
  • Use a public https URL. Private links fail with a download error.
  • Do not send aspect_ratio and expect it to crop an image request.
  • Do not send input_references with kling-3. It accepts none.
  • Pick a prompt that describes motion, not the contents of the picture, since the picture already supplies the contents.

Related posts

More in Developers

All Developers posts

Written by Sume