---
title: Kling VIDEO 4.0 | Runware Docs
url: https://runware.ai/docs/models/klingai-video-4-0
description: Unified video generation and editing with multi-keyframe control and clips up to 30 seconds
---
# Kling VIDEO 4.0

![Kling VIDEO 4.0](https://assets.runware.ai/covers/klingai-video-4-0.jpg)

Kling VIDEO 4.0 is a unified video model that generates 1080p clips of up to 30 seconds from text, images, reference videos, and reusable elements. It follows up to 10 keyframes per clip, including first, middle, and last frames, and combines reference images, reference videos, and elements in a single request to hold subjects, style, and motion. It also edits an existing video from a prompt, which suits long narrative shots, storyboard-driven sequences, and reference-driven production work.

- **Status**: live
- **ID**: `klingai:kling-video@4.0`
- Try in Playground
- **Creator**: Kling AI
- **Release Date**: October 23, 2026
- **Capabilities**: Text to Video, Image to Video, Video to Video, Edit, Checkpoint, Audio

## Pricing

$0.133 $0.157 from, per second · ~3m 32s per request

**Rates** (per second)

- 720p · No video input: `$0.133 $0.157`
- 1080p · No video input: `$0.20 $0.235`
- 720p · Video input: `$0.16 $0.188`
- 1080p · Video input: `$0.24 $0.282`

**7 example generations**

- [video-edit](https://runware.ai/docs/models/klingai-video-4-0/examples#example-adaptive-prosthetic-fashion-showcase): `$1.70` (~2m 20s)
- [text-to-video](https://runware.ai/docs/models/klingai-video-4-0/examples#example-whale-skeleton-rig-cleanup-plate): `$2.35` (~10m 16s)
- [first-frame](https://runware.ai/docs/models/klingai-video-4-0/examples#example-technical-apiary-suit-product-reel): `$2.35` (~27m 35s)
- [multiple-keyframes](https://runware.ai/docs/models/klingai-video-4-0/examples#example-subsea-monitoring-logo-animation): `$2.35` (~3m 32s)
- [elements](https://runware.ai/docs/models/klingai-video-4-0/examples#example-seed-vault-film-stock-portrait): `$2.35` (~2m 45s)
- [first-last-frame](https://runware.ai/docs/models/klingai-video-4-0/examples#example-urban-tree-pathology-presenter-clip): `$2.35` (~7m 57s)
- [reference-to-video](https://runware.ai/docs/models/klingai-video-4-0/examples#example-glacial-handpan-performance-visualizer): `$2.82` (~3m 12s)

times vary, measured end to end · [How pricing works](https://runware.ai/docs/models-api/pricing)

## Compatibility & Validation

Either provide `inputs.frameImages`, `inputs.referenceImages`, `inputs.video`, `inputs.referenceVideos`, or `inputs.elements`, or specify `width/height`.

---

When `inputs.elements.frontalImage` or `inputs.elements.images` is provided, `inputs.elements.frontalImage` and `inputs.elements.images` are required.

---

When `inputs.frameImages` is not provided, `positivePrompt` is required.

---

When `inputs.referenceImages` or `inputs.video` or `inputs.referenceVideos` or `inputs.elements` is provided, `positivePrompt` is required.

---

`resolution` cannot be used with `width/height`.

---

When `resolution` is provided, `inputs.frameImages`, `inputs.referenceImages`, `inputs.video`, `inputs.referenceVideos`, or `inputs.elements` is required.

---

`width` and `height` must be used together.

---

The following dimension combinations are supported:

| Configuration | Dimensions |
| --- | --- |
| `720p (16:9)` | `1280x720` |
| `720p (1:1)` | `940x940` |
| `720p (9:16)` | `720x1280` |
| `720p (~21:9)` | `1460x624` |
| `1080p (16:9)` | `1920x1080` |
| `1080p (1:1)` | `1440x1440` |
| `1080p (9:16)` | `1080x1920` |
| `1080p (~21:9)` | `2200x940` |

## Request Parameters

**API Options**

Platform-level options for task execution and delivery.

### [taskType](https://runware.ai/docs/models/klingai-video-4-0#request-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `videoInference`

Identifier for the type of task being performed.

### [taskUUID](https://runware.ai/docs/models/klingai-video-4-0#request-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier for tracking tasks and matching async responses. Must be unique per task.

### [outputType](https://runware.ai/docs/models/klingai-video-4-0#request-outputtype)

- **Type**: `string`
- **Default**: `URL`

Video output type.

**Allowed values**: `URL`

### [outputFormat](https://runware.ai/docs/models/klingai-video-4-0#request-outputformat)

- **Type**: `string`
- **Default**: `MP4`

Specifies the file format of the generated output. The available values depend on the task type and the specific model's capabilities.

- \`MP4\`: Widely supported video container (H.264), recommended for general use.
- \`WEBM\`: Optimized for web delivery.
- \`MOV\`: QuickTime format, common in professional workflows (Apple ecosystem).

**Allowed values**: `MP4` `WEBM` `MOV`

### [outputQuality](https://runware.ai/docs/models/klingai-video-4-0#request-outputquality)

- **Type**: `integer`
- **Min**: `20`
- **Max**: `99`
- **Default**: `95`

Compression quality of the output. Higher values preserve quality but increase file size.

### [webhookURL](https://runware.ai/docs/models/klingai-video-4-0#request-webhookurl)

- **Type**: `string`
- **Format**: `uri`

Webhook URL that receives JSON responses via HTTP POST when generation tasks complete. For batch requests with multiple results, each completed item triggers a separate webhook call as it becomes available.

**Learn more** (1 resource):

- [Webhooks](https://runware.ai/docs/models-api/webhooks) (platform)

### [deliveryMethod](https://runware.ai/docs/models/klingai-video-4-0#request-deliverymethod)

- **Type**: `string`
- **Default**: `async`

Determines how the API delivers task results.

**Allowed values**:

- `async` Returns an immediate acknowledgment with the task UUID. Poll for results using getResponse. Required for long-running tasks like video generation.

**Learn more** (1 resource):

- [Task Polling](https://runware.ai/docs/models-api/task-polling) (platform)

### [uploadEndpoint](https://runware.ai/docs/models/klingai-video-4-0#request-uploadendpoint)

- **Type**: `string`
- **Format**: `uri`

Specifies a URL where the generated content will be automatically uploaded using the HTTP PUT method. The raw binary data of the media file is sent directly as the request body. For secure uploads to cloud storage, use presigned URLs that include temporary authentication credentials.

**Common use cases:**

- **Cloud storage**: Upload directly to S3 buckets, Google Cloud Storage, or Azure Blob Storage using presigned URLs.
- **CDN integration**: Upload to content delivery networks for immediate distribution.

```text
// S3 presigned URL for secure upload
https://your-bucket.s3.amazonaws.com/generated/content.mp4?X-Amz-Signature=abc123&X-Amz-Expires=3600

// Google Cloud Storage presigned URL
https://storage.googleapis.com/your-bucket/content.jpg?X-Goog-Signature=xyz789

// Custom storage endpoint
https://storage.example.com/uploads/generated-image.jpg
```

The content data will be sent as the request body to the specified URL when generation is complete.

### [safety](https://runware.ai/docs/models/klingai-video-4-0#request-safety)

- **Path**: `safety.checkContent`
- **Type**: `object (2 properties)`

Content safety checking configuration for video generation.

#### [checkContent](https://runware.ai/docs/models/klingai-video-4-0#request-safety-checkcontent)

- **Path**: `safety.checkContent`
- **Type**: `boolean`

Enable or disable content safety checking. Increases total generation time.

#### [mode](https://runware.ai/docs/models/klingai-video-4-0#request-safety-mode)

- **Path**: `safety.mode`
- **Type**: `string`
- **Default**: `fast`

Safety checking mode for video generation.

**Allowed values**:

- `fast` Checks key frames.
- `full` Checks all frames.

### [ttl](https://runware.ai/docs/models/klingai-video-4-0#request-ttl)

- **Type**: `integer`
- **Min**: `60`

Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.

### [includeCost](https://runware.ai/docs/models/klingai-video-4-0#request-includecost)

- **Type**: `boolean`

Include task cost in the response.

### [numberResults](https://runware.ai/docs/models/klingai-video-4-0#request-numberresults)

- **Type**: `integer`
- **Min**: `1`
- **Max**: `4`
- **Default**: `1`

Number of results to generate. Each result uses a different seed, producing variations of the same parameters.

### [routing](https://runware.ai/docs/models/klingai-video-4-0#request-routing)

- **Path**: `routing.preferences`
- **Type**: `object (6 properties)`

Model router options. Only read when `model` is `auto`, and never sent to the model.

#### [preferences](https://runware.ai/docs/models/klingai-video-4-0#request-routing-preferences)

- **Path**: `routing.preferences`
- **Type**: `object (3 properties)`

Relative importance of each dimension when models are compared. Weights, not thresholds.

##### [quality](https://runware.ai/docs/models/klingai-video-4-0#request-routing-preferences-quality)

- **Path**: `routing.preferences.quality`
- **Type**: `integer`
- **Min**: `0`
- **Max**: `5`

Importance of one dimension. `0` leaves it out of the decision.

##### [speed](https://runware.ai/docs/models/klingai-video-4-0#request-routing-preferences-speed)

- **Path**: `routing.preferences.speed`
- **Type**: `integer`
- **Min**: `0`
- **Max**: `5`

Importance of one dimension. `0` leaves it out of the decision.

##### [cost](https://runware.ai/docs/models/klingai-video-4-0#request-routing-preferences-cost)

- **Path**: `routing.preferences.cost`
- **Type**: `integer`
- **Min**: `0`
- **Max**: `5`

Importance of one dimension. `0` leaves it out of the decision.

#### [maxPrice](https://runware.ai/docs/models/klingai-video-4-0#request-routing-maxprice)

- **Path**: `routing.maxPrice`
- **Type**: `float`
- **Min**: `0`

Upper bound on what this request may cost, in USD. A model whose cost cannot be bounded is not chosen.

#### [requirements](https://runware.ai/docs/models/klingai-video-4-0#request-routing-requirements)

- **Path**: `routing.requirements`
- **Type**: `string`
- **Max**: `3000`

Conditions the result has to meet, in plain words, such as a style or a feature. A model that cannot meet them is not chosen. Output size is set with width and height rather than described here.

**Inputs**

Input resources for the task (images, audio, etc). These must be nested inside the \`inputs\` object.

### [referenceImages](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-referenceimages)

- **Path**: `inputs.referenceImages`
- **Type**: `array of strings`
- **Min items**: `1`
- **Max items**: `10`
- **Size (each)**: `300 px or more`
- **File size (each)**: `up to 30 MB`
- **Aspect ratio (each)**: `1:2.5 to 2.5:1`

List of reference images (UUID, URL, Data URI, or Base64).

### [frameImages](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-frameimages)

- **Path**: `inputs.frameImages`
- **Type**: `array of strings or objects`
- **Min items**: `1`
- **Max items**: `10`
- **Size (each)**: `300 px or more`
- **File size (each)**: `up to 30 MB`
- **Aspect ratio (each)**: `1:2.5 to 2.5:1`

An array of frame-specific image inputs to guide video generation. Each item can be either a plain image input (UUID, URL, Data URI, or Base64) or an object that pairs an image with a target position in the video.

The `frameImages` parameter allows you to constrain specific frames within the video sequence, ensuring that particular visual content appears at designated points. Position can be specified using `frame` (named positions or frame indices) or `timestamp` (seconds), depending on model support. This is different from `referenceImages`, which provide overall visual guidance without constraining specific timeline positions.

When the `frame` parameter is omitted, automatic distribution rules apply:

- **1 image**: Used as the first frame.
- **2 images**: First and last frames.
- **3+ images**: First and last frames, with intermediate images evenly spaced between.

**Examples**:

**Shorthand format:** When you don't need to specify a frame position, you can pass a plain image input directly.

```json
"frameImages": [
  "aac49721-1964-481a-ae78-8a4e29b91402"
]
```

**Object format:** When you need to specify a position, use an object with `image` and either `frame` or `timestamp` (model-dependent).

```json
"frameImages": [
  {
    "image": "aac49721-1964-481a-ae78-8a4e29b91402",
    "frame": "first"
  }
]
```

**First and last frames:** With two images, they automatically become the first and last frames of the video sequence. You can mix shorthand and object formats.

```json
"frameImages": [
  "aac49721-1964-481a-ae78-8a4e29b91402",
  {
    "image": "3ad204c3-a9de-4963-8a1a-c3911e3afafe",
    "frame": "last"
  }
]
```

**Multiple frames:** With three or more images, the first and last are anchored while intermediate frames are evenly distributed across the timeline.

```json
"frameImages": [
  {
    "image": "aac49721-1964-481a-ae78-8a4e29b91402",
    "frame": "first"
  },
  "c00abf5f-6cdb-4642-a01d-1bfff7bc3cf7",
  {
    "image": "3ad204c3-a9de-4963-8a1a-c3911e3afafe",
    "frame": "last"
  }
]
```

**Format 1: string[]**:

- **Type**: `string`

Image input (UUID, URL, Data URI, or Base64).

**Format 2: object[]**:

#### [image](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-frameimages-format-2-image)

- **Path**: `inputs.frameImages.image`
- **Type**: `string`
- **Required**: true

Image input (UUID, URL, Data URI, or Base64).

#### [frame](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-frameimages-format-2-frame)

- **Path**: `inputs.frameImages.frame`
- **Type**: `object`

Target frame position for the image. Supports first and last frame.

**Allowed values**:

- `first` First frame of the video.
- `last` Last frame of the video.
- `0` Frame index 0 (first frame).
- `-1` Frame index -1 (last frame).

### [video](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-video)

- **Path**: `inputs.video`
- **Type**: `string`
- **Size**: `700 px to 4553 px`
- **Area**: `up to 8.29 MP`
- **Frame rate**: `24 fps to 60 fps`
- **Duration (each)**: `3s to 30s`
- **File size**: `up to 300 MB`
- **Aspect ratio**: `1:2.5 to 2.5:1`

Video input (UUID or URL). Source video for prompt-based editing.

### [referenceVideos](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-referencevideos)

- **Path**: `inputs.referenceVideos`
- **Type**: `array of strings`
- **Min items**: `1`
- **Max items**: `5`
- **Size (each)**: `700 px to 4553 px`
- **Area (each)**: `up to 8.29 MP`
- **Frame rate (each)**: `24 fps to 60 fps`
- **Duration (each)**: `3s to 30s`
- **File size (each)**: `up to 300 MB`
- **Aspect ratio (each)**: `1:2.5 to 2.5:1`

List of reference videos (UUID or URL). Videos inside `elements` count toward the limit of 5 input videos and toward the combined duration limit.

### [elements](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements)

- **Path**: `inputs.elements`
- **Type**: `array of objects (7 properties)`
- **Min items**: `1`
- **Max items**: `7`

Elements allow you to include reusable assets (images, videos, or voices) in your video generation. Each element is identified by an `id` and can be referenced in the prompt using `<<<element_1>>>`, `<<<element_2>>>`, etc. in order of appearance.

An element can contain:

- **Images** via `frontalImage` and optionally `images` (up to 3 additional angles).
- **Videos** via `videos` (cannot be combined with images).
- **Voices** via `voices` (can only be combined with images, not videos).

**Examples**:

**Create a new element with an image:**

```json
"positivePrompt": "A video of <<<element_1>>> walking through a futuristic city",
"inputs": {
  "elements": [
    {
      "id": "my-character-id",
      "description": "A young woman with red hair",
      "frontalImage": "c64351d5-4c59-42f7-95e1-eace013eddab",
      "tags": ["Character"]
    }
  ]
}
```

**Reuse a previously created element by ID:**

```json
"positivePrompt": "A video of <<<element_1>>> sitting in a coffee shop, reading a book",
"inputs": {
  "elements": [
    {
      "id": "my-character-id"
    }
  ]
}
```

#### [id](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements-id)

- **Path**: `inputs.elements.id`
- **Type**: `string`
- **Required**: true
- **Min**: `1`
- **Max**: `20`

Unique identifier for this element. Use to create a new element or reference a previously created one.

#### [description](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements-description)

- **Path**: `inputs.elements.description`
- **Type**: `string`
- **Required**: true
- **Min**: `1`
- **Max**: `100`

Description of the element.

#### [frontalImage](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements-frontalimage)

- **Path**: `inputs.elements.frontalImage`
- **Type**: `string`

Frontal reference image for the element. Required when using image-based elements.

#### [images](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements-images)

- **Path**: `inputs.elements.images`
- **Type**: `array of strings`
- **Min items**: `1`
- **Max items**: `3`

Reference images for the element. Up to 3 images. Requires frontalImage.

#### [videos](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements-videos)

- **Path**: `inputs.elements.videos`
- **Type**: `array of strings`
- **Min items**: `items: 1`

Reference video for the element. Cannot be combined with images or voices.

#### [voices](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements-voices)

- **Path**: `inputs.elements.voices`
- **Type**: `array of strings`
- **Min items**: `items: 1`

Voice audio for the element. Can only be combined with images, not videos.

#### [tags](https://runware.ai/docs/models/klingai-video-4-0#request-inputs-elements-tags)

- **Path**: `inputs.elements.tags`
- **Type**: `array of strings`
- **Min items**: `1`

Classification tags for the element.

**Core Parameters**

Primary parameters that define the task output.

### [model](https://runware.ai/docs/models/klingai-video-4-0#request-model)

- **Type**: `string`
- **Required**: true
- **Value**: `klingai:kling-video@4.0`

Send `auto` instead of an AIR identifier to have the model router choose the model for this task. The rest of the request is unchanged, every value you send is kept, and only the parameters you leave out are filled in. See [Model Router](https://runware.ai/docs/models-api/model-router).

**Learn more** (3 resources):

- [Text To Image: Model Selection](https://runware.ai/docs/learn/text-to-image#model-selection) (learn)
- [Image Inpainting: Model Specialized Inpainting Models](https://runware.ai/docs/learn/image-inpainting#model-specialized-inpainting-models) (learn)
- [Image Outpainting: Other Critical Parameters](https://runware.ai/docs/learn/image-outpainting#other-critical-parameters) (learn)

### [positivePrompt](https://runware.ai/docs/models/klingai-video-4-0#request-positiveprompt)

- **Type**: `string`
- **Required**: conditional — Required when inputs.frameImages is not provided or inputs.referenceImages and inputs.video and inputs.referenceVideos and inputs.elements are provided
- **Min**: `1`
- **Max**: `26000`

Text prompt describing elements to include in the generated output. Images are referenced as `<<<image_1>>>` and videos as `<<<video_1>>>`. Images are numbered across `frameImages` then `referenceImages`, and videos across `video` then `referenceVideos`. Must satisfy `E / 26000 + N / 11000 <= 1`, where `N` counts the non-ASCII characters and `E` the rest.

**Learn more** (1 resource):

- [Prompts](https://runware.ai/docs/learn/prompts) (learn)

### [width](https://runware.ai/docs/models/klingai-video-4-0#request-width)

- **Type**: `integer`
- **Required**: conditional — Required when inputs.frameImages and inputs.referenceImages and inputs.video and inputs.referenceVideos and inputs.elements are not provided
- **Paired with**: height

Width of the generated media in pixels.

**Learn more** (2 resources):

- [Dimensions](https://runware.ai/docs/learn/dimensions) (learn)
- [Image Outpainting: Dimensions Critical For Outpainting](https://runware.ai/docs/learn/image-outpainting#dimensions-critical-for-outpainting) (learn)

### [height](https://runware.ai/docs/models/klingai-video-4-0#request-height)

- **Type**: `integer`
- **Required**: conditional — Required when inputs.frameImages and inputs.referenceImages and inputs.video and inputs.referenceVideos and inputs.elements are not provided
- **Paired with**: width

Height of the generated media in pixels.

**Learn more** (2 resources):

- [Dimensions](https://runware.ai/docs/learn/dimensions) (learn)
- [Image Outpainting: Dimensions Critical For Outpainting](https://runware.ai/docs/learn/image-outpainting#dimensions-critical-for-outpainting) (learn)

### [resolution](https://runware.ai/docs/models/klingai-video-4-0#request-resolution)

- **Type**: `string`
- **Default**: `1080p`

Resolution preset for the output. When used with input media, automatically matches the aspect ratio from the input.

**Allowed values**: `720p` `1080p`

### [duration](https://runware.ai/docs/models/klingai-video-4-0#request-duration)

- **Type**: `integer`
- **Min**: `3`
- **Max**: `30`
- **Default**: `10`

Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps).

## Response Parameters

### [taskType](https://runware.ai/docs/models/klingai-video-4-0#response-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `videoInference`

Identifier for the type of task this response belongs to.

### [taskUUID](https://runware.ai/docs/models/klingai-video-4-0#response-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier echoed from the original request, used to match async responses to their tasks.

### [videoUUID](https://runware.ai/docs/models/klingai-video-4-0#response-videouuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID of the output video.

### [videoURL](https://runware.ai/docs/models/klingai-video-4-0#response-videourl)

- **Type**: `string`
- **Format**: `uri`

URL of the output video.

### [videoBase64Data](https://runware.ai/docs/models/klingai-video-4-0#response-videobase64data)

- **Type**: `string`

Base64-encoded video data.

### [videoDataURI](https://runware.ai/docs/models/klingai-video-4-0#response-videodatauri)

- **Type**: `string`
- **Format**: `uri`

Data URI of the output video.

### [seed](https://runware.ai/docs/models/klingai-video-4-0#response-seed)

- **Type**: `integer`

The seed used for generation. If none was provided, shows the randomly generated seed.

### [NSFWContent](https://runware.ai/docs/models/klingai-video-4-0#response-nsfwcontent)

- **Type**: `boolean`

Flag indicating if NSFW content was detected.

### [cost](https://runware.ai/docs/models/klingai-video-4-0#response-cost)

- **Type**: `float`

Task cost in USD. Present when `includeCost` is set to `true` in the request.

## Examples

### text-to-video (text-to-video)

[Watch video](https://assets.runware.ai/examples/klingai-video-4-0/6ef42192-248a-4e44-9736-966716c54ba5.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "04433265-4a7e-4f5a-b4d9-45c7a723af39",
  "model": "klingai:kling-video@4.0",
  "positivePrompt": "Create a finished, photorealistic VFX cleanup plate for a natural-history museum documentary. Inside a vast contemporary marine-life gallery after closing, a complete blue whale skeleton hangs high above a polished dark concrete floor. The articulated bones are anatomically accurate and remain perfectly stable. The original production setup used suspension cables, temporary lift stands, clamps, floor tape, work lights, and museum technicians, but the delivered shot must show all of that modern rigging and crew completely removed. Reconstruct uninterrupted ceiling architecture, open gallery space, floor texture, reflections, contact shading, and background exhibits wherever equipment would have appeared. No wires, rods, cranes, ladders, stands, tools, tape marks, people, silhouettes, camera reflections, or cleanup artifacts anywhere in frame.\n\nUse a single continuous cinematic shot. Begin with a wide three-quarter view from slightly below the whale's skull, then perform a very slow, smooth dolly and shallow arc toward the rib cage. Maintain restrained parallax through the vertebrae while keeping the entire skeleton comfortably within the 16:9 landscape composition. Natural motion-blur behavior, stable bone geometry, consistent scale, and no cuts or speed changes. The skeleton itself does not move; only the camera moves.\n\nArt direction: quiet institutional grandeur, midnight blue ambient light from the gallery, narrow warm amber conservation lights grazing the aged ivory bone surfaces, deep charcoal architecture, subtle reflections on the floor, gentle atmospheric depth, realistic museum-grade illumination, refined documentary cinematography rather than fantasy. Preserve believable shadows even though the suspension system is absent. No labels, signage, captions, logos, or readable text.\n\nNative sound only: low museum HVAC hum, faint building creaks, soft distant electrical ambience, and subtle camera-dolly room tone. No dialogue and no music.",
  "width": 1920,
  "height": 1080
}
```

---

### first-frame (first-frame)

[Watch video](https://assets.runware.ai/examples/klingai-video-4-0/89f3eb4a-2e39-46b1-85d5-6cf9f6cee22f.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "6136de9f-543a-41fe-9c6c-84e4b1367099",
  "model": "klingai:kling-video@4.0",
  "positivePrompt": "Continue directly from <<<image_1>>> as a polished vertical product showcase reel for premium commercial apiary workwear. Preserve the same beekeeper, exact matte-ivory suit construction, structured amber-mesh hood, charcoal sealed zippers, reinforced panels, amber gloves and boots throughout. Begin on the exact supplied full-body composition. The beekeeper raises one gloved hand to adjust the hood collar, then turns slowly into a strong three-quarter stance as the camera makes a smooth controlled push-in. Use elegant match cuts into tactile macro views of the fine protective mesh, waterproof zipper teeth, double-stitched elbow reinforcement and articulated knee fabric flexing naturally. Return to a full-body side profile as she takes two deliberate steps between translucent honey-amber resin panels; warm light travels across the technical fabric and reveals its weave without making it glossy. Finish with a composed three-quarter hero pose, the hood and complete garment clearly readable. Art direction is refined industrial editorial rather than rustic farm imagery: brushed steel, amber resin, soft atmospheric apiary smoke, precise geometric shadows, ivory, amber and graphite palette. Photorealistic commercial fashion cinematography, realistic anatomy and fabric physics, stable garment details, clean premium color grade, restrained camera motion, crisp material definition, no text, no captions, no logos, no packaging. Native audio: subtle textile movement, quiet zipper detail, distant controlled bee ambience and a minimal low electronic pulse; no speech.",
  "resolution": "1080p",
  "inputs": {
    "frameImages": [
      {
        "image": "https://assets.runware.ai/assets/inputs/6f806424-9146-45b6-b7d7-81f016dd1611.jpg",
        "frame": "first"
      }
    ]
  }
}
```

---

### first-last-frame (first-last-frame)

[Watch video](https://assets.runware.ai/examples/klingai-video-4-0/3f1c146b-ad73-419e-8313-edbd8ad605a7.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "2f73112d-69fa-423b-a65b-c82b292ac91c",
  "model": "klingai:kling-video@4.0",
  "positivePrompt": "Create a polished municipal forestry education presenter clip using <<<image_1>>> as the exact first frame and <<<image_2>>> as the exact last frame. One continuous locked-off medium close-up with no cuts, reframing, zoom, or camera movement. Preserve the presenter's face, age, short dark curls, rust-orange shirt, deep teal field vest, anatomy, and the bracket-fungus specimen consistently throughout. Preserve the specimen archive, window, lighting, lens character, and restrained 1970s public-television documentary color grade.\n\nThe tree pathologist addresses residents directly with calm professional authority and warm eye contact. She speaks this line exactly once in a clear, natural female voice with accurate synchronized lip movement: \"That shelf fungus may signal internal decay. Photograph it, note the tree's location, and contact your city arborist rather than removing it.\"\n\nBegin with the composed pose in <<<image_1>>>. As she speaks, animate subtle breathing, natural blinking, precise mouth articulation, a slight brow lift on \"internal decay,\" and one small controlled movement of the fungus specimen toward the camera on \"Photograph it.\" Her hands remain anatomically stable and the specimen keeps its exact shape. She then eases the specimen slightly downward, gives a restrained reassuring nod, finishes the sentence, closes her mouth, and settles seamlessly into the relaxed pose and small smile shown in <<<image_2>>>. Include clean location sound: intimate dry dialogue, very soft archive room tone, and faint distant leaves outside the window. No music, captions, titles, logos, overlays, extra people, background motion, jump cuts, exaggerated gestures, facial distortion, or object morphing.",
  "resolution": "1080p",
  "inputs": {
    "frameImages": [
      {
        "image": "https://assets.runware.ai/assets/inputs/226e411e-98c2-4de4-9966-de34e13abbfe.jpg",
        "frame": "first"
      },
      {
        "image": "https://assets.runware.ai/assets/inputs/f49b8074-8d67-4753-a2d6-c077bec07cd2.jpg",
        "frame": "last"
      }
    ]
  }
}
```

---

### multiple-keyframes (multiple-keyframes)

[Watch video](https://assets.runware.ai/examples/klingai-video-4-0/c348bc5b-1146-45af-8127-cf2d8b1ef945.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "39bbaf22-2361-4ac7-b9c5-2dcd321bfc46",
  "model": "klingai:kling-video@4.0",
  "positivePrompt": "Create a polished 16:9 animated logo ident for a subsea cable monitoring company. Use the three supplied keyframes as one ordered visual progression while preserving their exact midnight-navy background, centered composition, geometric emblem, phosphor-green and coral-orange palette, typography, scale, and premium Swiss technical-graphics art direction.\n\nBegin exactly from <<<image_1>>>: a nearly dormant central sonar point, incomplete rings, and short cable segment. Animate with disciplined, physically coherent motion rather than flashy particles. The point emits a soft sonar pulse; the thin green arcs sweep outward with precise radar timing while the coral cable draws itself smoothly along a controlled path.\n\nProgress naturally through <<<image_2>>>: the moving cable folds into the geometric lowercase b emblem as the sonar arcs align around it. Fine scanning strokes assemble the letterforms from left to right. Keep every line clean and stable, with no warping, illegible glyphs, random symbols, added interface elements, camera movement, or background changes.\n\nResolve exactly into <<<image_3>>> as the final endpoint. The finished lockup must read BENTHIC with the smaller line SUBSEA SYSTEMS beneath it, matching the supplied final frame. Let the final sonar echo dissipate, settle all geometry, and hold the completed logo cleanly for a confident brand finish. Maintain a locked camera, centered framing, crisp vector-like edges, subtle optical bloom, generous negative space, and broadcast-quality motion throughout.\n\nGenerate restrained synchronized sonic branding: a deep underwater sonar ping at the opening, a quiet rising electronic trace during construction, and a short warm sub-bass resolve when the final logo locks into place. No speech, melody, surf, bubbles, or loud cinematic impact.",
  "resolution": "1080p",
  "inputs": {
    "frameImages": [
      {
        "image": "https://assets.runware.ai/assets/inputs/1a0f2dc6-b1f1-4155-8d29-d46ae2870da5.jpg",
        "frame": "first"
      },
      {
        "image": "https://assets.runware.ai/assets/inputs/d31198ba-3303-440d-9bcd-f6ad2e4c38fd.jpg"
      },
      {
        "image": "https://assets.runware.ai/assets/inputs/13a79bad-c889-438d-bcad-85cec307ba8b.jpg",
        "frame": "last"
      }
    ]
  }
}
```

---

### reference-to-video (reference-to-video)

[Watch video](https://assets.runware.ai/examples/klingai-video-4-0/05c5c5bc-f81a-4dab-967e-43cd1099de3d.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "7a8dcec9-0765-4f61-8895-3547c50c73fd",
  "model": "klingai:kling-video@4.0",
  "positivePrompt": "Create a finished 1080p live-session music visualizer by replacing the plain studio set behind the performer in <<<video_1>>> with the glacial ice-cave environment shown in <<<image_1>>>. Take the performer’s exact identity, facial appearance, clothing, handpan design, seated pose, finger choreography, natural body sway, camera framing, timing, and synchronized musical performance from <<<video_1>>>. Preserve every hand-to-instrument contact accurately and keep the performer fully visible for the entire shot. Take the cave architecture, translucent turquoise ice, frozen arches, dark ice floor, pale blue ambient light, restrained amber lantern accents, realistic cold haze, and serene cinematic color treatment from <<<image_1>>>. Integrate the musician naturally into the new set with physically plausible contact at the stool and feet, subtle reflections on the icy floor, cool environmental spill on clothing and skin, soft amber edge light from the rear lanterns, and a faint metallic reflection across the handpan. Maintain the original locked medium-wide camera and uninterrupted performance; do not change the performer, instrument, gestures, tempo, or shot composition. Photorealistic premium concert-film finish, tranquil and intimate mood, realistic depth, stable background geometry, consistent lighting, no cuts, no camera movement, no duplicated limbs, no added people, no captions, no lettering, no logos.",
  "resolution": "1080p",
  "inputs": {
    "referenceImages": [
      "https://assets.runware.ai/assets/inputs/25311a8c-ad4d-458c-93cd-3ad1f7c0af91.jpg"
    ],
    "referenceVideos": [
      "https://assets.runware.ai/assets/inputs/47d9084c-0d95-4c85-a330-fed125e8ef94.mp4"
    ]
  }
}
```

---

### video-edit (video-edit)

[Watch video](https://assets.runware.ai/examples/klingai-video-4-0/b013f302-aeb6-4f7f-b067-bcf17602cf76.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "0feea254-ebeb-4079-a8ee-b0b7589bc75f",
  "model": "klingai:kling-video@4.0",
  "positivePrompt": "Edit <<<video_1>>>. Replace only the plain matte-white prosthetic shin cover with a fitted couture cover shaped like overlapping porcelain armor petals, finished in deep cobalt-blue gloss with fine silver kintsugi-style seams; keep it physically attached to the existing prosthesis, anatomically aligned, consistent in scale, and temporally stable through the walk and turn. Keep everything else unchanged: the same model, face, body, prosthetic structure and foot, sand-colored tailored jumpsuit, natural walking gait, pause, quarter-turn, hand positions, performance timing, warm terracotta studio, floor, soft directional lighting, shadows, reflections, depth of field, low-angle dolly movement, vertical composition, original edit rhythm, and source audio. Preserve realistic contact, occlusion, motion blur, and reflections. No added text, logos, accessories, people, or camera cuts.",
  "resolution": "1080p",
  "inputs": {
    "video": "https://assets.runware.ai/assets/inputs/5a7d03e0-fcdb-4fd3-b001-fdc06d85c5d1.mp4"
  }
}
```

---

### elements (elements)

[Watch video](https://assets.runware.ai/examples/klingai-video-4-0/01695241-bc48-4d14-91f5-716918c3a4bc.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "51ce026d-f92d-44d1-ac8f-8aeb5736a477",
  "model": "klingai:kling-video@4.0",
  "positivePrompt": "Create a polished institutional heritage-film portrait for an agricultural conservation museum. Place <<<element_1>>> as the only person inside a working underground seed vault lined with tall powder-coated steel storage cabinets and shallow specimen drawers. Begin in a composed medium-wide profile as the archivist walks slowly along the aisle, stops at an open drawer, lifts one small glass seed vial, turns it gently beneath a practical inspection lamp, and returns it to its exact slot. Keep identity, outfit, facial structure, and body proportions fully consistent with the reusable element throughout. The performance is quiet, precise, and credible rather than theatrical.\n\nFilm the action as one restrained lateral dolly shot at human eye level with the subject remaining clearly visible and unobstructed. The vault should feel functional and meticulously maintained: cream-painted masonry, brushed metal handles, small paper inventory labels without legible writing, neatly ordered vials, and slight condensation around an insulated service pipe. No other people, no futuristic interfaces, no logos, no captions, and no added typography.\n\nThe defining treatment is an authentic late-1970s 16mm reversal-film atmosphere. Apply a cohesive photochemical grade with restrained mustard highlights, cool cyan-green shadows, softened whites, modest contrast, slightly faded saturation, dense but readable blacks, fine organic grain, subtle halation around the inspection lamp, mild gate weave, occasional exposure breathing, and delicate dust that never obscures the face. Preserve realistic skin tone beneath the period color response. Lighting should resemble an older scientific documentary: overhead fluorescent ambience mixed with one warm tungsten task lamp, producing practical pools of light and gently underexposed aisle depth. Avoid modern teal-orange grading, digital sharpness, heavy vignette, aggressive scratches, jump cuts, slow-motion spectacle, or retro parody. The finished clip should feel like a carefully restored conservation-film excerpt discovered in a research institute archive. Natural synchronized audio only: low refrigeration hum, soft footsteps, a drawer sliding on metal runners, and the faint glass click of the vial.",
  "resolution": "1080p",
  "inputs": {
    "elements": [
      {
        "id": "seed_archivist_4827",
        "description": "A seed-bank archivist in a period laboratory uniform.",
        "frontalImage": "https://assets.runware.ai/assets/inputs/fb9d8b22-7f4b-4e14-8e72-0726fa012c33.jpg",
        "images": [
          "https://assets.runware.ai/assets/inputs/21c11b42-0b0e-4990-8e41-b405ccfee935.jpg"
        ],
        "tags": [
          "Character"
        ]
      }
    ]
  }
}
```