> ## 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 Pro Text To Video

> Generate 3–15-second videos from text prompts with Kling O3 Pro. 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-pro/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

13 credits/s without sound; 16 credits/s with sound. Credits = duration × rate. Failed generation tasks are refunded.

## Default example: A Quiet Apology

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

```json theme={null}
{
  "model": "kwaivgi/kling-video-o3-pro/text-to-video",
  "input": {
    "duration": 5,
    "sound": true,
    "multi_shots": true,
    "multi_prompt": [
      {
        "prompt": "Cinematic whimsical realism in a warm oak library. Medium two-shot: a small ivory robot with an oval face and amber eyes shelves a blue book, accidentally knocking one red book onto the floor. Beside it, an adult librarian wears a green cardigan and round glasses. Both remain visible under warm reading lamps. One distinct book thud against quiet room tone. Unmarked book covers. No text, logos or watermarks.",
        "duration": 2
      },
      {
        "prompt": "Cut closer to the same ivory robot and green-cardigan librarian in the same oak library. The librarian raises one finger to her lips. The robot tilts its head apologetically and softly says exactly \"Sorry.\" in a gentle robotic voice, synchronized with its small mouth light. Preserve their appearance, positions and warm lighting. End in an embarrassed pause; no music. No text, logos or watermarks.",
        "duration": 3
      }
    ],
    "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-pro/text-to-video/v1/01/poster.jpg" src="https://cdn.vidgo.ai/apis/models/kwaivgi/kling-video-o3-pro/text-to-video/v1/01/output.mp4" />

[Download this video](https://cdn.vidgo.ai/apis/models/kwaivgi/kling-video-o3-pro/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": "BRDSCRKN4Q0WH4T6",
    "status": "finished",
    "files": [
      {
        "file_type": "video",
        "file_url": "https://cdn.vidgo.ai/apis/models/kwaivgi/kling-video-o3-pro/text-to-video/v1/01/output.mp4"
      }
    ],
    "created_time": "2026-09-22T18:43:52",
    "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-pro-text-to-video.json POST /api/generate/submit
openapi: 3.0.0
info:
  title: Vidgo API - Kling O3 Pro Text to Video
  description: >-
    Generate 3–15-second videos from text prompts with Kling O3 Pro. 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 Pro 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_pro_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-pro/text-to-video
                  example: kwaivgi/kling-video-o3-pro/text-to-video
                  description: >-
                    Vidgo public model ID. Must be
                    `kwaivgi/kling-video-o3-pro/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: A Quiet Apology
                value:
                  model: kwaivgi/kling-video-o3-pro/text-to-video
                  input:
                    duration: 5
                    sound: true
                    multi_shots: true
                    multi_prompt:
                      - prompt: >-
                          Cinematic whimsical realism in a warm oak library.
                          Medium two-shot: a small ivory robot with an oval face
                          and amber eyes shelves a blue book, accidentally
                          knocking one red book onto the floor. Beside it, an
                          adult librarian wears a green cardigan and round
                          glasses. Both remain visible under warm reading lamps.
                          One distinct book thud against quiet room tone.
                          Unmarked book covers. No text, logos or watermarks.
                        duration: 2
                      - prompt: >-
                          Cut closer to the same ivory robot and green-cardigan
                          librarian in the same oak library. The librarian
                          raises one finger to her lips. The robot tilts its
                          head apologetically and softly says exactly "Sorry."
                          in a gentle robotic voice, synchronized with its small
                          mouth light. Preserve their appearance, positions and
                          warm lighting. End in an embarrassed pause; no music.
                          No text, logos or watermarks.
                        duration: 3
                    aspect_ratio: '16:9'
              callback:
                summary: A Quiet Apology with callback
                value:
                  model: kwaivgi/kling-video-o3-pro/text-to-video
                  input:
                    duration: 5
                    sound: true
                    multi_shots: true
                    multi_prompt:
                      - prompt: >-
                          Cinematic whimsical realism in a warm oak library.
                          Medium two-shot: a small ivory robot with an oval face
                          and amber eyes shelves a blue book, accidentally
                          knocking one red book onto the floor. Beside it, an
                          adult librarian wears a green cardigan and round
                          glasses. Both remain visible under warm reading lamps.
                          One distinct book thud against quiet room tone.
                          Unmarked book covers. No text, logos or watermarks.
                        duration: 2
                      - prompt: >-
                          Cut closer to the same ivory robot and green-cardigan
                          librarian in the same oak library. The librarian
                          raises one finger to her lips. The robot tilts its
                          head apologetically and softly says exactly "Sorry."
                          in a gentle robotic voice, synchronized with its small
                          mouth light. Preserve their appearance, positions and
                          warm lighting. End in an embarrassed pause; no music.
                          No text, logos or watermarks.
                        duration: 3
                    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.

````