> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crun.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Kling-v3.0 Video Generation

> Kling Video 3.0: Generate cinematic videos up to 15 seconds with multi-shot control, native audio, and improved consistency.

## Overview

Kling Video 3.0 turns text descriptions or still images into video clips at up to 4K resolution. The model generates
videos between 3 and 15 seconds—a significant jump from the 10-second limit of earlier versions. It
handles realistic scenes, stylized content, and complex multi-step actions within a single generation.

You can also generate native audio alongside the video, including dialogue with lip sync, sound effects, and ambient
sound—all in one pass.

## Key Rules

* `multi_shots` is required on every request.
* When `multi_shots` is `false`, `prompt` is required.
* When `multi_shots` is `true`:
  * `img_urls` must contain exactly 1 image.
  * `audio` is automatically forced to `true`.
  * `shot_type` controls how multi-shot generation works:
    * `customize`: requires `multi_prompt`
    * `intelligence`: requires `prompt`
* When `shot_type` is `customize`, the sum of all shot durations in `multi_prompt` must exactly equal `duration`.
* In single-shot mode, `img_urls` supports 1 start frame or 2 frames for first/last frame control.
* If `img_urls` is provided, `aspect_ratio` is ignored and the output follows the first image aspect ratio.
* `audio` is forced to `true` in multi-shot mode.
* `element_list` supports up to 3 elements, and each element accepts 1 to 4 reference images.

## How to use it

### Text to video

Describe what you want to see. The model generates visuals (and optionally audio) from your description.

**Usage Examples**:

```json theme={null} theme={null}
{
  "model": "kling/v3",
  "input": {
    "mode": "std",
    "multi_shots": false,
    "prompt": "An astronaut floats alone in deep space, Earth glowing blue behind them, camera slowly rotating around their helmet reflecting the stars.",
    "duration": 10,
    "aspect_ratio": "16:9",
    "audio": true
  }
}
```

### Image to video

Upload a starting image and describe the motion you want. You can also provide an end image to guide where the video
should land.

**Usage Examples**:

<CodeGroup>
  ```json start image theme={null} theme={null}
  {
    "model": "kling/v3",
    "input": {
      "mode": "std",
      "multi_shots": false,
      "prompt": "Cinematic drone footage of a dragon made of living fire soaring over a frozen Nordic fjord at twilight.",
      "img_urls": [
        "https://example.com/start_image.jpg"
      ],
      "duration": 15,
      "audio": true
    }
  }
  ```

  ```json first-last-frame theme={null} theme={null}
  {
    "model": "kling/v3",
    "input": {
      "mode": "pro",
      "multi_shots": false,
      "prompt": "The robot slowly repairs itself and stands up ready for battle.",
      "img_urls": [
        "https://example.com/start-frame.jpg",
        "https://example.com/end-frame.jpg"
      ],
      "duration": 15,
      "audio": true
    }
  }
  ```
</CodeGroup>

## Multi-shot mode

For videos with multiple scenes, set `multi_shots` to `true`.

There are two available multi-shot generation modes:

### Validation Rules

* When `multi_shots=true` and `shot_type=customize`:
  * `multi_prompt` is required
  * Total duration of all shots must equal `duration`

* When `multi_shots=true` and `shot_type=intelligence`:
  * `prompt` is required
  * `multi_prompt` should not be provided

* When `multi_shots=false`:
  * `shot_type` is automatically set to `null`

### 1. Customize Mode

Use `shot_type="customize"` together with `multi_prompt` to manually define each shot.

Pass a JSON array of shot definitions, each with a prompt and duration.

You can define up to 6 shots, with a minimum of 1 second per shot. The total duration of all shots must equal the
`duration` parameter.

### Example

```json theme={null}
{
  "model": "kling/v3",
  "input": {
    "mode": "pro",
    "multi_shots": true,
    "shot_type": "customize",
    "img_urls": [
      "https://example.com/reference-start.jpg"
    ],
    "multi_prompt": [
      {
        "prompt": "Wide shot of the explorer entering a ruined temple.",
        "duration": 4
      },
      {
        "prompt": "Medium shot as the explorer lifts a glowing relic and dust falls from the ceiling.",
        "duration": 6
      }
    ],
    "duration": 10,
    "audio": true
  }
}
```

***

### 2. Intelligence Mode

Use `shot_type="intelligence"` together with a single `prompt`.

The model automatically analyzes the prompt and generates multiple cinematic shots intelligently.

### Example

```json theme={null}
{
  "model": "kling/v3",
  "input": {
    "mode": "std",
    "multi_shots": true,
    "shot_type": "intelligence",
    "img_urls": [
      "https://example.com/reference-start.jpg"
    ],
    "prompt": "A lone samurai walks through a rainy cyberpunk city, neon reflections glowing on wet streets, cinematic atmosphere, dramatic camera transitions.",
    "duration": 10,
    "audio": true
  }
}
```

### Element References

Define elements in the `element_list` array and you can use the `@element_name` syntax to reference images in the
prompt.

<CodeGroup>
  ```json single-shot with element reference theme={null} theme={null}
  {
    "model": "kling/v3",
    "input": {
      "mode": "pro",
      "multi_shots": false,
      "prompt": "In a bright rehearsal room, sunlight streams through the window @element_dog",
      "img_urls": [
        "https://example.com/reference_room.png"
      ],
      "element_list": [
        {
          "name": "element_dog",
          "description": "dog",
          "name": "hero",
          "description": "A young explorer wearing a yellow raincoat.",
          "element_image_urls": [
            "https://example.com/element_dog_1.png",
            "https://example.com/element_dog_2.png"
          ]
        }
      ],
      "duration": 10,
      "audio": true
    }
  }

  ```

  ```json multi-shot with element reference theme={null} theme={null}
  {
    "model": "kling/v3",
    "input": {
      "mode": "pro",
      "multi_shots": true,
      "shot_type": "customize",
      "multi_prompt": [
        {
          "prompt": "a happy dog in running @element_dog",
          "duration": 3
        },
        {
          "prompt": "a happy dog play with a cat @element_cat",
          "duration": 3
        }
      ],
      "element_list": [
        {
          "name": "element_cat",
          "description": "cat",
          "element_image_urls": [
            "https://example.com/element_cat.png"
          ]
        },
        {
          "name": "element_dog",
          "description": "dog",
          "element_image_urls": [
            "https://example.com/element_dog_1.png",
            "https://example.com/element_dog_2.png"
          ]
        }
      ],
      "duration": 6,
      "aspect_ratio": "9:16",
      "audio": true
    }
  }
  ```
</CodeGroup>

## Query Task Status

After submitting a task, use the unified query endpoint to check progress and retrieve results:

<Card title="Get Task Info" icon="magnifying-glass" href="/models/common/get-task-info">
  Learn how to query task status and retrieve generation results
</Card>

<Tip>
  For production use, we recommend using the `callback_url` parameter to receive automatic notifications when generation completes, rather than polling the status endpoint.
</Tip>

## Related Resources

<CardGroup cols={2}>
  <Card title="Models Overview" icon="store" href="/models/quickstart">
    Explore all available models
  </Card>

  <Card title="Common API" icon="gear" href="/common-api/get-account-credits">
    Check credits and account usage
  </Card>
</CardGroup>


## OpenAPI

````yaml models/kling/v3-0.json post /api/v1/client/job/CreateTask
openapi: 3.0.0
info:
  title: Crun Kling V3 Video API
  description: crun.ai Kling V3 API Documentation
  version: 1.0.0
  contact:
    name: Technical Support
    email: support@crun.ai
servers:
  - url: https://api.crun.ai
    description: API Server
security:
  - ApiKeyAuth: []
paths:
  /api/v1/client/job/CreateTask:
    post:
      summary: kling v3.0 video generation
      operationId: kling/v3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model
                - input
              properties:
                model:
                  type: string
                  enum:
                    - kling/v3
                  description: |-
                    The model name to use for generation. Required field.

                    - Must be `kling/v3` for this endpoint
                callback_url:
                  type: string
                  format: uri
                  description: >-
                    Optional. Callback URL for receiving task completion
                    notifications.


                    - System will POST task status and results to this URL when
                    generation completes

                    - Callback payloads structure is consistent with the `data`
                    object returned by the task status query

                    - Your callback endpoint should accept POST requests with
                    JSON payload containing results

                    - It returns an HTTP 200 status code upon successful receipt
                  example: https://your-domain.com/api/callback
                input:
                  type: object
                  description: >-
                    Kling-V3 high-level video generation. Supports standard/pro
                    modes, multi-shot sequences, intelligent storyboard
                    generation, and fine-grained element control.
                  properties:
                    mode:
                      type: string
                      description: >-
                        `std` generates 720p, `pro` generates 1080p. `4K` output
                        video resolution is 4K.
                      enum:
                        - std
                        - pro
                        - 4K
                      default: std
                      example: pro
                    multi_shots:
                      type: boolean
                      description: >-
                        Whether to use multi-shot mode. `true` enables
                        multi-shot mode, `false` enables single-shot mode.
                    shot_type:
                      type: string
                      description: >-
                        Controls multi-shot generation behavior. `customize`
                        requires `multi_prompt` for manually defined shots.
                        `intelligence` requires `prompt` and automatically
                        generates cinematic shot transitions.
                      enum:
                        - customize
                        - intelligence
                      default: customize
                      example: customize
                    prompt:
                      type: string
                      description: >-
                        Required when `multi_shots=false`. Also required when
                        `multi_shots=true` and `shot_type=intelligence`. Max
                        2500 characters.
                      maxLength: 2500
                    img_urls:
                      type: array
                      description: >-
                        Optional image inputs. In single-shot mode you can
                        provide 1 start frame or 2 frames for first/last frame
                        control. In multi-shot mode you must provide exactly 1
                        start frame.
                      items:
                        type: string
                        format: uri
                      maxItems: 2
                      example:
                        - https://example.com/start-frame.jpg
                        - https://example.com/end-frame.jpg
                    multi_prompt:
                      type: array
                      description: >-
                        Required when `multi_shots=true` and
                        `shot_type=customize`. Provide up to 6 shot definitions.
                        The sum of all shot durations must exactly equal
                        `duration`.
                      maxItems: 6
                      items:
                        type: object
                        properties:
                          prompt:
                            type: string
                            description: Prompt for the shot.
                            minLength: 1
                            maxLength: 500
                            example: >-
                              Close-up of the main character taking a deep
                              breath.
                          duration:
                            type: integer
                            description: Shot duration in seconds.
                            minimum: 1
                            maximum: 15
                            example: 3
                        required:
                          - prompt
                          - duration
                    element_list:
                      type: array
                      description: >-
                        Optional element consistency references. Supports up to
                        3 elements. Each element uses 1 to 4 reference images.
                      maxItems: 3
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            description: >-
                              Element name used inside prompts, for example
                              `@hero`.
                            maxLength: 50
                            example: hero
                          description:
                            type: string
                            description: Element description.
                            maxLength: 500
                            example: A young explorer wearing a yellow raincoat.
                          element_image_urls:
                            type: array
                            description: >-
                              Reference images for the element. Provide 1 to 4
                              image URLs.
                            items:
                              type: string
                              format: uri
                            minItems: 1
                            maxItems: 4
                            example:
                              - https://example.com/element_dog_1.jpeg
                              - https://example.com/element_dog_2.jpeg
                        required:
                          - name
                          - description
                      example:
                        - name: element_dog
                          description: dog
                          element_image_urls:
                            - https://example.com/element_dog_1.jpeg
                            - https://example.com/element_dog_2.jpeg
                        - name: element_cat
                          description: cat
                          element_image_urls:
                            - https://example.com/element_cat.png
                    audio:
                      type: boolean
                      description: >-
                        Whether to generate audio. This field is forced to
                        `true` when `multi_shots=true`.
                      default: false
                      example: true
                    duration:
                      type: integer
                      description: Video duration in seconds.
                      minimum: 3
                      maximum: 15
                      default: 5
                      example: 10
                    aspect_ratio:
                      type: string
                      enum:
                        - '1:1'
                        - '16:9'
                        - '9:16'
                      default: '16:9'
                      description: >-
                        Output aspect ratio. When `img_urls` is provided, this
                        field is ignored and the output follows the first image
                        aspect ratio.
                      example: '16:9'
                    input_compliance:
                      type: string
                      description: Optional input compliance check setting.
                      enum:
                        - disabled
                        - enabled
                      example: enabled
                    output_compliance:
                      type: string
                      description: Optional output compliance check setting.
                      enum:
                        - disabled
                        - enabled
                      example: enabled
                  required:
                    - multi_shots
            example:
              model: kling/v3
              callback_url: https://your-domain.com/api/callback
              input:
                mode: pro
                multi_shots: true
                shot_type: customize
                img_urls:
                  - https://example.com/reference-start.jpg
                multi_prompt:
                  - prompt: Wide shot of the explorer entering a ruined temple.
                    duration: 4
                  - prompt: >-
                      Medium shot as @hero lifts a glowing relic and dust falls
                      from the ceiling.
                    duration: 6
                element_list:
                  - name: hero
                    description: A young explorer wearing a yellow raincoat.
                    element_image_urls:
                      - https://example.com/hero-1.jpg
                      - https://example.com/hero-2.jpg
                duration: 10
                audio: true
                input_compliance: enabled
                output_compliance: enabled
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          task_id:
                            type: string
                            description: >-
                              Task ID, can be used with Get Task Details
                              endpoint to query task status
                            example: task_12345678
              example:
                code: 200
                message: success
                data:
                  task_id: task_12345678
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      errors:
                        type: array
                        description: Detailed validation error messages
                        items:
                          type: string
                        example:
                          - specific error field message
              example:
                code: 422
                message: Missing Params or Type Error
                errors:
                  - specific error field message
        '500':
          $ref: '#/components/responses/Error'
components:
  schemas:
    ApiResponse:
      type: object
      properties:
        code:
          type: integer
          enum:
            - 200
            - 401
            - 402
            - 404
            - 422
            - 429
            - 455
            - 500
            - 501
            - 505
          description: >-
            Response status code


            - **200**: Success - Request has been processed successfully

            - **401**: Unauthorized - Authentication credentials are missing or
            invalid

            - **402**: Insufficient Credits - Account does not have enough
            credits to perform the operation

            - **404**: Not Found - The requested resource or endpoint does not
            exist

            - **422**: Validation Error - The request parameters failed
            validation checks

            - **429**: Rate Limited - Request limit has been exceeded for this
            resource

            - **455**: Service Unavailable - System is currently undergoing
            maintenance

            - **500**: Server Error - An unexpected error occurred while
            processing the request

            - **501**: Generation Failed - Content generation task failed

            - **505**: Feature Disabled - The requested feature is currently
            disabled
        message:
          type: string
          description: Response message, error description when failed
          example: success
  responses:
    Error:
      description: Server Error
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        All APIs require authentication via API Key.


        Get API Key:

        1. Visit [API Key Management Page](https://crun.ai/user-api-key) to get
        your API Key


        Usage:

        Add to request header:


        x-api-key: YOUR_API_KEY


        Note:

        - Keep your API Key secure and do not share it with others

        - If you suspect your API Key has been compromised, reset it immediately
        in the management page

````