Kling 3 input_references 400 unsupported_capability: fix

Sending input_references to kling-3 on Sume returns 400 unsupported_capability. Move the image to frame_images or pick a model that takes references.

4 min readSume
All posts

Why does kling-3 return 400 unsupported_capability for input_references?

Because the kling-3 catalog row does not list any input reference type. Sume checks each input_references entry against the model's supported_input_references and rejects a type that is not in the list with a 400 and the code unsupported_capability. The message has the form "kling-3 does not support input_references type image_url."

This is deliberate: a loud 400 before submit is better than a clip that ignores your reference and still bills you. The Kling row is text-to-video and image-to-video with a first and last frame, and its constraint is "no reference_*_urls".

Which fix applies to my request?

Pick by what the image was for. If it was the starting picture of the shot, it belongs in frame_images. If it was a style or identity reference, you need a model that accepts references.

The three fixes below are the whole decision.

Fixes for a kling-3 reference 400 (read 2026-10-03)
The image was...Do thisField
The first frame of the clipKeep kling-3, resend as first frameframe_images with frame_type: first_frame
The last frame of the clipSend a first frame too, then the lastframe_images, both frame types
A style or identity referenceSwitch to a model that lists the typeinput_references on a Seedance 2.x row, Wan 3.0 or MiniMax

What does the corrected request look like?

Here is the same intent as a first frame. The image URL must be public HTTPS; the docs list inaccessible reference media as a common cause of failed jobs.

Note the field changes from input_references to frame_images, and each entry carries a frame_type.

{
  "model": "kling-3",
  "prompt": "The character turns toward the window and smiles, slow push-in",
  "frame_images": [
    {
      "type": "image_url",
      "image_url": { "url": "https://example.com/master.png" },
      "frame_type": "first_frame"
    }
  ],
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "16:9"
}

What if I send both fields?

The video docs state that when frame_images and input_references are both present, frame_images takes precedence and the request is treated as image-to-video. In other words a request that carries a first frame is not a reference request, so do not assume your reference images are being used. Send one mode per request, and confirm with a short test clip.

A last frame without a first frame is its own error; see the first and last frame guide and the image-to-video versus reference-to-video comparison.

How do I avoid the 400 in the first place?

Read the catalog instead of hard-coding capabilities. GET /v1/videos/models returns supported_input_references, supported_frame_images, supported_durations and supported_resolutions for each row, and the answer for kling-3 is empty for references.

If you call the legacy Video Router, the same rule applies under its own field names: the catalog capabilities show reference_images: false for kling-3, and the flat reference_image_urls field is the one to leave out. Either way the fix is in your request, not in a retry.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume