Skip to main content
Skip to main content

Kling V3 0 Motion Control

Kling VIDEO 3.0 Motion Control is Kuaishou's upgrade to the motion-control capability first introduced in VIDEO 2.6: you drive a generated character's movement from a reference video or hand-painted motion paths, instead of describing motion in words. The official guide positions it around three headline capabilities - consistent facial identity from any angle, complex emotions faithfully reproduced, and high-fidelity face-occlusion restoration.

  • 99.9% SLA
  • Official Discounts
  • Pay-as-you-go
  • Fast & Low Latency
Brand:KwaiVGIPrice: From $0.126 / sec

API DOCS / SIMPLIFIED

Integrate this model with one task-based API flow

Kling VIDEO 3.0 Motion Control is Kuaishou's upgrade to the motion-control capability first introduced in VIDEO 2.6: you drive a generated character's movement from a reference video or hand-painted motion paths, instead of describing motion in words. The official guide positions it around three headline capabilities - consistent facial identity from any angle, complex emotions faithfully reproduced, and high-fidelity face-occlusion restoration. The examples below are rendered from Kling V3 0 Motion Control, the current gateway base URL, and the selected public model contract using the active example "kwaivgi/kling-v3.0-pro/motion-control output".

X-API-Key on every request
POST /api/v1/openapi/task
GET /api/v1/openapi/task/status/{task_id}
Async task workflow

Single code window

Switch language once. Each example already includes both the task creation request and the task status polling request.

Unified Example
API_KEY="<API_KEY>"
BASE_URL="https://api.musespark.ai"
REQUEST_BODY='{
  "model_id": "kling-v3-0-motion-control",
  "parameters": {
    "image": "<IMAGE_URL>",
    "video": "<VIDEO_URL>",
    "prompt": "A cinematic drone shot over a futuristic city at sunrise, volumetric light, realistic motion",
    "resolution": "1080p",
    "character_orientation": "video",
    "keep_original_sound": true,
    "batch_size": 1
  }
}'

CREATE_RESPONSE=$(curl --request POST "$BASE_URL/api/v1/openapi/task" \
  --header "X-API-Key: $API_KEY" \
  --header "Content-Type: application/json" \
  --data-raw "$REQUEST_BODY")

TASK_ID="<TASK_ID_FROM_CREATE_RESPONSE>"

curl "$BASE_URL/api/v1/openapi/task/status/$TASK_ID" \
  --header "X-API-Key: $API_KEY"

Request and response JSON become the documentation

Keep the payload and task status envelope as the primary contract. Field descriptions, optionality, and enum hints now live inline as JSON comments.

Request Body

Caller payload

This is the request envelope accepted by the public gateway for the selected model contract.

Field comments and caller parameters come directly from the current item's model schema.
{
"model_id": "kling-v3-0-motion-control",// target model
"parameters": {
"image": "<IMAGE_URL>",// upload the source image for motion control · accept image/*
"video": "<VIDEO_URL>",// provide a publicly accessible motion reference video. It must be 3-10 seconds when character orientation is set to Image, or 3-30 seconds when set to Video · accept video/*
"prompt": "A cinematic drone shot over a futuristic city at sunrise, volumetric light, realistic motion",// describe the desired motion and video result
"resolution": "1080p",// output video resolution · enum: 720p | 1080p
"character_orientation": "video",// choose which input determines the character's orientation. Image: use the orientation from the reference image; the motion reference video must be 3-10 seconds. Video: use the orientation from the reference video; the video must be 3-30 seconds. Both options require an image and a motion reference video · enum: Image | Video
"keep_original_sound": true,// choose whether to preserve the original video sound
"batch_size": 1// standard quantity control field. The allowed range for this item is 1-4 · min 1 · max 4
}
}
Response Body

Gateway response

This is the task status response you will query with task_id until the task reaches a terminal state.

Poll every 2-5 seconds and stop once status becomes completed, failed, cancelled.
{
"code": 200,// 200 on success
"msg": "success",
"data": {
"task_id": "task_01HQX8N2QJ0YQ8Q0T7G6N4V6K2",// use for status polling
"status": "completed",// enum: queued | running | completed | failed | cancelled
"progress": 100,// 0-100 if available
"completed_at": 1760000000,// unix timestamp
"expires_at": 1760001800,// unix timestamp
"result": {
"output_urls": [// generated files
"https://cdn.example.com/output.png"
]
}
}
}