Create avatar

January 12, 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 when only one account configured. However, if you have multiple accounts configured, this parameter becomes required.

  • 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