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

# Tạo một tác vụ image-to-video của Kling

> Chuyển đổi một hình ảnh đơn thành video Kling thông qua CometAPI POST /kling/v1/videos/image2video, với việc tạo tác vụ bất đồng bộ và theo dõi tiến độ bằng task ID.

Sử dụng endpoint này để làm cho một hình ảnh nguồn chuyển động thành video Kling.

## Trước khi gọi

* Cung cấp một URL hình ảnh công khai hoặc một chuỗi hình ảnh base64
* Sử dụng hình ảnh đáp ứng yêu cầu pixel của Kling; các ảnh thumbnail quá nhỏ sẽ bị tác vụ tạo từ chối
* Bắt đầu với ví dụ mặc định `kling-v2-6`, sau đó chọn `model_name` khác từ enum trong OpenAPI khi bạn cần một nhánh model khác
* Giữ request đầu tiên ở mức đơn giản: một hình ảnh đầu vào, một prompt, không có khung hình cuối, không có motion mask
* Sử dụng `dynamic_masks` dưới dạng một mảng các đối tượng mask-và-quỹ đạo khi bạn cần kiểm soát chuyển động cục bộ
* Sử dụng `sound: off` cho request đầu tiên không âm thanh có tính xác định trên các nhánh model hỗ trợ tạo âm thanh

## Đặt tên model

Sử dụng các model ID video Kling thông thường trên endpoint này. Giữ Omni model ID cho [Omni Video](./omni-video).

## Luồng tác vụ

<Steps>
  <Step title="Gửi request image-to-video">
    Tạo tác vụ và lưu `task_id` của Kling được trả về.
  </Step>

  <Step title="Poll tác vụ">
    Tiếp tục với [Lấy một tác vụ Kling](./individual-queries) để theo dõi trạng thái tác vụ cho đến khi đầu ra sẵn sàng.
  </Step>

  <Step title="Lưu kết quả">
    Lưu trữ asset đã hoàn tất nếu bạn cần giữ lại lâu hơn thời gian tồn tại của URL phân phối từ nhà cung cấp.
  </Step>
</Steps>

<Tip>
  Để xem tham chiếu đầy đủ về các tham số, hãy xem [tài liệu Kling chính thức](https://kling.ai/document-api/apiReference/model/imageToVideo).
</Tip>


## OpenAPI

````yaml api/openapi/video/kling/post-image-to-video.openapi.json POST /kling/v1/videos/image2video
openapi: 3.1.0
info:
  title: Image to Video API
  version: 1.0.0
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /kling/v1/videos/image2video:
    post:
      summary: Create a Kling image-to-video task
      description: Submit one source image and receive a task id for later polling.
      operationId: image_to_video
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - image
              properties:
                prompt:
                  type: string
                  description: >-
                    Text prompt describing the desired motion. Maximum 500
                    characters.
                negative_prompt:
                  type: string
                  description: Elements to exclude from the video. Maximum 200 characters.
                image:
                  type: string
                  description: >-
                    Source image URL or base64 image string. Use an image that
                    meets Kling pixel requirements; very small thumbnails are
                    rejected. For base64 input, send the encoded image string as
                    the field value.
                callback_url:
                  type: string
                  description: >-
                    Webhook URL to receive task status updates when the task
                    completes.
                mode:
                  type: string
                  description: >-
                    Generation mode. `std` for standard (faster), `pro` for
                    professional (higher quality).
                  enum:
                    - std
                    - pro
                  default: std
                model_name:
                  type: string
                  description: >-
                    Model ID for this image-to-video request. Use `kling-v3` for
                    new requests. Use Omni model IDs only with the Omni Video
                    endpoint.
                  enum:
                    - kling-v1
                    - kling-v1-5
                    - kling-v1-6
                    - kling-v2-master
                    - kling-v2-1
                    - kling-v2-1-master
                    - kling-v2-5-turbo
                    - kling-v2-6
                    - kling-v3
                  default: kling-v1
                image_tail:
                  type: string
                  description: >-
                    Tail-frame reference image as a Base64 string or public URL.
                    Same format requirements as `image`. Controls the last frame
                    of the generated video.
                cfg_scale:
                  type: number
                  description: >-
                    Prompt adherence strength. Higher values follow the prompt
                    more closely. Range: 0–1.
                duration:
                  type: string
                  description: >-
                    Output video length in seconds. Use `5` or `10`; omit to use
                    `5`.
                  default: '5'
                static_mask:
                  type: string
                  description: >-
                    Static brush mask image as a Base64 string or public URL.
                    White areas are frozen in place during video generation.
                    Must match the aspect ratio and resolution of the input
                    image.
                dynamic_masks:
                  type: array
                  description: >-
                    Optional motion masks. Each entry contains a mask image and
                    an ordered trajectory list.
                  items:
                    type: object
                    required:
                      - mask
                      - trajectories
                    properties:
                      mask:
                        type: string
                        description: Mask image URL or base64 string for the moving area.
                      trajectories:
                        type: array
                        description: Trajectory points for the masked area.
                        items:
                          type: object
                          required:
                            - x
                            - 'y'
                          properties:
                            x:
                              type: integer
                              description: Horizontal coordinate.
                            'y':
                              type: integer
                              description: Vertical coordinate.
                external_task_id:
                  type: string
                  description: >-
                    Custom task id for your own tracking. Does not replace the
                    system-generated task id but can be used to query tasks.
                    Must be unique per user.
                sound:
                  type: string
                  description: >-
                    Optional generated-audio switch for models that support
                    video sound. Use `on` or `off`, or omit the field for the
                    model default.
                  enum:
                    - 'on'
                    - 'off'
              default:
                image: https://your-image-host/source.jpg
                prompt: A cinematic slow push-in on the subject
                model_name: kling-v3
                mode: pro
                duration: '5'
                sound: 'off'
            examples:
              Default:
                summary: Image-to-video request with generated sound disabled
                value:
                  image: https://your-image-host/source.jpg
                  prompt: A cinematic slow push-in on the subject
                  model_name: kling-v3
                  mode: pro
                  duration: '5'
                  sound: 'off'
      responses:
        '200':
          description: Task accepted.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                  - data
                properties:
                  code:
                    type: integer
                    description: Error code; specifically define the error code
                  message:
                    type: string
                    description: error message
                  data:
                    type: object
                    required:
                      - task_id
                      - task_status
                      - created_at
                      - updated_at
                    properties:
                      task_id:
                        type: string
                        description: Task ID, system generated
                      task_status:
                        type: string
                        description: >-
                          Task status, enumerated values: submitted, processing,
                          succeed, failed.
                      task_status_msg:
                        type: string
                      task_info:
                        type: object
                        additionalProperties: true
                      created_at:
                        type: integer
                        description: Task creation time, Unix timestamp, in ms.
                      updated_at:
                        type: integer
                        description: Task update time, Unix timestamp, in ms.
                example:
                  code: 0
                  message: success
                  data:
                    task_id: '2032273942220931072'
                    task_status: submitted
                    task_info: {}
                    created_at: 1773366840306
                    updated_at: 1773366840306
      x-codeSamples:
        - lang: Shell
          label: Default
          source: |
            curl https://api.cometapi.com/kling/v1/videos/image2video \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                  "image": "https://your-image-host/source.jpg",
                  "prompt": "A cinematic slow push-in on the subject",
                  "model_name": "kling-v3",
                  "mode": "pro",
                  "duration": "5",
                  "sound": "off"
                }'
        - lang: Python
          label: Default
          source: |
            import os
            import requests

            response = requests.post(
                "https://api.cometapi.com/kling/v1/videos/image2video",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                json={
                  "image": "https://your-image-host/source.jpg",
                  "prompt": "A cinematic slow push-in on the subject",
                  "model_name": "kling-v3",
                  "mode": "pro",
                  "duration": "5",
                  "sound": "off"
                },
            )

            result = response.json()
            print(result.get("code"), result.get("data", {}).get("task_id"))
        - lang: JavaScript
          label: Default
          source: >
            const response = await
            fetch("https://api.cometapi.com/kling/v1/videos/image2video", {
              method: "POST",
              headers: {
                Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
                "Content-Type": "application/json",
              },
              body: JSON.stringify({
                "image": "https://your-image-host/source.jpg",
                "prompt": "A cinematic slow push-in on the subject",
                "model_name": "kling-v3",
                "mode": "pro",
                "duration": "5",
                "sound": "off"
              }),
            });


            const result = await response.json();

            console.log(result.code, result.data?.task_id);
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Use your CometAPI key.

````