Create avatar
January 12, 2026 (October 20, 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. 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 itsmaxJobsjobs at once, and GET scheduler/available shows the free slots. If no account has a free slot, the response is429.
Passemailto run the job on that account (429if it is busy). Uploaded files, elements, voices, avatars and earlier tasks belong to one account, so pass theemailof the account they came from. -
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())