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

# Kling O3 4K Text To Video

> Generate 3–15-second videos from text prompts with Kling O3 4K. Outputs 4K video. Supports single-shot and multi-shot generation. Explicitly set sound; multi-shot requires audio.

<Tip>
  Submit with your Vidgo API key, then query [task status](/api-manual/task-management/status) using the returned task ID. An optional callback receives the final result. The submit response above is an initial-state illustration, not the completed video response.
</Tip>

## Parameters

Use model `kwaivgi/kling-video-o3-4k/text-to-video`. Put generation parameters inside `input`.

* **`prompt`**: Required when multi\_shots=false. Describe the scene, action and camera movement. Use nonblank text, up to 2,500 characters after trimming. Omit prompt when multi\_shots=true.
* **`multi_prompt`**: Required when multi\_shots=true; omit in single-shot mode. Supply at least one shot, each with a nonblank prompt of up to 2,500 characters and an integer duration of 1–12 seconds. Shot durations must sum to the top-level duration (3–15 seconds). Extra fields inside a shot are ignored.
* **`duration`**: Required integer from 3 to 15 seconds. In multi-shot mode, this must equal the sum of all shot durations. Credits are calculated using this value.
* **`multi_shots`**: Required: explicitly send false for a single shot or true for multiple shots. Single-shot mode requires prompt. Multi-shot mode requires multi\_prompt and sound=true, with no nonblank top-level prompt. Omitting this field is an error.
* **`sound`**: Required: explicitly send true to generate audio or false for video without audio. Single-shot mode accepts either value; multi-shot mode requires true.
* **`aspect_ratio`**: Optional: 16:9 (landscape), 9:16 (portrait) or 1:1 (square). Sets the video aspect ratio.

Use standard JSON numbers and booleans. For compatibility, integer strings such as "5" are accepted. Boolean strings true/1/yes/y/on mean true; false/0/no/n/off mean false. These strings are case-insensitive and trimmed. Numeric 1 and 0 are also accepted for boolean fields. Numeric and boolean prompt values are converted to text; 0, false and null are treated as empty. Objects and arrays are not accepted as prompts. Unsupported input fields, including reference\_image\_urls and kling\_elements, are rejected. HTTP(S) URLs must have a hostname and no embedded credentials.

## Pricing

50 credits/s with or without sound. Credits = duration × rate. Failed generation tasks are refunded.

## Default example: Rain Along the Stone Gallery

This is the same default example shown on the [model page](https://vidgo.ai/apis/models/kwaivgi/kling-video-o3-4k/text-to-video).

```json theme={null}
{
  "model": "kwaivgi/kling-video-o3-4k/text-to-video",
  "input": {
    "duration": 4,
    "sound": true,
    "multi_shots": false,
    "prompt": "Photoreal slow lateral dolly through an empty ancient temple gallery in rain. Weathered floral stone reliefs fill the foreground; rows of pillars recede toward a quiet courtyard. Water follows carved grooves and drips from worn edges, revealing mineral grains, chisel marks and moss in cracks. Soft overcast daylight, subtle wet highlights, stable architecture and rich fine detail. Audio: gentle rain and isolated drips; no music. No text, logos or watermarks.",
    "aspect_ratio": "16:9"
  }
}
```

<video controls playsInline preload="metadata" style={{ width: "100%", height: "auto" }} poster="https://cdn.vidgo.ai/apis/models/kwaivgi/kling-video-o3-4k/text-to-video/v1/01/poster.jpg" src="https://cdn.vidgo.ai/apis/models/kwaivgi/kling-video-o3-4k/text-to-video/v1/01/output.mp4" />

[Download this video](https://cdn.vidgo.ai/apis/models/kwaivgi/kling-video-o3-4k/text-to-video/v1/01/output.mp4)

### Completed result from the status endpoint

`GET /api/generate/status/{task_id}`

The response below records this verified example. For a new generation, query the task ID returned by your own submission.

```json theme={null}
{
  "code": 200,
  "data": {
    "task_id": "EE4XVIYVL5IAX4YG",
    "status": "finished",
    "files": [
      {
        "file_type": "video",
        "file_url": "https://cdn.vidgo.ai/apis/models/kwaivgi/kling-video-o3-4k/text-to-video/v1/01/output.mp4"
      }
    ],
    "created_time": "2026-09-22T18:48:45",
    "error_message": null,
    "progress": 100
  }
}
```

<Note>
  The API validates prompts up to 2,500 characters. Some multi-shot generation requests have failed when a shot prompt exceeded 512 characters. We recommend keeping each shot prompt within 512 characters; this recommendation does not change the API validation limit.
</Note>


## OpenAPI

````yaml api-manual/video-series/kwaivgi-kling-video-o3-4k-text-to-video.json POST /api/generate/submit
openapi: 3.0.0
info:
  title: Vidgo API - Kling O3 4K Text to Video
  description: >-
    Generate 3–15-second videos from text prompts with Kling O3 4K. Outputs 4K
    video. Supports single-shot and multi-shot generation. Explicitly set sound;
    multi-shot requires audio.
  version: 1.0.0
servers:
  - url: https://api.vidgo.ai
security:
  - BearerAuth: []
paths:
  /api/generate/submit:
    post:
      tags:
        - Video Series
      summary: Kling O3 4K Text to Video
      description: >-
        Submit a video generation task. duration, multi_shots and sound must be
        explicitly provided. In multi-shot mode, provide multi_prompt, set
        sound=true and make shot durations sum to duration. Invalid parameters
        are rejected before image upload, task creation or charging.
      operationId: submit_kwaivgi_kling_video_o3_4k_text_to_video
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model
                - input
              additionalProperties: true
              properties:
                model:
                  type: string
                  enum:
                    - kwaivgi/kling-video-o3-4k/text-to-video
                  example: kwaivgi/kling-video-o3-4k/text-to-video
                  description: >-
                    Vidgo public model ID. Must be
                    `kwaivgi/kling-video-o3-4k/text-to-video`.
                input:
                  type: object
                  required:
                    - duration
                    - multi_shots
                    - sound
                  description: >-
                    Video generation parameters. Use standard JSON numbers and
                    booleans. For compatibility, integer strings such as "5" are
                    accepted. Boolean strings true/1/yes/y/on mean true;
                    false/0/no/n/off mean false. These strings are
                    case-insensitive and trimmed. Numeric 1 and 0 are also
                    accepted for boolean fields. Numeric and boolean prompt
                    values are converted to text; 0, false and null are treated
                    as empty. Objects and arrays are not accepted as prompts.
                  properties:
                    prompt:
                      type: string
                      description: >-
                        Required when multi_shots=false. Describe the scene,
                        action and camera movement. Use nonblank text, up to
                        2,500 characters after trimming. Omit prompt when
                        multi_shots=true.
                      maxLength: 2500
                      minLength: 1
                      pattern: \S
                    multi_prompt:
                      type: array
                      items:
                        type: object
                        required:
                          - prompt
                          - duration
                        properties:
                          prompt:
                            type: string
                            description: >-
                              Required nonblank text for this shot, up to 2,500
                              characters after trimming.
                            maxLength: 2500
                            minLength: 1
                            pattern: \S
                          duration:
                            type: integer
                            description: >-
                              Required integer from 1 to 12 seconds for this
                              shot.
                            minimum: 1
                            maximum: 12
                        additionalProperties: true
                      description: >-
                        Required when multi_shots=true; omit in single-shot
                        mode. Supply at least one shot, each with a nonblank
                        prompt of up to 2,500 characters and an integer duration
                        of 1–12 seconds. Shot durations must sum to the
                        top-level duration (3–15 seconds). Extra fields inside a
                        shot are ignored.
                      minItems: 1
                    duration:
                      type: integer
                      description: >-
                        Required integer from 3 to 15 seconds. In multi-shot
                        mode, this must equal the sum of all shot durations.
                        Credits are calculated using this value.
                      minimum: 3
                      maximum: 15
                    multi_shots:
                      type: boolean
                      description: >-
                        Required: explicitly send false for a single shot or
                        true for multiple shots. Single-shot mode requires
                        prompt. Multi-shot mode requires multi_prompt and
                        sound=true, with no nonblank top-level prompt. Omitting
                        this field is an error.
                    sound:
                      type: boolean
                      description: >-
                        Required: explicitly send true to generate audio or
                        false for video without audio. Single-shot mode accepts
                        either value; multi-shot mode requires true.
                    aspect_ratio:
                      type: string
                      description: >-
                        Optional: 16:9 (landscape), 9:16 (portrait) or 1:1
                        (square). Sets the video aspect ratio.
                      enum:
                        - '1:1'
                        - '16:9'
                        - '9:16'
                  additionalProperties: false
                  oneOf:
                    - properties:
                        multi_shots:
                          enum:
                            - false
                      required:
                        - prompt
                      not:
                        required:
                          - multi_prompt
                    - properties:
                        multi_shots:
                          enum:
                            - true
                        sound:
                          enum:
                            - true
                      required:
                        - multi_shots
                        - multi_prompt
                      not:
                        required:
                          - prompt
                callback_url:
                  type: string
                  nullable: true
                  description: >-
                    Optional public HTTP(S) endpoint for task completion
                    notifications. HTTPS is recommended. Omit, use null, or use
                    an empty string to disable callbacks.
              description: >-
                Keep model and callback_url at the root. Unknown root fields are
                ignored; unsupported input fields are rejected.
            examples:
              basic:
                summary: Rain Along the Stone Gallery
                value:
                  model: kwaivgi/kling-video-o3-4k/text-to-video
                  input:
                    duration: 4
                    sound: true
                    multi_shots: false
                    prompt: >-
                      Photoreal slow lateral dolly through an empty ancient
                      temple gallery in rain. Weathered floral stone reliefs
                      fill the foreground; rows of pillars recede toward a quiet
                      courtyard. Water follows carved grooves and drips from
                      worn edges, revealing mineral grains, chisel marks and
                      moss in cracks. Soft overcast daylight, subtle wet
                      highlights, stable architecture and rich fine detail.
                      Audio: gentle rain and isolated drips; no music. No text,
                      logos or watermarks.
                    aspect_ratio: '16:9'
              callback:
                summary: Rain Along the Stone Gallery with callback
                value:
                  model: kwaivgi/kling-video-o3-4k/text-to-video
                  input:
                    duration: 4
                    sound: true
                    multi_shots: false
                    prompt: >-
                      Photoreal slow lateral dolly through an empty ancient
                      temple gallery in rain. Weathered floral stone reliefs
                      fill the foreground; rows of pillars recede toward a quiet
                      courtyard. Water follows carved grooves and drips from
                      worn edges, revealing mineral grains, chisel marks and
                      moss in cracks. Soft overcast daylight, subtle wet
                      highlights, stable architecture and rich fine detail.
                      Audio: gentle rain and isolated drips; no music. No text,
                      logos or watermarks.
                    aspect_ratio: '16:9'
                  callback_url: https://your-domain.com/callback
      responses:
        '200':
          description: Task submitted
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - data
                properties:
                  code:
                    type: integer
                    enum:
                      - 200
                  data:
                    type: object
                    required:
                      - task_id
                      - status
                      - created_time
                    properties:
                      task_id:
                        type: string
                      status:
                        type: string
                        enum:
                          - not_started
                          - running
                          - finished
                          - failed
                      created_time:
                        type: string
                        format: date-time
              example:
                code: 200
                data:
                  task_id: task-submitted-example
                  status: not_started
                  created_time: '2026-09-22T00:00:00Z'
        '400':
          description: >-
            Invalid input, unsupported tier, inaccessible media, or insufficient
            credits
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '401':
          description: Invalid credentials
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '404':
          description: Unknown or disabled model
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '408':
          description: Request timed out
          content:
            text/plain:
              schema:
                type: string
              example: Request timeout
        '422':
          description: Invalid JSON or non-object request body
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '429':
          description: Rate or API key credit limit exceeded
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '502':
          description: Unable to create the video generation task
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '503':
          description: This model is currently unavailable
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Use VIDGO_API_KEY.

````