UlazAI developer docs
Kling 3.0 Motion Control API
Kling 3.0 Motion Control
Use Motion Control when you want one character image to follow the movement of one driving video. The workflow requires exactly one image URL, one motion video URL, a prompt, and a quality mode.
/api/v1/video-studio/generate/
with model_slug="kling_3_0_motion_control".
/api/v1/generate/video/
with video_model="kling_3_0_motion_control".
Authentication
Send a bearer token or API key on every request.
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Canonical request
This request goes to /api/v1/video-studio/generate/.
It is the preferred API contract for new integrations.
{
"model_slug": "kling_3_0_motion_control",
"prompt": "No distortion, the character's movements are consistent with the video.",
"input_image_urls": ["https://example.com/character.png"],
"input_video_urls": ["https://example.com/motion.mp4"],
"character_orientation": "video",
"quality_mode": "720p",
"duration_seconds": 15
}
Field reference
| Field | Required | Notes |
|---|---|---|
model_slug |
Yes | Must be kling_3_0_motion_control |
prompt |
Yes | Maximum 2500 characters |
input_image_urls |
Yes | Exactly one public image URL |
input_video_urls |
Yes | Exactly one public motion video URL |
character_orientation |
No | Use video for up to 30 seconds or image for up to 10 seconds |
quality_mode |
Yes | Use 720p or 1080p |
duration_seconds |
Yes | Integer from 3 to 30. Pricing uses this duration. If orientation is image, max 10. |
Legacy compatibility request
This request goes to /api/v1/generate/video/.
Use it if you already integrate with the older authenticated video API.
{
"video_model": "kling_3_0_motion_control",
"prompt": "No distortion, the character's movements are consistent with the video.",
"source_image_urls": ["https://example.com/character.png"],
"video_urls": ["https://example.com/motion.mp4"],
"character_orientation": "video",
"quality_mode": "720p",
"duration_seconds": 15
}
Response examples
Canonical generate response
{
"success": true,
"job_ids": ["8990f846-f6f0-4ff1-a298-d0a72d49e7ad"],
"credits_remaining_total": 438
}
Legacy generate response
{
"success": true,
"data": {
"generation_id": "7f8cfd64-5b91-4a31-a987-e0ea8fd9d0a1",
"generation_type": "video",
"video_model": "kling30_motion",
"mode": "image-to-video",
"status": "processing",
"credits_used": 180
}
}
Status polling
GET /api/v1/video-studio/status/{job_id}/
GET /api/v1/generate/{generation_id}/
Pricing
Motion Control pricing is duration-based.