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.

4 min readSume
All posts

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.

kling-motion-control_create payload checks in Sume's MCP code (read 2026-10-05)
FieldRuleError code
model, endpoint, provider_endpointMust be absentprovider_fields_not_accepted
motion_video_urlPublic HTTPS URL, non-emptymissing_payload_field
duration_secondsNumber, 1 to 30, equals clip lengthmissing_payload_field
image_url or avatarExactly oneconflicting_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

All Integrations posts

Written by Sume