Kling AI Image-to-Video API

Animate images into video.

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kling-ai-image-to-video-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kling-ai-image-to-video-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kling AI Open Platform Account Image-to-Video API
  description: 'The Kling AI Open Platform is the developer API for Kuaishou''s Kling generative video and image models. Every capability follows the same asynchronous pattern: submit a task with POST (receiving a task_id), then poll the matching GET endpoint by task_id until status is succeed and the generated video or image URLs are returned. Generated asset URLs are short-lived and should be downloaded promptly. Authentication uses a JWT (HS256) signed from an Access Key / Secret Key pair, passed as a Bearer token; tokens are short-lived (about 30 minutes).


    endpointsModeled: The overall path structure, async task model, JWT auth, and model catalog are grounded in Kling''s official Open Platform documentation and cross-referenced against multiple Kling API wrappers. Kling''s official reference pages block automated fetching (HTTP 446), so exact request/response field-level schemas here are honestly modeled on the documented behavior rather than copied verbatim, and should be reconciled against the live reference before code generation.'
  version: '1.0'
  contact:
    name: Kling AI Open Platform
    url: https://app.klingai.com/global/dev
servers:
- url: https://api.klingai.com
  description: Kling AI Open Platform (global)
security:
- bearerAuth: []
tags:
- name: Image-to-Video
  description: Animate images into video.
paths:
  /v1/videos/image2video:
    post:
      operationId: createImageToVideoTask
      tags:
      - Image-to-Video
      summary: Create an image-to-video task
      description: Animate a start image (and optional end image) with a motion prompt.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageToVideoRequest'
      responses:
        '200':
          description: Task accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCreatedResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /v1/videos/image2video/{task_id}:
    get:
      operationId: getImageToVideoTask
      tags:
      - Image-to-Video
      summary: Query an image-to-video task
      parameters:
      - $ref: '#/components/parameters/TaskId'
      responses:
        '200':
          description: Task status and, when complete, the generated video URL.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoTaskResponse'
  /v1/videos/multi-image2video:
    post:
      operationId: createMultiImageToVideoTask
      tags:
      - Image-to-Video
      summary: Create a multi-image-to-video task
      description: Compose a video from multiple reference images plus a prompt.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiImageToVideoRequest'
      responses:
        '200':
          description: Task accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCreatedResponse'
  /v1/videos/multi-image2video/{task_id}:
    get:
      operationId: getMultiImageToVideoTask
      tags:
      - Image-to-Video
      summary: Query a multi-image-to-video task
      parameters:
      - $ref: '#/components/parameters/TaskId'
      responses:
        '200':
          description: Task status and, when complete, the generated video URL.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoTaskResponse'
components:
  schemas:
    VideoTaskResponse:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        request_id:
          type: string
        data:
          type: object
          properties:
            task_id:
              type: string
            task_status:
              type: string
              enum:
              - submitted
              - processing
              - succeed
              - failed
            task_result:
              type: object
              properties:
                videos:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      url:
                        type: string
                      duration:
                        type: string
    ImageToVideoRequest:
      type: object
      required:
      - image
      properties:
        model_name:
          type: string
          example: kling-v2-6
        image:
          type: string
          description: Start-frame image as a URL or base64 string.
        image_tail:
          type: string
          description: Optional end-frame image as a URL or base64 string.
        prompt:
          type: string
        negative_prompt:
          type: string
        cfg_scale:
          type: number
        mode:
          type: string
          enum:
          - std
          - pro
        duration:
          type: string
          enum:
          - '5'
          - '10'
        callback_url:
          type: string
    TaskCreatedResponse:
      type: object
      properties:
        code:
          type: integer
          description: Business status code (0 indicates success).
        message:
          type: string
        request_id:
          type: string
        data:
          type: object
          properties:
            task_id:
              type: string
            task_status:
              type: string
              enum:
              - submitted
              - processing
              - succeed
              - failed
            created_at:
              type: integer
            updated_at:
              type: integer
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        request_id:
          type: string
    MultiImageToVideoRequest:
      type: object
      required:
      - image_list
      - prompt
      properties:
        model_name:
          type: string
          example: kling-v1-6
        image_list:
          type: array
          items:
            type: string
          description: List of reference image URLs or base64 strings.
        prompt:
          type: string
        mode:
          type: string
          enum:
          - std
          - pro
        duration:
          type: string
          enum:
          - '5'
          - '10'
        callback_url:
          type: string
  responses:
    Unauthorized:
      description: Missing, invalid, or expired JWT.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Too many requests or concurrency limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    TaskId:
      name: task_id
      in: path
      required: true
      schema:
        type: string
      description: The task identifier returned by the create-task call.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'A JWT signed with HS256 from your Access Key (as the iss claim) and Secret Key, passed as Authorization: Bearer <token>. Tokens are short-lived (about 30 minutes; nbf is typically set 5 seconds in the past).'