Create avatar

January 12, 2026 (October 20, 2026)

Table of contents

  1. Request Headers
  2. Request Body
    1. Optional Parameters (AI Auto-Populated)
  3. Responses
  4. Model
  5. Examples
  6. Try It

This endpoint creates a new avatar from an image. Avatars are digital characters that can be animated with lip-sync using POST /avatars/video.

Most fields are optional and will be automatically populated using AI if not provided. The AI analyzes your image to suggest an appropriate nickname, description, scene, and TTS settings.

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

Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
Request Body
{
  "email": "[email protected]",
  "imageUrl": "https://s21-kling.klingai.com/ai-platform/xxx/xxx.jpg"
}
  • email is optional. Leave it out and the job goes to one of your accounts that has a free job slot, picked at random. Each account runs at most its maxJobs jobs at once, and GET scheduler/available shows the free slots. If no account has a free slot, the response is 429.
    Pass email to run the job on that account (429 if it is busy). Uploaded files, elements, voices, avatars and earlier tasks belong to one account, so pass the email of the account they came from.

  • imageUrl is required, the URL of the avatar image. You can upload images using POST /assets and use the returned URL here.

Optional Parameters (AI Auto-Populated)

The following fields will be automatically filled by AI if not provided:

  • nickname is optional, display name for the avatar. Maximum length: 30 characters.

  • prompt is optional, description/prompt for the avatar. Maximum length: 2000 characters. Used as the default prompt when generating avatar videos.

  • scene is optional, the avatar’s use case category. Supported values: all, social_media, entertainment, advertising_marketing (default), business, education, virtual_idol.

  • ttsSpeaker is optional, the TTS speaker ID for voice. Use GET /tts/voices to get available speaker IDs. AI will recommend an appropriate voice if not provided.

  • ttsSpeed is optional, speech speed. Range: 0.8 to 2.0. Default: 1.

  • ttsEmotionKey is optional, speech emotion. Supported values: neutral (default), happy, angry, sad, fearful, disgusted, surprised. Note: Not all emotions are available for all speakers. Check GET /tts/voices for each speaker’s supported emotions.

Responses
Model
{ // TypeScript
  id: string
  status: 'SUCCESS' | 'FAILED'
}
Examples
  • curl -X POST "https://api.useapi.net/v1/kling/avatars" \
       -H "Content-Type: application/json" \
       -H "Authorization: Bearer ..." \
       -d '{
         "email": "[email protected]",
         "imageUrl": "https://s21-kling.klingai.com/ai-platform/xxx/xxx.jpg"
       }'
    
  • const token = "API token";
    const email = "Previously configured account email";
    const apiUrl = "https://api.useapi.net/v1/kling/avatars";
    const response = await fetch(apiUrl, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`,
      },
      body: JSON.stringify({
        email: email,
        imageUrl: "https://s21-kling.klingai.com/ai-platform/xxx/xxx.jpg"
      })
    });
    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/avatars"
    headers = {
        "Content-Type": "application/json",
        "Authorization" : f"Bearer {token}"
    }
    data = {
        "email": email,
        "imageUrl": "https://s21-kling.klingai.com/ai-platform/xxx/xxx.jpg"
    }
    response = requests.post(apiUrl, headers=headers, json=data)
    print(response, response.json())
    
Try It