Kling motion control: output length follows the motion video
In Sume's Kling 3.0 motion control, duration_seconds (1-30) only sets the reservation. The motion video sets the output length. Price: $0.1575 a second.

In Sume's Kling 3.0 Motion Control, the length of your motion_video_url sets the length of the output. The required duration_seconds field (1 to 30) only tells Sume how much to reserve at admission, and is never forwarded to the provider.
So declare it honestly: round up to the real length of the motion video, because that is what the reservation is based on.
The request
The route is POST /v1/kling/3.0/motion-control, with the face-control alias POST /v1/avatar-1.0/motion-control and two model-run twins. All of them store the public model id kling/3.0/motion-control. The body needs exactly one visual source (image_url, or avatar_id or avatar_handle), a motion_video_url, and duration_seconds.
Optional fields are prompt (appearance steering only), keep_original_sound (default true, false gives a silent clip), and character_orientation (video by default, or image). Send an Idempotency-Key. The body is strict: Video 1.0 words such as reference_image_urls and model are rejected.
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: kling-mc-001" \
-d '{"image_url":"https://example.com/character.png",
"motion_video_url":"https://example.com/dance-8s.mp4",
"duration_seconds":8,"mode":"async"}'What the reservation costs
The price is ceil(duration_seconds) times the Kling motion-control list ($0.126 per output second, fal list noted 2026-08) times the 1.25 Sume margin, which is $0.1575 per second. Sume reserves it at admit, captures it on completion and refunds it on failure.
| duration_seconds | Reserve at $0.1575 a second |
|---|---|
| 1 | $0.1575 |
| 5 | $0.7875 |
| 8 | $1.26 |
| 10 | $1.575 |
| 30 | $4.725 |
Why the declaration matters
The provider has no duration setting, so there is nothing to tune on the model side. The length of the reference clip decides how long the character moves. If you under-declare, you ask Sume to reserve less than the real clip will need; if you over-declare, you reserve more than you need. Measure the motion video first with video inspect, which returns a probe, and use the probed length rounded up.
The cap is 30 seconds. For a longer performance, cut the motion reference into pieces of 30 seconds or less with video trim and join the outputs in Timeline 1.0.
Audio and orientation
With keep_original_sound: true the sound of the reference video is kept, which makes this a motion-and-voice transfer rather than a lip-sync tool. Set it to false for a silent clip you can score in Timeline. character_orientation of video follows the reference's orientation and image follows the still.
Kling 3.0 Motion Control is a different product from the Video 1.0 kling-3 text-to-video and start/end-frame id, and the motion route will not accept that id's reference fields.
A two-job example
You have a 42-second dance reference and one character still. The cap is 30 seconds per job, so cut the dance into 21-second halves with video trim (start 0 and duration 21, then start 21 and duration 21), run motion control twice with duration_seconds: 21, and join both outputs in Timeline. Each job reserves 21 x $0.1575 = $3.3075, so $6.615 for both, plus $0.10 for a one-minute render.
Check the arithmetic against the live price in GET /v1/catalog, because the list price quoted in the docs is dated 2026-08.
Admission preview
POST /v1/generation/admission-preview accepts the public id and the legacy face-control id, and normalizes both to kling/3.0/motion-control. Use it to see the reserve before you spend. If the balance is too low, the submit is refused at admission rather than failing partway.
Checklist before you submit
- Probe the motion video with video inspect and note its duration.
- Round up and set
duration_secondsbetween 1 and 30. - Send exactly one of
image_urlor an avatar id or handle. - Do not send
model,reference_image_urlsor provider endpoint fields. - Add an
Idempotency-Key, and pollGET /v1/jobs/:id/statusor use a webhook.
Before you build
Before you build, read the linked Sume docs page for the exact request fields, limits and prices, because those pages are the source of truth and can change. Run one short, cheap test with your own material first, check the output in a player and in your editor, and only then scale to the full shot list. Keep every job id and file you approve, so a later change never forces you to regenerate work that was already signed off. Note that this post describes Sume's catalog and tools; Sume does not run Luma Ray 3.2, and nothing here claims HDR or EXR output.
Sources
Related posts
More in Developers
- Kling motion control prompt: appearance only, what to write
On Sume's Kling motion control the prompt steers appearance only. The reference video sets all the motion. Write outfit, light and style, not actions.
- Kling motion control price in usage.billable_amount_usd_micros
The Sume motion control submit response returns usage.billable_amount_usd_micros. Divide by 1,000,000 to log the reserve: 30 s is 4,725,000 micros, or $4.725.
- Kling motion control webhook_url: a Python receiver that verifies
Send mode async plus webhook_url on a Kling motion control submit, then verify x-sume-webhook-signature (HMAC SHA-256 over timestamp.body) in Python.
- Compare 4 image models in one labelled 2x2 sheet with cost per tile
Send one prompt to four Sume image models, paste the results into a 2x2 Pillow sheet, and print each model id with its billed usage.cost on its own tile.
Written by Sume