Create avatar
January 12, 2026
Table of contents
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
API tokenis required, see Setup useapi.net for details.
Request Body
{
"email": "[email protected]",
"imageUrl": "https://s21-kling.klingai.com/ai-platform/xxx/xxx.jpg"
}
-
emailis optional when only one account configured. However, if you have multiple accounts configured, this parameter becomes required. -
imageUrlis 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:
-
nicknameis optional, display name for the avatar. Maximum length: 30 characters. -
promptis optional, description/prompt for the avatar. Maximum length: 2000 characters. Used as the default prompt when generating avatar videos. -
sceneis optional, the avatar’s use case category. Supported values:all,social_media,entertainment,advertising_marketing(default),business,education,virtual_idol. -
ttsSpeakeris 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. -
ttsSpeedis optional, speech speed. Range:0.8to2.0. Default:1. -
ttsEmotionKeyis 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
-
{ "id": "300137233318846", "status": "SUCCESS" }Use GET /avatars to retrieve the full avatar details after creation.
-
{ "error": "<error message>" } -
{ "error": "Unauthorized", "code": 401 }
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())