> ## 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 2.5 Turbo Pro Image to Video

> Generate video with Kling 2.5 Turbo Pro using a start frame, an end frame, or both, plus a text prompt.

<Tip>
  1. Submit the request with `VIDGO_API_KEY`. A `task_id` is returned immediately. Keep it until the task reaches `finished` or `failed`.
  2. Use [Query Task Status](/api-manual/task-management/status) to retrieve the result. If you provide a `callback_url`, Vidgo sends the result to your [webhook](/api-manual/task-management/webhooks) when the task finishes or fails.
</Tip>

# Kling 2.5 Turbo Pro Image to Video

Generate video with Kling 2.5 Turbo Pro using a start frame, an end frame, or both, plus a text prompt.

## Available Models

* **kwaivgi/kling-v2.5-turbo-pro/image-to-video** - Generate video from image input.

## Duration Options

* **5, 10 seconds** - Set `duration` as an integer. Optional. Default: **5 seconds**. Strings, booleans, fractional durations, and `null` are rejected.

## Key Features

* Generate video from image input.
* Guide generation with `start_image_url`, `end_image_url`, or both.

## Advanced Parameters

Set `model` and optional `callback_url` at the request root. Place all workflow parameters, including output options, inside `input`.

Send only the input fields supported by this workflow. Unsupported `input` fields are rejected before credits are deducted. Input URLs must use HTTP(S), include a hostname, and contain no embedded credentials or whitespace. Image fields do not accept arrays or Base64.

### Prompt

* `prompt`: Required. Describe the scene and desired motion. Length: **1-2,500 characters**.
* Supply a string, not a number, boolean, array, or object. Whitespace is trimmed before the 2,500 Unicode character limit is checked.

### Start Image URL

* `start_image_url`: First-frame public HTTP(S) URL. Required only when `end_image_url` is omitted.

### End Image URL

* `end_image_url`: Last-frame public HTTP(S) URL. Required only when `start_image_url` is omitted.
* Provide at least one frame: start only, end only, or both. Omit unused URL fields; empty strings and `null` are rejected.

### Aspect Ratio

* `aspect_ratio`: Optional string. PoYo does not document an enum or default. Omit when unused.

### Negative Prompt

* `negative_prompt`: Optional. Describe content to avoid.

## Billing Factors

Billing depends on video duration (`duration`). Text-to-video and image-to-video use the same rates.

Credits are deducted on submission and refunded if the task fails.


## OpenAPI

````yaml api-manual/video-series/kwaivgi-kling-v2-5-turbo-pro-image-to-video.json POST /api/generate/submit
openapi: 3.0.0
info:
  title: Vidgo API - Kling 2.5 Turbo Pro Image to Video
  description: >-
    Generate video with a start frame, an end frame, or both, plus a text
    prompt.
  version: 1.0.0
servers:
  - url: https://api.vidgo.ai
security:
  - BearerAuth: []
paths:
  /api/generate/submit:
    post:
      tags:
        - Video Series
      summary: Kling 2.5 Turbo Pro Image to Video
      description: >-
        Place generation parameters in input. Unsupported input fields and
        invalid types are rejected before credits are deducted. Billing depends
        on video duration (`duration`). Text-to-video and image-to-video use the
        same rates.
      operationId: submit_kwaivgi_kling_v2_5_turbo_pro_image_to_video
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model
                - input
              additionalProperties: true
              properties:
                model:
                  type: string
                  example: kwaivgi/kling-v2.5-turbo-pro/image-to-video
                input:
                  type: object
                  required:
                    - prompt
                  anyOf:
                    - required:
                        - start_image_url
                    - required:
                        - end_image_url
                  properties:
                    prompt:
                      type: string
                      description: >-
                        Required nonblank string, maximum 2,500 Unicode
                        characters after trimming.
                      maxLength: 2500
                      example: >-
                        A man in a trench coat holding a black umbrella walks
                        briskly through the streets of Tokyo on a rainy night,
                        splashing through puddles. A handheld follow-cam shot
                        from his side and slightly behind. The focus is locked
                        on the man, while background neon signs blur into
                        beautiful bokeh. Cyberpunk aesthetic with a film noir
                        quality; the mood is mysterious and lonely. The pavement
                        is slick and wet, reflecting the vibrant neon signs.
                        Individual raindrops are visible, and a light fog hangs
                        in the air.
                      minLength: 1
                    duration:
                      type: integer
                      description: >-
                        Integer 5 or 10 seconds; defaults to 5 when omitted.
                        Strings, booleans, fractional durations and null are
                        rejected.
                      enum:
                        - 5
                        - 10
                      default: 5
                      example: 5
                    start_image_url:
                      type: string
                      format: uri
                      description: >-
                        First-frame public HTTP(S) URL without credentials or
                        whitespace. Provide start_image_url, end_image_url, or
                        both. Omit when unused; empty strings and null are
                        rejected.
                      example: >-
                        https://cdn.doculator.org/kling-2.5-turbo-pro/start-image.jpeg
                    end_image_url:
                      type: string
                      format: uri
                      description: >-
                        Last-frame public HTTP(S) URL without credentials or
                        whitespace. Provide start_image_url, end_image_url, or
                        both. Omit when unused; empty strings and null are
                        rejected.
                      example: https://example.com/end-image.png
                    aspect_ratio:
                      type: string
                      description: >-
                        Optional aspect ratio string; no documented enum or
                        default. Omit when unused.
                      example: '16:9'
                    negative_prompt:
                      type: string
                      description: >-
                        Optional string describing content to avoid. Omit when
                        unused.
                      example: low quality, blur
                  additionalProperties: false
                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: Start frame
                value:
                  model: kwaivgi/kling-v2.5-turbo-pro/image-to-video
                  input:
                    prompt: A slow camera pan across a sunlit garden.
                    duration: 5
                    start_image_url: https://example.com/start-frame.png
              end-frame:
                summary: End frame only
                value:
                  model: kwaivgi/kling-v2.5-turbo-pro/image-to-video
                  input:
                    prompt: A slow camera pan across a sunlit garden.
                    duration: 5
                    end_image_url: https://example.com/end-frame.png
              first-last-frame:
                summary: Start and end frames
                value:
                  model: kwaivgi/kling-v2.5-turbo-pro/image-to-video
                  input:
                    prompt: A slow camera pan across a sunlit garden.
                    duration: 5
                    start_image_url: https://example.com/start-frame.png
                    end_image_url: https://example.com/end-frame.png
      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-unified-example
                  status: running
                  created_time: '2026-09-10T08:00:00'
        '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 upstream generation task
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    oneOf:
                      - type: string
                      - type: object
                        additionalProperties: true
                      - type: array
                        items: {}
        '503':
          description: Model configuration or capability is not approved
          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.

````