Skip to main content
Kling 3.0 is an advanced video generation model that supports:
  • Text-to-video generation (omit start_frame_url)
  • Start/end frame video generation
  • Multi-shot video generation (2–6 shots)
  • Inline character/object elements with voice support
  • AI audio generation (on by default)
  • Resolutions: 720p (std), 1080p (pro), and 4K (4k — $0.30/sec)
  • Aspect ratios: 1:1, 16:9, 9:16
  • Duration: 3–15 seconds

Model

kuaishou/kling-3.0-video

Parameters

ParameterTypeRequiredDefaultDescription
promptstringConditional-Text prompt. Mutually exclusive with multi_shots
modestringNo"pro""std" (720p), "pro" (1080p), or "4k" (4K — $0.30/sec)
durationintegerNo5Video duration in seconds (3–15)
aspect_ratiostringNo"16:9""1:1", "16:9", or "9:16". Safe to omit — server defaults to "16:9"
native_audiobooleanNotrueGenerate AI audio from the video content
start_frame_urlstringNo-First frame image URL. Omit for text-to-video
end_frame_urlstringNo-Last frame image URL
elementsarrayNo-Character/object elements to include in the video
multi_shotsarrayNo-Multi-shot sequence (2–6 shots, each with prompt and duration). Mutually exclusive with prompt

Elements

Elements are created automatically from your input, used during generation, then auto-deleted on completion.
"elements": [
  {"description": "Woman in red jacket", "type": "image", "image_urls": ["front.jpg", "side.jpg"]},
  {"description": "Man dancing", "type": "video", "video_url": "dance.mp4"}
]
Each element accepts:
ParameterTypeDefaultDescription
descriptionstring""Short description of the element (max 100 chars)
typestring"image"Element source type: "image" or "video"
image_urlsstring[]-Source image URLs for an image element (max 4)
video_urlstring-Source video URL for a video element

Multi-Shot Mode

Generate multi-scene videos with 2–6 shots. When using multi_shots, the prompt field is not used. Key Points:
  • Each shot must have a prompt and duration (minimum 1 second)
  • Total duration of all shots must be between 3–15 seconds
  • multi_shots and prompt are mutually exclusive

Examples

Example 1: Text-to-Video

curl -X POST https://api.unifically.com/v1/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "kuaishou/kling-3.0-video",
    "input": {
      "prompt": "A cinematic drone shot over a misty forest at dawn",
      "duration": 10,
      "mode": "pro",
      "native_audio": true
    }
  }'

Example 2: Image-to-Video

curl -X POST https://api.unifically.com/v1/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "kuaishou/kling-3.0-video",
    "input": {
      "prompt": "A majestic eagle soaring through mountain peaks at sunset",
      "start_frame_url": "https://example.com/eagle.jpg",
      "duration": 10,
      "mode": "pro",
      "native_audio": true
    }
  }'

Example 3: Start and End Frames

curl -X POST https://api.unifically.com/v1/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "kuaishou/kling-3.0-video",
    "input": {
      "prompt": "Character walks towards the camera with a confident stride",
      "start_frame_url": "https://example.com/start-pose.jpg",
      "end_frame_url": "https://example.com/end-pose.jpg",
      "duration": 8,
      "mode": "pro"
    }
  }'

Example 4: Multi-Shot

curl -X POST https://api.unifically.com/v1/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "kuaishou/kling-3.0-video",
    "input": {
      "start_frame_url": "https://example.com/scene.jpg",
      "mode": "pro",
      "native_audio": true,
      "multi_shots": [
        {
          "prompt": "Person walking towards camera in a park",
          "duration": 5
        },
        {
          "prompt": "Close-up of person smiling warmly",
          "duration": 4
        },
        {
          "prompt": "Wide shot of the beautiful landscape panorama",
          "duration": 6
        }
      ]
    }
  }'

Response

{
  "code": 200,
  "success": true,
  "data": {
    "task_id": "abc123def456",
    "status": "pending"
  }
}