CtrlK
BlogDocsLog inGet started
Tessl Logo

klingai-camera-control

Control camera movements in Kling AI video generation. Use when creating cinematic shots, pans, tilts, zooms, or dolly moves. Trigger with phrases like 'klingai camera', 'kling ai camera motion', 'klingai cinematic', 'klingai pan zoom'.

80

Quality

77%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./plugins/saas-packs/klingai-pack/skills/klingai-camera-control/SKILL.md
SKILL.md
Quality
Evals
Security

Kling AI Camera Control

Overview

Add controlled camera movements to text-to-video and image-to-video generation using the camera_control parameter. Supports pan, tilt, zoom, roll, and dolly. Available on v1.6+ models.

Supports: POST /v1/videos/text2video and POST /v1/videos/image2video

Camera Control Parameters

"camera_control": {
    "type": "simple",     # "simple" = one movement axis
    "config": {
        "horizontal": 0,  # Pan: -10 (left) to 10 (right)
        "vertical": 0,    # Tilt: -10 (down) to 10 (up)
        "zoom": 0,         # Zoom: -10 (out) to 10 (in)
        "roll": 0,         # Roll: -10 (CCW) to 10 (CW)
        "pan": 0,          # Dolly: -10 (left) to 10 (right)
        "tilt": 0,         # Dolly: -10 (down) to 10 (up)
    }
}

Rule: For type: "simple", only ONE field in config can be non-zero.

Cinematic Shot Examples

Slow Pan Right

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "A medieval castle on a cliff at sunrise, fog in the valley below",
    "duration": "5",
    "mode": "professional",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 5, "vertical": 0, "zoom": 0, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Dramatic Zoom In

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "Close-up of a tiger's face, intense eyes, jungle background",
    "duration": "5",
    "mode": "professional",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 0, "zoom": 7, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Tilt Up Reveal

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "A skyscraper, starting from the base looking up, glass and steel",
    "duration": "5",
    "mode": "standard",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 8, "zoom": 0, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Dolly Forward

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-master",
    "prompt": "Walking through a dark forest, trees on both sides, moonlight filtering through",
    "duration": "5",
    "mode": "standard",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 0, "zoom": 0, "roll": 0, "pan": 0, "tilt": 5}
    },
})

Camera Control with Image-to-Video

# Animate a landscape photo with a slow zoom out
response = requests.post(f"{BASE}/videos/image2video", headers=get_headers(), json={
    "model_name": "kling-v2-1",
    "image": "https://example.com/landscape.jpg",
    "prompt": "Gentle wind, clouds moving slowly",
    "duration": "5",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 0, "zoom": -5, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Important: For image-to-video, camera_control is mutually exclusive with image_tail, dynamic_masks, and static_mask.

Shot Type Quick Reference

Shot TypeConfig FieldValueDescription
Pan righthorizontal5-8Slow pan, good for landscapes
Pan lefthorizontal-5 to -8Reveal from right to left
Tilt upvertical5-8Upward reveal (buildings, trees)
Tilt downvertical-5 to -8Downward motion
Zoom inzoom5-10Focus on subject, dramatic
Zoom outzoom-5 to -10Reveal, establishing shot
Dutch tiltroll3-5Unsettling, artistic angle
Push intilt3-5Dolly forward (depth effect)
Pull backtilt-3 to -5Dolly backward (reveal)

Intensity Guidelines

Value RangeEffect
1-3Subtle, barely perceptible
4-6Moderate, natural-feeling
7-8Strong, dramatic
9-10Maximum, may feel unnatural

Recommendation: Start at 4-6 for most cinematic shots. Go higher for dramatic reveals or action sequences.

Error Handling

ErrorCauseFix
400 invalid camera configMultiple non-zero values in simple modeSet only one field to non-zero
Jerky motionValue too highReduce to 4-6 range
No visible movementValue too low (1-2)Increase to 3+
Mutual exclusivity errorCombined with masks/image_tailUse only camera_control OR masks

Resources

  • Camera Control Guide
  • Motion Control Guide
  • Developer Portal
Repository
jeremylongshore/claude-code-plugins-plus-skills
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.