Create/update Kling API account

April 18, 2025 (September 22, 2026)

Table of contents

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

This endpoint adds or updates a Kling account in your configuration. For an account added with email and password, the API logs in to verify your credentials. For an account connected with passToken (see below), the API refreshes the session with the passToken instead. Kling usually asks these accounts to solve the slider on a password login, so their password cannot be checked and is stored as given.

https://api.useapi.net/v1/kling/accounts

Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
Request Body
{
  "email": "user@example.com",
  "password": "your-password",
  "maxJobs": 50
}
  • email and password are required.
    Please see Setup Kling for details.

  • maxJobs is required, specify maximum number of concurrent jobs (1-50)

  • passToken, did, and userId are optional — supply all three together, or none. Provide them only when the account hits the Kling login slider captcha (which our server cannot solve, so plain email + password returns Unable to login (400002)). The three values are your signed-in Kling session captured from your own browser, where you solved the slider. When present, the account is stored in passToken mode and refreshes captcha-free using the passToken, with no password login while the passToken is valid. The connect tool captures them for you — see Setup Kling.
    To update a connected account later, for example to change maxJobs, post email, password and maxJobs alone. The account stays in passToken mode and refreshes with its stored passToken. The password is stored as given without being verified, so make sure it is correct. If the stored passToken no longer works, the API tries a password login instead, which usually fails with Unable to login (400002). Reconnect the account with a fresh passToken, did and userId.

Responses
  • 201 Created

    {
      "email": "user@example.com",
      "authMode": "password",
      "session": {
        "userId": "user12345",
        "ExpireTime": 123456789,
        "ExpireTimeUTC": "2025-01-01T12:13:14.000Z"
      },
      "maxJobs": 50,
      "password": "…secured…"
    }
    

    authMode is password for accounts added with email + password, or passToken for accounts connected with passToken + did + userId. A connected account keeps passToken mode when you update it later without those three values.

  • 400 Bad Request

    {
      "error": "Account does not exist or password is incorrect (100110004)"
    }
    
  • 401 Unauthorized

    {
      "error": "Unauthorized",
      "code": 401
    }
    
  • 402 Payment Required

    {
      "error": "Subscription required",
      "code": 402
    }
    
Model
{ // TypeScript, all fields are optional
  email: string
  authMode: "password" | "passToken"
  session: {
    userId: string
    ExpireTime: number
    ExpireTimeUTC: string
  }
  maxJobs: number
  password: string
  error: string
}
Examples
  • curl -X POST https://api.useapi.net/v1/kling/accounts \
       -H "Content-Type: application/json" \
       -H "Authorization: Bearer …" \
       -d '{"email": "user@example.com", "password": "your-password", "maxJobs": 50}'
    
  • const token = "API token";
    const apiUrl = "https://api.useapi.net/v1/kling/accounts"; 
    const response = await fetch(apiUrl, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`,
      },
      body: JSON.stringify({
        email: "user@example.com",
        password: "your-password",
        maxJobs: 50
      })
    });
    const result = await response.json();
    console.log("response", {response, result});
    
  • import requests
    token = "API token"
    apiUrl = "https://api.useapi.net/v1/kling/accounts"
    headers = {
        "Content-Type": "application/json", 
        "Authorization" : f"Bearer {token}"
    }
    data = {
        "email": "user@example.com",
        "password": "your-password",
        "maxJobs": 50
    }
    response = requests.post(apiUrl, headers=headers, json=data)
    print(response, response.json())
    
Try It