The resources (image, video, voice) generated by our API are valid for 7 days. Please save the relevant resources as soon as possible to prevent expiration.
Description
- First you need to generate the voice through the following method or directly provide a link to the available voice file
- If you want to use the system’s sound model to generate speech, you need to generate a link by calling the interface Create TTS
- If you want to use the sound model you provide to generate speech, you need to generate a link by calling the interface Create Voice Clone
- Secondly, you need to provide an avatar link, which can be a picture or video.
- If you want to use the avatar provided by the system, you can obtain it through the interface Get Avatar List .Or provide your own avatar url.
- Then, you need to generate an avatar video by calling the API Create Talking Avatar
- Finally,The processing status will be returned promptly through the provided callback address, or you can also query it by calling the interface Get Video Info
Get Talking Avatar List
GET https://openapi.akool.com/api/open/v3/avatar/list
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token. |
| Parameter | Type | Value | Description |
|---|---|---|---|
| from | Number | 2、3 | 2 represents the official avatar of Akool, 3 represents the avatar uploaded by the user themselves,If empty, returns all avatars by default. |
| type | Number | 1、2 | 1 represents the talking avatar of Akool, 2 represents the streaming avatar of Akool,If empty, returns all avatars by default. |
| page | Number | 1 | Current number of pages,Default is 1. |
| size | Number | 10 | Current number of returns per page,Default is 100. |
| Parameter | Type | Value | Description |
|---|---|---|---|
| code | int | 1000 | Interface returns business status code(1000:success) |
| msg | String | OK | Interface returns status information |
| data | Array | [{ avatar_id: "xx", url: "" }] | avatar_id: Used by avatar interface and creating avatar interface. url: You can preview the avatar via the link. |
curl --location 'https://openapi.akool.com/api/open/v3/avatar/list?from=2&page=1&size=100' \
--header 'x-api-key: {{API Key}}'
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("https://openapi.akool.com/api/open/v3/avatar/list?from=2&page=1&size=100")
.method("GET", body)
.addHeader("x-api-key", "{{API Key}}")
.build();
Response response = client.newCall(request).execute();
const myHeaders = new Headers();
myHeaders.append("x-api-key", "{{API Key}}");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow",
};
fetch(
"https://openapi.akool.com/api/open/v3/avatar/list?from=2&page=1&size=100",
requestOptions
)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
<?php
$client = new Client();
$headers = [
'x-api-key' => '{{API Key}}'
];
$request = new Request('GET', 'https://openapi.akool.com/api/open/v3/avatar/list?from=2&page=1&size=100', $headers);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
import requests
url = "https://openapi.akool.com/api/open/v3/avatar/list?from=2&page=1&size=100"
payload = {}
headers = {
'x-api-key': '{{API Key}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
{
"code": 1000,
"msg": "ok",
"data": [
{
"name": "Yasmin in White shirt", // avatar name
"avatar_id": "Yasmin_in_White_shirt_20231121", // parameter values required to create talkingavatar
"url": "https://drz0f01yeq1cx.cloudfront.net/1700786304161-b574407f-f926-4b3e-bba7-dc77d1742e60-8169.png", // avatar url
"gender": "female", // avatar gender
"thumbnailUrl": "https://drz0f01yeq1cx.cloudfront.net/avatar/thumbnail/1700786304161-b574407f-f926-4b3e-bba7-dc77d1742e60-8169.png", // avatar thumbnail
"from": 2 // parameter values required to create talkingavatar
}
]
}
Create Talking avatar
POST https://openapi.akool.com/api/open/v3/talkingavatar/create
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token. |
| Parameter | Type | Value | Description |
|---|---|---|---|
| width | Number | Custom | Set the output video width. Must be less than or equal to 3840. |
| height | Number | Custom | Set the output video height. Must be less than or equal to 3840. |
| avatar_from | Number | 2 or 3 | You use the avatar from of the avatar model, and you can get from Get TalkingAvatar List api, you will obtain the field 【from】 and pass it here. If you provide an avatar URL yourself, avatar_from must be 3. |
| webhookUrl | String | Callback url address based on HTTP request. | |
| elements | [Object] | Collection of elements passed in in the video | |
| [elements].url | String | Link to element(When type is equal to image, url can be either a link or a Hexadecimal Color Code). When avatar_from =2, you don’t need to pass this parameter. The image formats currently only support “.png”, “.jpg”, “.jpeg”, “.webp”, and the video formats currently only support “.mp4”, “.mov”, “.avi” | |
| [elements].scale_x | Number | 1 | Horizontal scaling ratio(Required when type is equal to image or avatar) |
| [elements].scale_y | Number | 1 | Vertical scaling ratio (Required when type is equal to image or avatar) |
| [elements].offset_x | Number | Horizontal offset of the upper left corner of the element from the video setting area (in pixels)(Required when type is equal to image or avatar) | |
| [elements].offset_y | Number | Vertical offset of the upper left corner of the element from the video setting area (in pixels)(Required when type is equal to image or avatar) | |
| [elements].height | Number | The height of the element | |
| [elements].width | Number | The width of the element | |
| [elements].type | String | Element type(avatar、image、audio) | |
| [elements].avatar_id | String | When type is equal to avatar, you use the avatar_id of the avatar model, and you can get from Get TalkingAvatar List api, you will obtain the field 【avatar_id】 and pass it here。 If you provide an avatar URL yourself, you don’t need to pass this parameter. | |
| [elements].input_text | String | Audio element support, for input text, the per-request character limit depends on the subscription plan: Pro – 5,000, Pro Max – 10,000, Business – 50,000. If both the URL and the input text fields are passed, the URL takes precedence. The “input_text” and “voice_id” fields must both be present. | |
| [elements].voice_id | String | Audio element support. Get Voice List |
| Parameter | Type | Value | Description |
|---|---|---|---|
| code | int | 1000 | Interface returns business status code (1000:success) |
| msg | String | Interface returns status information | |
| data | Object | { _id:"", video_status:3, video:"" } | _id: Interface returns data status: the status of video: 【1:queueing, 2:processing, 3:completed, 4:failed】, video: the url of Generated video |
Please note that the generated video link can only be obtained when video_status is equal to 3.
We provide 2 methods:
- Obtain through webhook
- Obtain by polling the following interface Get Video Info
{
"width": 3840,
"height": 2160,
"avatar_from": 3,
"elements": [
{
"type": "image",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729480978805-talkingAvatarbg.png",
"width": 780,
"height": 438,
"scale_x": 1,
"scale_y": 1,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "avatar",
"url": "https://drz0f01yeq1cx.cloudfront.net/1735009621724-7ce105c6-ed9a-4d13-9061-7e3df59d9798-7953.mp4",
"scale_x": 1,
"scale_y": 1,
"width": 1080,
"height": 1080,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "audio",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729666642023-bd6ad5f1-d558-40c7-b720-ad729688f814-6403.mp3",
"input_text": "A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.",
"voice_id": "6889b628662160e2caad5dbc"
}
],
"webhookUrl": ""
}
curl --location 'https://openapi.akool.com/api/open/v3/talkingavatar/create' \
--header "x-api-key: {{API Key}}" \
--header 'Content-Type: application/json' \
--data '{
"width": 3840,
"height": 2160,
"avatar_from": 3,
"elements": [
{
"type": "image",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729480978805-talkingAvatarbg.png",
"width": 780,
"height": 438,
"scale_x": 1,
"scale_y": 1,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "avatar",
"url": "https://drz0f01yeq1cx.cloudfront.net/1735009621724-7ce105c6-ed9a-4d13-9061-7e3df59d9798-7953.mp4",
"scale_x": 1,
"scale_y": 1,
"width": 1080,
"height": 1080,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "audio",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729666642023-bd6ad5f1-d558-40c7-b720-ad729688f814-6403.mp3",
"input_text": "A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.",
"voice_id": "6889b628662160e2caad5dbc"
}
]
}'
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"width\": 3840,\n \"height\": 2160,\n \"avatar_from\": 3,\n \"elements\": [\n {\n \"type\": \"image\",\n \"url\": \"https://drz0f01yeq1cx.cloudfront.net/1729480978805-talkingAvatarbg.png\",\n \"width\": 780,\n \"height\": 438,\n \"scale_x\": 1,\n \"scale_y\": 1,\n \"offset_x\": 1920,\n \"offset_y\": 1080\n },\n {\n \"type\": \"avatar\",\n \"url\": \"https://drz0f01yeq1cx.cloudfront.net/1735009621724-7ce105c6-ed9a-4d13-9061-7e3df59d9798-7953.mp4\",\n \"scale_x\": 1,\n \"scale_y\": 1,\n \"width\": 1080,\n \"height\": 1080,\n \"offset_x\": 1920,\n \"offset_y\": 1080\n },\n {\n \"type\": \"audio\",\n \"url\": \"https://drz0f01yeq1cx.cloudfront.net/1729666642023-bd6ad5f1-d558-40c7-b720-ad729688f814-6403.mp3\"\n }\n ]\n}");
Request request = new Request.Builder()
.url("https://openapi.akool.com/api/open/v3/talkingavatar/create")
.method("POST", body)
.addHeader("x-api-key", "{{API Key}}")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
const myHeaders = new Headers();
myHeaders.append("x-api-key", "{{API Key}}");
myHeaders.append("Content-Type", "application/json");
const raw = JSON.stringify({
"width": 3840,
"height": 2160,
"avatar_from": 3,
"elements": [
{
"type": "image",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729480978805-talkingAvatarbg.png",
"width": 780,
"height": 438,
"scale_x": 1,
"scale_y": 1,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "avatar",
"url": "https://drz0f01yeq1cx.cloudfront.net/1735009621724-7ce105c6-ed9a-4d13-9061-7e3df59d9798-7953.mp4",
"scale_x": 1,
"scale_y": 1,
"width": 1080,
"height": 1080,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "audio",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729666642023-bd6ad5f1-d558-40c7-b720-ad729688f814-6403.mp3",
"input_text": "A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.A military parade is a formation of military personnels whose movement is restricted by close-order manoeuvering known as drilling or marching. Large military parades are today held on major holidays and military events around the world.",
"voice_id": "6889b628662160e2caad5dbc"
}
]
});
const requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow"
};
fetch("https://openapi.akool.com/api/open/v3/talkingavatar/create", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
<?php
$client = new Client();
$headers = [
'x-api-key' =>'{{API Key}}',
'Content-Type' => 'application/json'
];
$body = '{
"width": 3840,
"height": 2160,
"avatar_from": 3,
"elements": [
{
"type": "image",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729480978805-talkingAvatarbg.png",
"width": 780,
"height": 438,
"scale_x": 1,
"scale_y": 1,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "avatar",
"url": "https://drz0f01yeq1cx.cloudfront.net/1735009621724-7ce105c6-ed9a-4d13-9061-7e3df59d9798-7953.mp4",
"scale_x": 1,
"scale_y": 1,
"width": 1080,
"height": 1080,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "audio",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729666642023-bd6ad5f1-d558-40c7-b720-ad729688f814-6403.mp3"
}
]
}';
$request = new Request('POST', 'https://openapi.akool.com/api/open/v3/talkingavatar/create', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
import requests
import json
url = "https://openapi.akool.com/api/open/v3/talkingavatar/create"
payload = json.dumps({
"width": 3840,
"height": 2160,
"avatar_from": 3,
"elements": [
{
"type": "image",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729480978805-talkingAvatarbg.png",
"width": 780,
"height": 438,
"scale_x": 1,
"scale_y": 1,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "avatar",
"url": "https://drz0f01yeq1cx.cloudfront.net/1735009621724-7ce105c6-ed9a-4d13-9061-7e3df59d9798-7953.mp4",
"scale_x": 1,
"scale_y": 1,
"width": 1080,
"height": 1080,
"offset_x": 1920,
"offset_y": 1080
},
{
"type": "audio",
"url": "https://drz0f01yeq1cx.cloudfront.net/1729666642023-bd6ad5f1-d558-40c7-b720-ad729688f814-6403.mp3"
}
]
})
headers = {
'x-api-key':'{{API Key}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
{
"code": 1000,
"msg": "OK",
"data": {
"_id": "67491cdb4d9d1664a9782292",
"uid": 100002,
"video_id": "f1a489f4-0cca-4723-843b-e42003dc9f32",
"task_id": "67491cdb1acd9d0ce2cc8998",
"video_status": 1,
"video": "",
"create_time": 1732844763774
}
}
Get Video Info
GET https://openapi.akool.com/api/open/v3/content/video/infobymodelid?video_model_id=64dd838cf0b6684651e90217
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token. |
| Parameter | Type | Value | Description |
|---|---|---|---|
| video_model_id | String | NULL | video db id: You can get it based on the _id field returned by Generate TalkingAvatar . |
| Parameter | Type | Value | Description |
|---|---|---|---|
| code | int | 1000 | Interface returns business status code(1000:success) |
| msg | String | OK | Interface returns status information |
| data | Object | { video_status:1, _id:"", video:"" } | video_status: the status of video:【1:queueing, 2:processing, 3:completed, 4:failed】 video: Generated video resource url _id: Interface returns data |
curl --location 'https://openapi.akool.com/api/open/v3/content/video/infobymodelid?video_model_id=64b126c4a680e8edea44f02b' \
--header "x-api-key: {{API Key}}"
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("https://openapi.akool.com/api/open/v3/content/video/infobymodelid?video_model_id=64b126c4a680e8edea44f02b")
.method("GET", body)
.addHeader("x-api-key", "{{API Key}}")
.build();
Response response = client.newCall(request).execute();
const myHeaders = new Headers();
myHeaders.append("x-api-key", "{{API Key}}");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow",
};
fetch(
"https://openapi.akool.com/api/open/v3/content/video/infobymodelid?video_model_id=64b126c4a680e8edea44f02b",
requestOptions
)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
<?php
$client = new Client();
$headers = [
'x-api-key' =>'{{API Key}}'
];
$request = new Request('GET', 'https://openapi.akool.com/api/open/v3/content/video/infobymodelid?video_model_id=64b126c4a680e8edea44f02b', $headers);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
import requests
url = "https://openapi.akool.com/api/open/v3/content/video/infobymodelid?video_model_id=64b126c4a680e8edea44f02b"
payload = {}
headers = {
'x-api-key':'{{API Key}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
{
"code": 1000,
"msg": "OK",
"data": {
"_id": "64dd92c1f0b6684651e90e09",
"create_time": 1692242625334, // content creation time
"uid": 378337,
"video_id": "0acfed62e24f4cfd8801c9e846347b1d", // video id
"deduction_duration": 10, // credits consumed by the final result
"video_status": 2, // current status of video: 【1:queueing(The requested operation is being processed),2:processing(The requested operation is being processing),3:completed(The request operation has been processed successfully),4:failed(The request operation processing failed, the reason for the failure can be viewed in the video translation details.)】
"video": "" // Generated video resource url
}
}
Get Avatar Detail
GET https://openapi.akool.com/api/open/v3/avatar/detail
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token. |
| Parameter | Type | Value | Description |
|---|---|---|---|
| id | String | avatar record id. |
| Parameter | Type | Value | Description |
|---|---|---|---|
| code | int | 1000 | Interface returns business status code(1000:success) |
| msg | String | OK | Interface returns status information |
| data | Array | [{ avatar_id: "xx", url: "", status: "" }] | avatar_id: Used by avatar interface and creating avatar interface. url: You can preview the avatar via the link. status: 1-queueing 2-processing),3:completed 4-failed |
curl --location 'https://openapi.akool.com/api/open/v3/avatar/detail?id=66a1a02d591ad336275eda62' \
--header 'x-api-key: {{API Key}}'
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("https://openapi.akool.com/api/open/v3/avatar/detail?id=66a1a02d591ad336275eda62")
.method("GET", body)
.addHeader("x-api-key", "{{API Key}}")
.build();
Response response = client.newCall(request).execute();
const myHeaders = new Headers();
myHeaders.append("x-api-key", "{{API Key}}");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow",
};
fetch(
"https://openapi.akool.com/api/open/v3/avatar/detail?id=66a1a02d591ad336275eda62,
requestOptions
)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
<?php
$client = new Client();
$headers = [
'x-api-key' => '{{API Key}}'
];
$request = new Request('GET', 'https://openapi.akool.com/api/open/v3/avatar/detail?66a1a02d591ad336275eda62', $headers);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
import requests
url = "https://openapi.akool.com/api/open/v3/avatar/detail?id=66a1a02d591ad336275eda62"
payload = {}
headers = {
'x-api-key': '{{API Key}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
{
"code": 1000,
"msg": "ok",
"data": [
{
"_id": "66a1a02d591ad336275eda62",
"uid": 100010,
"type": 2,
"from": 3,
"status": 3,
"name": "30870eb0",
"url": "https://drz0f01yeq1cx.cloudfront.net/1721868487350-6b4cc614038643eb9f842f4ddc3d5d56.mp4"
}
]
}
Upload Talking Avatar
POST https://openapi.akool.com/api/open/v3/avatar/create
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token. |
| Parameter | Type | Value | Description |
|---|---|---|---|
| url | String | Avatar resource link. It is recommended that the video be about one minute long, and the avatar in the video content should rotate at a small angle and be clear. | |
| avatar_id | String | avatar unique ID,Can only contain /^a-zA-Z0-9/. | |
| name | String | Avatar display name for easier identification and management. | |
| type | String | 1 | Avatar type, 1 represents talking avatar |
| Parameter | Type | Value | Description |
|---|---|---|---|
| code | int | 1000 | Interface returns business status code(1000:success) |
| msg | String | OK | Interface returns status information |
| data | Array | [{ avatar_id: "xx", url: "", status: 1 }] | avatar_id: Used by creating live avatar interface. url: You can preview the avatar via the link. status: 1-queueing, 2-processing, 3-success, 4-failed |
curl --location 'https://openapi.akool.com/api/open/v3/avatar/create' \
--header 'x-api-key: {{API Key}}' \
--header 'Content-Type: application/json' \
--data '{
"url": "https://drz0f01yeq1cx.cloudfront.net/1721197444322-leijun000.mp4",
"avatar_id": "HHdEKhn7k7vVBlR5FSi0e",
"name": "My Talking Avatar",
"type": 1
}'
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n \n \"url\": \"https://drz0f01yeq1cx.cloudfront.net/1721197444322-leijun000.mp4\",\n \"avatar_id\": \"HHdEKhn7k7vVBlR5FSi0e\",\n \"name\": \"My Talking Avatar\",\n \"type\": 1\n}");
Request request = new Request.Builder()
.url("https://openapi.akool.com/api/open/v3/avatar/create")
.method("POST", body)
.addHeader("x-api-key", "{{API Key}}")
.build();
Response response = client.newCall(request).execute();
const myHeaders = new Headers();
myHeaders.append("x-api-key", "{{API Key}}");
const raw = JSON.stringify({
"url": "https://drz0f01yeq1cx.cloudfront.net/1721197444322-leijun000.mp4",
"avatar_id": "HHdEKhn7k7vVBlR5FSi0e",
"name": "My Talking Avatar",
"type": 1
});
const requestOptions = {
method: "POST",
headers: myHeaders,
redirect: "follow",
body: raw
};
fetch(
"https://openapi.akool.com/api/open/v3/avatar/create",
requestOptions
)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
<?php
$client = new Client();
$headers = [
'x-api-key' => '{{API Key}}'
];
$body = '{
"url": "https://drz0f01yeq1cx.cloudfront.net/1721197444322-leijun000.mp4",
"avatar_id": "HHdEKhn7k7vVBlR5FSi0e",
"name": "My Talking Avatar",
"type": 1
}';
$request = new Request('POST', 'https://openapi.akool.com/api/open/v3/avatar/create', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
import requests
url = "https://openapi.akool.com/api/open/v3/avatar/create"
payload = json.dumps({
"url": "https://drz0f01yeq1cx.cloudfront.net/1721197444322-leijun000.mp4",
"avatar_id": "HHdEKhn7k7vVBlR5FSi0e",
"name": "My Talking Avatar",
"type": 1
});
headers = {
'x-api-key': '{{API Key}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
{
"code": 1000,
"msg": "ok",
"data": [
{
"_id": "655ffeada6976ea317087193",
"disabled": false,
"uid": 1,
"type": 1,
"from": 2,
"status": 1,
"sort": 12,
"create_time": 1700788730000,
"name": "Yasmin in White shirt",
"avatar_id": "Yasmin_in_White_shirt_20231121",
"url": "https://drz0f01yeq1cx.cloudfront.net/1700786304161-b574407f-f926-4b3e-bba7-dc77d1742e60-8169.png",
"modify_url": "https://drz0f01yeq1cx.cloudfront.net/1700786304161-b574407f-f926-4b3e-bba7-dc77d1742e60-8169.png",
"gender": "female",
"thumbnailUrl": "https://drz0f01yeq1cx.cloudfront.net/avatar/thumbnail/1700786304161-b574407f-f926-4b3e-bba7-dc77d1742e60-8169.png",
"crop_arr": []
}
]
}
Please note that if the value of the response code is not equal to 1000, the
request is failed or wrong
| Parameter | Value | Description |
|---|---|---|
| code | 1000 | Success |
| code | 1003 | Parameter error or Parameter can not be empty |
| code | 1006 | Your quota is not enough |
| code | 1109 | create avatar video error |
| code | 1102 | Authorization cannot be empty |
| code | 1200 | The account has been banned |
| code | 1201 | Create audio error, please try again later |