kling-3 has no reference_video_urls; motion_video_url is another route

Sume's kling-3 id rejects reference_*_urls. A clip that should drive a character's motion goes to the separate Kling motion control route as motion_video_url.

5 min readSume
All posts

On Sume, a video clip can enter a Kling job in exactly one way: as motion_video_url on the motion control route. The kling-3 id on /v1/videos takes text, or a start and end frame, and rejects every reference_*_urls field. If you want a clip to set the motion of a character, you want motion control, not kling-3.

Two Kling things with two shapes

kling-3 is Kling Video v3 Pro: text-to-video and image-to-video with a start and an optional end frame, 720p or 1080p, 4 to 15 seconds, in 16:9, 9:16 or 1:1, with an optional generate_audio toggle. It has no reference-to-video mode and no edit mode.

Kling 3.0 motion control is a separate public surface at POST /v1/kling/3.0/motion-control. A motion reference video drives a still image or a ready avatar. The reference sets the length (1 to 30 seconds), so it reaches twice the length of kling-3.

The comparison

kling-3 and Kling 3.0 motion control on Sume (read 2026-10-05)
Itemkling-3Kling 3.0 motion control
RoutePOST /v1/videosPOST /v1/kling/3.0/motion-control
Clip inputnone (reference urls rejected)motion_video_url (required)
Length4 to 15 s1 to 30 s, set by the reference
Price$0.14/s silent, $0.21/s audio$0.1575/s
Visual inputtext or framesimage_url or avatar

Which one to use

Use kling-3 when the brief is a scene from words or from first and last frames. Use motion control when you already have a performance on video and want a different character to repeat it.

If you want to condition a new generation on a clip as a style or content reference, neither Kling route does that. Seedance 2.5 and Wan 3.0 list video references in the catalog, and each has its own limit on how many clips and how long they may be. Read supported_input_references on the row first.

A quick catalog check

The catalog row is the contract. GET /v1/videos/models returns supported_input_references for each id: an empty list means references are refused. That is how Sume's docs explain why a Kling request with reference_video_urls fails, and it is the field to read before you build a form that offers a clip upload.

A worked example

Take a 12-second dance reference and a product mascot still. On motion control the cost is 12 x $0.1575 = $1.89, and the mascot performs the dance. On kling-3 you cannot send the dance at all. You could describe it in a prompt for $1.68 silent (12 x $0.14), but the motion would be the model's invention, not the performer's. That is the real difference: one route copies a performance, the other writes a new one.

Reading the error

If a kling-3 request carries a reference field, the API answers with a 400 and names the field. Treat that as routing information, not a bug: the message tells you that the id does not take references, and the fix is to change the id or the route, never to retry. A retry with the same body will fail the same way, and a retry with the same idempotency key and a new body will fail with a conflict.

Build the choice into your own router. If the job has a motion clip, send it to motion control. If it has style or content references, pick a catalog id that lists them. If it has neither, kling-3 is a fine default for a 4 to 15 second scene.

Sources

Related posts

More in Models

All Models posts

Written by Sume