Get Available Motions

October 7, 2025

Table of contents

  1. Request Headers
  2. Query Parameters
  3. Responses
  4. Model
  5. Examples
  6. Try It

This endpoint retrieves a list of available motion templates that can be used with the POST /videos/motion-create endpoint to apply motions to images.

https://api.useapi.net/v1/kling/videos/motions?…

Request Headers
Authorization: Bearer {API token}
Query Parameters
  • email is optional when only one account configured. However, if you have multiple accounts configured, this parameter becomes required.

  • mine is optional, boolean value. When true, retrieves user-uploaded motions (created via POST /videos/motion-upload). When false or omitted, retrieves official Kling motion templates.

  • pageNum is optional, integer starting from 1. Only applies when mine=true. Specifies the page number for pagination.
    Default: 1

  • pageSize is optional, integer between 1 and 100. Only applies when mine=true. Specifies the number of results per page.
    Default: 40

Notes:

  • Official motions have negative workId values and include a tag field for categorization
  • User-uploaded motions have positive workId values and include a taskId field
  • Use the workId value when making requests to the motion-create endpoint
  • Pagination parameters (pageNum, pageSize) only work with mine=true
  • To delete a user-uploaded motion, use DELETE /tasks/task_id with the motion’s taskId
Responses
  • 200 OK

    Official Motions (mine=false or omitted):

    [
      {
        "workName": "Walking",
        "workId": -123456,
        "official": true,
        "tag": "basic",
        "resource": {
          "resource": "https://s21-kling.klingai.com/...motion.mp4"
        },
        "cover": {
          "resource": "https://s21-kling.klingai.com/...cover.jpg"
        },
        "extData": {
          "output_binary": "https://s21-kling.klingai.com/...binary.zip",
          "bvh_binary": "https://s21-kling.klingai.com/...bvh.zip"
        }
      }
    ]
    

    User-uploaded Motions (mine=true):

    [
      {
        "workName": "Custom Dance",
        "workId": 987654321,
        "taskId": 987654320,
        "official": false,
        "resource": {
          "resource": "https://s21-kling.klingai.com/...motion.mp4"
        },
        "cover": {
          "resource": "https://s21-kling.klingai.com/...cover.jpg"
        },
        "extData": {
          "output_binary": "https://s21-kling.klingai.com/...binary.zip",
          "bvh_binary": "https://s21-kling.klingai.com/...bvh.zip"
        }
      }
    ]
    
  • 401 Unauthorized

    {
      "error": "Unauthorized",
      "code": 401
    }
    
Model
{ // TypeScript, all fields are optional
  workName: string       // Display name of the motion
  workId: number        // Motion identifier (negative for official, positive for user)
  taskId?: number       // Task ID (only present for user-uploaded motions)
  official: boolean     // Whether this is an official Kling motion
  tag?: string         // Category tag (only for official motions)
  resource: {
    resource: string   // URL to the motion video preview
  }
  cover: {
    resource: string   // URL to the motion cover image
  }
  extData: {
    output_binary: string  // URL to the motion binary data
    bvh_binary: string     // URL to the BVH (motion capture) data
  }
}
Examples
  • # Get official motions
    curl -X GET "https://api.useapi.net/v1/kling/videos/[email protected]" \
       -H "Authorization: Bearer …"
    
    # Get user-uploaded motions
    curl -X GET "https://api.useapi.net/v1/kling/videos/[email protected]&mine=true&pageNum=1&pageSize=20" \
       -H "Authorization: Bearer …"
    
  • const token = "API token";
    const email = "Previously configured account email";
    const mine = false; // false for official, true for user-uploaded
    const apiUrl = "https://api.useapi.net/v1/kling/videos/motions";
    const response = await fetch(`${apiUrl}?email=${email}&mine=${mine}`, {
      method: "GET",
      headers: {
        "Authorization": `Bearer ${token}`,
      }
    });
    const result = await response.json();
    console.log("response", {response, result});
    
  • import requests
    token = "API token"
    email = "Previously configured account email"
    apiUrl = "https://api.useapi.net/v1/kling/videos/motions"
    headers = {
        "Authorization" : f"Bearer {token}"
    }
    params = {
        "email": email,
        "mine": False  # False for official, True for user-uploaded
    }
    response = requests.get(apiUrl, headers=headers, params=params)
    print(response, response.json())
    
Try It