Kling AI Text-to-Video API

Generate video from a text prompt.

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-text-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-text-to-video-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kling AI Open Platform Account Text-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: Text-to-Video
  description: Generate video from a text prompt.
paths:
  /v1/videos/text2video:
    post:
      operationId: createTextToVideoTask
      tags:
      - Text-to-Video
      summary: Create a text-to-video task
      description: Submit a text prompt to generate a video. Returns a task_id to poll.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TextToVideoRequest'
      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/text2video/{task_id}:
    get:
      operationId: getTextToVideoTask
      tags:
      - Text-to-Video
      summary: Query a text-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'
        '401':
          $ref: '#/components/responses/Unauthorized'
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
    TextToVideoRequest:
      type: object
      required:
      - prompt
      properties:
        model_name:
          type: string
          description: Video model, e.g. kling-v1, kling-v1-6, kling-v2-master, kling-v2-1, kling-v2-5-turbo, kling-v2-6.
          example: kling-v2-6
        prompt:
          type: string
          description: Text description of the video to generate.
        negative_prompt:
          type: string
          description: Content to avoid.
        cfg_scale:
          type: number
          description: Prompt adherence strength, 0 to 1.
        mode:
          type: string
          enum:
          - std
          - pro
          description: Standard or professional generation mode.
        aspect_ratio:
          type: string
          enum:
          - '16:9'
          - '9:16'
          - '1:1'
          description: Output aspect ratio.
        duration:
          type: string
          enum:
          - '5'
          - '10'
          description: Video length in seconds.
        callback_url:
          type: string
          description: Optional URL notified when the task completes.
    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
  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).'