Port a Kling 3 request to Sume motion control: three fields to remove
Sume Kling 3.0 Motion Control has a strict body. Moving from a Video Router kling-3 request means dropping model and reference urls and adding two fields.

If you already call Kling 3 through the Sume Video Router and want motion control, do not just change the URL. The Kling 3.0 Motion Control route has a strict body: it rejects model, reference_image_urls, reference_video_urls, and provider endpoint fields, and it requires motion_video_url and duration_seconds. Remove three fields, add two, and the same request shape works.
The two are different products on Sume. Video Router kling-3 generates from text or start and end frames, and has no reference_*_urls. Motion control animates a still with the motion of a video you supply.
Field by field
| Field | Video Router kling-3 | Motion control | Port action |
|---|---|---|---|
| model | Required, a catalog id | Rejected | Delete; the URL selects the model |
| reference_image_urls | Not accepted for kling-3 | Rejected | Use image_url, one still |
| reference_video_urls | Not accepted for kling-3 | Rejected | Use motion_video_url, one clip |
| prompt | Drives the scene | Optional, appearance only | Shorten it; motion comes from the video |
| motion_video_url | Not applicable | Required, up to 30 s | Add |
| duration_seconds | Chosen per clip | Required, 1 to 30, reservation basis | Add the measured clip length |
Before and after
A Video Router request names the model in the body and posts to /v1/video-router/generate. The motion control request posts to its own path, and the model id is stored by Sume as kling/3.0/motion-control.
curl -X POST https://api.sume.com/v1/kling/3.0/motion-control \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: port-demo-001" \
-d '{"image_url": "https://example.com/mascot.png", "motion_video_url": "https://example.com/reference.mp4", "duration_seconds": 10, "mode": "async"}'What changes in the result
The output length is the length of the motion video, so there is no duration choice to make beyond declaring it honestly. The reference audio is kept by default (keep_original_sound), and character_orientation decides whether the video's framing or the still's wins.
The price model changes too. Motion control is ceil(duration_seconds) times $0.1575. Check the current per-clip price of kling-3 in the live catalog before you compare, since it depends on resolution and audio.
Picking between them
A 30-second comparison of the two routes is in motion control at $4.725 against two kling-3 jobs.
- You have a motion reference and one still: motion control.
- You have only text, or a first and last frame: Video Router
kling-3. - You need several reference images to steer a scene: neither of these two; look at the models that list
reference_image_urlsinGET /v1/video-router/models.
Sources
Related posts
More in Developers
- Portuguese speech to text API: Sume STT language_code pt or pt-BR
Transcribe Portuguese audio with Sume STT using language_code pt or pt-BR, then check the reported language and word times. $0.01 per audio minute.
- POST /v1/images returns 200 or 202: one Python handler for Sume
Sume's image route blocks up to 30 seconds and returns 200 with images, or 202 with a job envelope. One handler that covers both and never double-submits.
- POST /v1/images status codes on Sume: 200, 202, 400, 404, 502
What each HTTP status from Sume's image route means and what to do: 200 images, 202 job envelope, 400 unsupported_parameter, 404 model_not_found, 502 failed.
- Print a Sume job timeline from the events endpoint in Python
Fetch GET /v1/jobs/{id}/events and print one line per event with the standard library. A pull snapshot, not a stream, so run it again to see more.
Written by Sume