kling-motion-control_create: motion_video_url, 1 to 30 s, no model
kling-motion-control_create needs a public HTTPS motion_video_url and duration_seconds of 1 to 30, and refuses a model field with provider_fields_not_accepted.

Kling 3.0 motion control makes a still image perform the movement of a driving video. On Sume's hosted MCP server the tool for it is kling-motion-control_create. Its payload is small, but three rules catch agents: a model field is refused, the driving clip must be a public HTTPS URL, and duration_seconds is required and capped at 30.
No model field
The tool selects the provider model on the server. If the payload has model, endpoint or provider_endpoint, the call fails with provider_fields_not_accepted, and the message says Kling 3.0 Motion Control selects the provider model server-side. The data holds the field name and a next_action.
This catches an agent that learned a model id from a catalog and tries to pass it. The route is fixed, so leave the key out.
The driving clip and its length
motion_video_url must be a non-empty public HTTPS URL of the driving video. A missing or blank value returns missing_payload_field with path motion_video_url. duration_seconds is required too, as a number from 1 to 30, matching the length of the driving clip, and the message says it is needed for admission. Admission uses it to price and place the job before the video is processed, so a wrong number gives a wrong estimate.
The visual source follows the same rule as the avatar tool: image_url, or avatar_id or avatar_handle, never both.
| Field | Rule | Error code |
|---|---|---|
| model, endpoint, provider_endpoint | Must be absent | provider_fields_not_accepted |
| motion_video_url | Public HTTPS URL, non-empty | missing_payload_field |
| duration_seconds | Number, 1 to 30, equals clip length | missing_payload_field |
| image_url or avatar | Exactly one | conflicting_payload_fields |
Measure the clip before you call
Do not ask the model to guess the duration. Probe the clip with a tool you control, or use the Sume video inspection tool, then pass the number. Run the call with dry_run first. A dry run costs nothing and shows the estimate for the length you declared.
If the driving clip is longer than 30 seconds, cut it first. The cap is the tool's own rule, so a longer value is refused rather than shortened.
{
"idempotency_key": "dance-promo-2",
"dry_run": true,
"payload": {
"image_url": "https://cdn.example.com/host.png",
"motion_video_url": "https://cdn.example.com/dance.mp4",
"duration_seconds": 8
}
}Sources
Related posts
More in Integrations
- Linktree video background 50 MB limit: bitrate budget by length
Linktree video backgrounds loop with no time limit but a 50 MB cap. A 15-second loop can average 26.7 Mbps, a 60-second one 6.7 Mbps. Table and trim steps.
- Linktree video background 9:16 or 16:9: make both from one clip
Linktree's page pairs 9:16 with landscape and 16:9 with portrait. Cut both ratios from one Sume clip with video filter crop fractions: 0.3164 wide, x 0.3418.
- Linktree video background is muted: drop the audio with trim
Linktree plays a video background on a loop with the sound muted, so audio only adds bytes. Send audio set to drop on Sume video trim, then probe has_audio.
- Can a MAI-Voice-2.1 WAV join a Sume timeline? Hosted audio only
Sume timeline audio joins only Sume-hosted files, and the import route takes TikTok or Instagram URLs, so a MAI-Voice-2.1 file stays outside. What to do.
Written by Sume