Skip to main content
You can use the following APIs to create voice clones, text-to-speech, voice changer, and manage voice resources.
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.

Rates

PlanProMaxBusinessEnterprise
Text-to-Speech4.4 credits/1000 characters3.2 credits/1000 characters2.4 credits/1000 charactersCustomized
Instant voice clone30 voices180 voices500 voicesCustomized
Voice changer4.4 credits/minute3.2 credits/minute2.4 credits/minuteCustomized

Models

Voice Model Overview: The following multilingual voice models are available for text-to-speech synthesis, each with strong performance across different language families.
Model NameDescription
Akool Multilingual 1Performs well on English, Spanish, French, German, Italian, European Portuguese, Dutch, Russian, and other Western languages
Akool Multilingual 2Excels at text-to-speech across various languages, but does not support voice cloning.
Akool Multilingual 3Performs well on Chinese (Mandarin), Chinese (Cantonese ), Japanese, Korean, as well as English, Spanish, French, and other major Western languages
Akool Multilingual 4Performs well on Portuguese (Brazil).

Create Voice Clone

POST https://openapi.akool.com/api/open/v4/voice/clone
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization.getToken
Body Attributes
ParameterTypeRequiredValueDescription
source_voice_fileStringtrueOriginal audio file URL, supports mp3, mp4, wav, etc. Must be a public accessible URL, The maximum file size is 30MB.
voice_optionsObjectfalseAudio tagging options
- styleArrayfalseVoice style tags (e.g., [“Authoritative”, “Calm”])
- genderArrayfalseGender tags (e.g., [“Male”, “Female”])
- ageArrayfalseAge tags (e.g., [“Young”, “Middle”, “Elderly”])
- scenarioArrayfalseUse case tags (e.g., [“Advertisement”, “Education”])
- remove_background_noiseBooleanfalsefalseRemove background noise, disabled by default
- languageStringfalseenLanguage code (ISO 639-1) of the audio file. Defaults to “en” if not specified
- clone_promptStringfalseMust match the audio content exactly, including punctuation, to enhance clone quality. Sound reproduction example audio. Providing this parameter will help enhance the similarity and stability of the voice synthesis’s sound quality. If using this parameter, a small sample audio segment must also be uploaded. The audio file uploaded must comply with the following specifications: The format of the uploaded audio file should be: mp3 or wav format; The duration of the uploaded audio file should be less than 8 seconds; The size of the uploaded audio file should not exceed 20 MB;
- need_volume_normalizationBooleanfalsefalseAudio cloning parameter: Enable volume normalization, defaults to false
nameStringfalseAudio name
webhookUrlStringfalseCallback url address based on HTTP request
voice_model_nameStringfalseThe designated model for Clone, Supported voice models: Akool Multilingual 1, Akool Multilingual 3, Akool Multilingual 4. getVoiceModelName
Response Attributes
ParameterTypeValueDescription
- codeInteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- uidInteger

101400

User ID
- team_idString

”6805fb69e92d9edc7ca0b409”

Team ID
- voice_idString

null

Voice ID, This voice_id can be obtained from your cloned voices or the Akool voice list. Use the getVoiceList function to retrieve it
- genderString

”Male”

Voice gender
- nameString

”MyVoice0626-01”

Voice name
- previewString

null

Preview audio URL, this value will be updated after task completion, you can view it in the voiceList.getVoiceList
- textString

”This is a comic style model…”

Preview text content
- durationNumber

8064

Audio duration in milliseconds
- statusInteger

1

Voice clone status: 【1:queueing, 2:processing, 3:completed, 4:failed】
- create_timeLong

1751349718268

Creation timestamp
- styleArray

[“Authoritative”, “Calm”]

Voice style tags
- scenarioArray

[“Advertisenment”]

Use case scenario tags
- ageArray

[“Elderly”, “Middle”]

Age category tags
- deduction_creditInteger

0

Deducted credits
- webhookUrlString

”Callback URL”

Callback URL
- _idString

”686379d641e5eb74bb8dfe3f”

Document ID
- source_voice_fileStringhttps://drz0f01yeq1cx.cloudfront.net/1751363983518-9431-audio1751363981879.webmOriginal audio file URL

Example

Body
{
    "source_voice_file": "https://drz0f01yeq1cx.cloudfront.net/1755534706613-000a30e917d848d9bd166b636530ae21-38a696952ca94b9eb9ecf07ced494a58.mp3",
    "name": "My Voice",
    "voice_options": {
        "remove_background_noise": true,
        "style": ["Authoritative","Calm","Confident","Enthusiastic"],
        "gender": ["Male"],
        "age": ["Elderly"],
        "scenario": ["Advertisenment"],
        "language": "en",
        "clone_prompt": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
        "need_volume_normalization": true
    },
    "voice_model_name": "Akool Multilingual 3",
    "webhookUrl": ""
}
Request
curl --location 'https://openapi.akool.com/api/open/v4/voice/clone' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
    "source_voice_file": "https://drz0f01yeq1cx.cloudfront.net/1755534706613-000a30e917d848d9bd166b636530ae21-38a696952ca94b9eb9ecf07ced494a58.mp3",
    "name": "My Voice",
    "voice_options": {
        "remove_background_noise": true,
        "style": ["Authoritative","Calm","Confident","Enthusiastic"],
        "gender": ["Male"],
        "age": ["Elderly"],
        "scenario": ["Advertisenment"],
        "language": "en",
        "clone_prompt": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
        "need_volume_normalization": true
    },
    "voice_model_name": "Akool Multilingual 3",
    "webhookUrl": ""
}'
Response
{
    "code": 1000,
    "msg": "OK",
    "data": {
        "uid": 101400,
        "team_id": "6805fb69e92d9edc7ca0b409",
        "voice_id": null,
        "gender": "Male",
        "name": "MyVoice0626-01",
        "preview": null,
        "text": "This is a comic style model, this is a comic style model, this is a comic style model, this is a comic style model",
        "duration": 8064,
        "status": 1,
        "create_time": 1751349718268,
        "style": [
            "Authoritative",
            "Calm"
        ],
        "scenario": [
            "Advertisenment"
        ],
        "age": [
            "Elderly",
            "Middle"
        ],
        "deduction_credit": 0,
        "webhookUrl": "",
        "source_voice_file": "https://drz0f01yeq1cx.cloudfront.net/1751363983518-9431-audio1751363981879.webm",
        "_id": "686379d641e5eb74bb8dfe3f"
    }
}

Create Text to Speech

POST https://openapi.akool.com/api/open/v4/voice/tts
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization.getToken
Body Attributes
ParameterTypeRequiredValueDescription
input_textStringtrueFor input text, the per-request character limit depends on the subscription plan: Pro – 5,000, Pro Max – 10,000, Business – 50,000.
voice_idStringtrueVoice ID, Voice synthesis ID. If both timber_weights and voice_id fields have values, timber_weights will not take effect.get this voice_id from your cloned voices or akool voice list.getVoiceId
voice_optionsObjectfalseAudio settings
- stabilityNumberfalseVoice stability (0-1) , Supported voice models: Akool Multilingual 1, getVoiceModelName
- similarity_boostNumberfalseSimilarity boost (0-1) , Supported voice models: Akool Multilingual 1, getVoiceModelName
- styleNumberfalseVoice style (0-1) , Supported voice models: Akool Multilingual 1, Akool Multilingual 2. Style examples: cheerful, getVoiceModelName
- speedNumberfalseSpeech speed (0.7-1.2) , Supported voice models: Akool Multilingual 1, Akool Multilingual 2, Akool Multilingual 3, getVoiceModelName
- speaker_boostBooleanfalseSpeaker boost, Supported voice models: Akool Multilingual 1, getVoiceModelName
- emotionStringfalseEmotion (happy, sad, angry, fearful, disgusted, surprised, neutral) , It only supports Chinese voice. Supported voice models: Akool Multilingual 2, Akool Multilingual 3, getVoiceModelName
- volumeIntegerfalseVolume (0-100) , Supported voice models: Akool Multilingual 2, Akool Multilingual 3, getVoiceModelName
webhookUrlStringfalseCallback url address based on HTTP request
language_codeStringfalseCurrently supported: Akool Multilingual 1, Akool Multilingual 3 and Akool Multilingual 4. When passing in, only Language code (ISO 639-1) such as “zh”, “pt” is supported. This parameter is designed to enhance the use of minority languages. Adding audio effects will make it better, but it cannot achieve the effect of translation.
extra_optionsObjectfalseAdditional parameter settings
- previous_textStringfalseSupported voice models: Akool Multilingual 1, getVoiceModelName. The text that came before the text of the current request. Can be used to improve the speech’s continuity when concatenating together multiple generations or to influence the speech’s continuity in the current generation.
- next_textStringfalseSupported voice models: Akool Multilingual 1, getVoiceModelName. The text that comes after the text of the current request. Can be used to improve the speech’s continuity when concatenating together multiple generations or to influence the speech’s continuity in the current generation.
- apply_text_normalizationStringfalseSupported voice models: Akool Multilingual 1, getVoiceModelName. This parameter controls text normalization with three modes: ‘auto’, ‘on’, and ‘off’. When set to ‘auto’, the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With ‘on’, text normalization will always be applied, while with ‘off’, it will be skipped.
- apply_language_text_normalizationBooleanfalsefalseSupported voice models: Akool Multilingual 1, getVoiceModelName. This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- latex_readBooleanfalsefalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Controls whether to read LaTeX formulas, defaults to false. Note: 1. Formulas in the request must be enclosed with $$ 2. Backslashes () in formulas must be escaped as \
- text_normalizationBooleanfalsefalseSupported voice models: Akool Multilingual 3, getVoiceModelName. This parameter supports Chinese and English text normalization, improving performance in number reading scenarios but slightly increasing latency. Defaults to false if not provided.
- audio_settingObjectfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Audio generation parameter settings
— sample_rateIntegerfalse32000Supported voice models: Akool Multilingual 3, getVoiceModelName. Audio sampling rate. Available range [8000, 16000, 22050, 24000, 32000, 44100], defaults to 32000
— bitrateIntegerfalse128000Supported voice models: Akool Multilingual 3, getVoiceModelName. Audio bitrate. Available range [32000, 64000, 128000, 256000], defaults to 128000. This parameter only affects mp3 format audio
— formatStringfalsemp3Supported voice models: Akool Multilingual 3, getVoiceModelName. Audio format. Available options [mp3, wav], defaults to mp3. WAV format is only supported in non-streaming output
— channelIntegerfalse1Supported voice models: Akool Multilingual 3, getVoiceModelName. Number of audio channels. Available options: [1,2], where 1 is mono and 2 is stereo, defaults to 1
- timber_weightsArrayfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. List of mixed timbres, supporting up to 4 voice timbres. The higher the weight of a single timbre, the more similar the synthesized voice will be to that timbre. If both timber_weights and voice_id fields have values, timber_weights will not take effect.
— voice_idStringRequired within timber_weights parameterSupported voice models: Akool Multilingual 3, getVoiceModelName. Voice timbre ID, must be filled in together with the weight parameter. Get this voice_id from your cloned voices or akool voice list.getVoiceId
— weightIntegerRequired within timber_weights parameterSupported voice models: Akool Multilingual 3, getVoiceModelName. Weight of each voice timbre, must be filled in together with voice_id. Available range [1, 100], the higher the weight, the more similar the synthesized voice will be to that timbre
- pronunciation_dictObjectfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Pronunciation rules
— toneArrayfalse[“燕少飞/(yan4)(shao3)(fei1)”, “omg/oh my god”]Supported voice models: Akool Multilingual 3, getVoiceModelName. Define special pronunciation rules for characters or symbols. For Chinese text, tones are represented by numbers: 1 for first tone, 2 for second tone, 3 for third tone, 4 for fourth tone, 5 for neutral tone
- voice_modifyObjectfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Voice parameter adjustments
— pitchIntegerfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Pitch adjustment (deep/bright), range [-100,100]. Values closer to -100 make the voice deeper; closer to 100 make it brighter
— intensityIntegerfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Intensity adjustment (powerful/soft), range [-100,100]. Values closer to -100 make the voice more powerful; closer to 100 make it softer
— timbreIntegerfalseTimbre adjustment (resonant/crisp), range [-100,100]. Values closer to -100 make the voice more resonant; closer to 100 make it crisper
— sound_effectsStringfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Sound effects settings, only one can be selected at a time. Available options: spacious_echo (spacious echo), auditorium_echo (auditorium broadcast), lofi_telephone (telephone distortion), robotic (electronic voice)
- subtitle_enableBooleanfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Controls whether to enable subtitle service, defaults to false. This parameter is only effective in non-streaming output scenarios
- pitchIntegerfalseSupported voice models: Akool Multilingual 3, getVoiceModelName. Voice pitch, range [-12, 12], where 0 outputs the original timbre. Value must be an integer.
Response Attributes
ParameterTypeValueDescription
- codeInteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- create_timeLong

1751350015709

Creation timestamp
- uidInteger

101400

User ID
- team_idString

”6805fb69e92d9edc7ca0b409”

Team ID
- input_textString

”Welcome to the Akool…”

Input text content
- previewString

null

Generated audio URL, this value will be updated after task completion, you can view it in the resourceList. getResourceList
- statusInteger

1

TTS status: 【1:queueing, 2:processing, 3:completed, 4:failed】
- webhookUrlString

""

Callback URL
- durationInteger

0

Audio duration in milliseconds
- file_nameString

”1ef1d76ebfc244f7a30430f7049d6ebc.mp3”

Generated file name
- genderString

”Male”

Voice gender
- deduction_creditFloat

1.9295

Deducted credits
- nameString

”27fec311afd743aa889a057e17e93c13”

Generated name
- _idString

”68637aff41e5eb74bb8dfe73”

Document ID
- voice_model_idString

”686379d641e5eb74bb8dfe3f”

Voice document ID
- voice_idString

”Tq06jbVyFH4l6R-Gjvo_V-p_nVYk5DRrYJZsxeDmlhEtyhcFKKLQODmgngI9llKw”

Voice ID
- voice_optionsObjectVoice options object
- stabilityNumber

0.7

Voice stability setting
- similarity_boostNumber

0.5

Similarity boost setting
- styleNumber

0.6

Voice style setting
- speedNumber

0.8

Speech speed setting
- speaker_boostBoolean

false

Speaker boost setting
- emotionString

”happy”

Emotion setting
- volumeInteger

50

Volume setting

Example

Body
{
    "input_text": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
    "voice_id": "6889b628662160e2caad5dbc",
    "voice_options": {
        "stability": 0.6,
        "similarity_boost": 0.8,
        "style": 1,
        "speed": 1.0,
        "speaker_boost": true,
        "emotion": "happy",
        "volume": 80
    },
    "pitch": -5,
    "webhookUrl": "",
    "language_code": "zh",
    "extra_options": {
        "previous_text": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
        "next_text": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
        "apply_text_normalization": "auto",
        "apply_language_text_normalization": true,
        "latex_read": true,
        "text_normalization": true,
        "audio_setting": {
            "sample_rate": 24000,
            "bitrate": 32000,
            "format": "mp3",
            "channel": 2
        },
        "timber_weights": [
            {
                "voice_id": "6889b7f4662160e2caad60e9",
                "weight": 80
            },
            {
                "voice_id": "6889b7f3662160e2caad60e8",
                "weight": 60
            },
            {
                "voice_id": "6889b7f3662160e2caad60e7",
                "weight": 30
            },
            {
                "voice_id": "6889b7f2662160e2caad60e6",
                "weight": 10
            }
        ],
        "pronunciation_dict": {
            "tone" : [
                    "雍容/(yong3)(neng4)",
                    "牡丹/(mu4)(dan3)"
                ]
        },
        "voice_modify": {
            "pitch": 50,
            "intensity": 30,
            "timbre": -50,
            "sound_effects": "robotic"
        },
        "subtitle_enable": true
    }
}
Request
curl --location 'https://openapi.akool.com/api/open/v4/voice/tts' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
    "input_text": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
    "voice_id": "6889b628662160e2caad5dbc",
    "voice_options": {
        "stability": 0.6,
        "similarity_boost": 0.8,
        "style": 1,
        "speed": 1.0,
        "speaker_boost": true,
        "emotion": "happy",
        "volume": 80
    },
    "pitch": -5,
    "webhookUrl": "",
    "language_code": "zh",
    "extra_options": {
        "previous_text": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
        "next_text": "暮春时节,牡丹园内千层叠瓣的姚黄魏紫次第苏醒。晨露未晞时,花瓣边缘凝着水晶般的珠光,内里丝绸质地的绛红由浅及深晕染开来,如同将晚霞裁作衣裳。风过处,花浪翻涌,金蕊颤动间暗香浮动,引得蜂蝶在花心盘旋出金色的漩涡。最是那株绿牡丹,初绽时青玉雕琢似的瓣尖泛着月白,待全盛时竟如翡翠盏中盛着冰酿,教人疑心是王母瑶池遗落的仙品。偶有花瓣飘落,便成了绣毯上滚动的玛瑙珠,连泥土都浸染了雍容的芬芳。这般倾国之色,难怪刘禹锡咏道唯有牡丹真国色,花开时节动京城——它用整季的绚烂,诠释了何为花中魁首的盛大气象。",
        "apply_text_normalization": "auto",
        "apply_language_text_normalization": true,
        "latex_read": true,
        "text_normalization": true,
        "audio_setting": {
            "sample_rate": 24000,
            "bitrate": 32000,
            "format": "mp3",
            "channel": 2
        },
        "timber_weights": [
            {
                "voice_id": "6889b7f4662160e2caad60e9",
                "weight": 80
            },
            {
                "voice_id": "6889b7f3662160e2caad60e8",
                "weight": 60
            },
            {
                "voice_id": "6889b7f3662160e2caad60e7",
                "weight": 30
            },
            {
                "voice_id": "6889b7f2662160e2caad60e6",
                "weight": 10
            }
        ],
        "pronunciation_dict": {
            "tone" : [
                    "雍容/(yong3)(neng4)",
                    "牡丹/(mu4)(dan3)"
                ]
        },
        "voice_modify": {
            "pitch": 50,
            "intensity": 30,
            "timbre": -50,
            "sound_effects": "robotic"
        },
        "subtitle_enable": true
    }
}'
Response
{
    "code": 1000,
    "msg": "OK",
    "data": {
        "create_time": 1751350015709,
        "uid": 101400,
        "team_id": "6805fb69e92d9edc7ca0b409",
        "input_text": "Welcome to the Akool generative AI content creation tool.",
        "preview": null,
        "status": 1,
        "webhookUrl": "",
        "duration": 0,
        "file_name": "1ef1d76ebfc244f7a30430f7049d6ebc.mp3",
        "gender": "Male",
        "deduction_credit": 1.9295,
        "name": "27fec311afd743aa889a057e17e93c13",
        "_id": "68637aff41e5eb74bb8dfe73",
        "voice_model_id": "686379d641e5eb74bb8dfe3f",
        "voice_id": "Tq06jbVyFH4l6R-Gjvo_V-p_nVYk5DRrYJZsxeDmlhEtyhcFKKLQODmgngI9llKw",
        "voice_options": {
            "stability": 0.7,
            "similarity_boost": 0.5,
            "style": 0.6,
            "speed": 0.8,
            "speaker_boost": false,
            "emotion": "happy",
            "volume": 50
        }
    }
}

Create Voice Changer

Only the Akool Multilingual 1 model supports Voice Change.
POST https://openapi.akool.com/api/open/v4/voice/change
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization. getToken
Body Attributes
ParameterTypeRequiredValueDescription
voice_idStringtrueVoice ID, get this voice_id from your cloned voices or akool voice list. getVoiceId
source_voice_fileStringtrueAudio file URL, supports mp3, mp4, wav, etc. Must be a public accessible URL, The maximum file size is 50MB.
voice_optionsObjectfalseAudio settings
- stabilityNumberfalseVoice stability (0-1) , Supported voice models: Akool Multilingual 1, getVoiceModelName
- similarity_boostNumberfalseSimilarity boost (0-1) , Supported voice models: Akool Multilingual 1, getVoiceModelName
- styleNumberfalseVoice style (0-1) , Supported voice models: Akool Multilingual 1, Akool Multilingual 2. Style examples: cheerful, getVoiceModelName
- speaker_boostBooleanfalseSpeaker boost, Supported voice models: Akool Multilingual 1, getVoiceModelName
- file_formatStringfalsemp3File format, supports mp3 and wav formats.
- remove_background_noiseBooleanfalsefalseRemove background noise, disabled by default
- speedNumberfalse1Controls the speed of generated audio, default value is 1, available range [0.7, 1.2].
webhookUrlStringfalseCallback url address based on HTTP request
voice_model_nameStringfalseThe designated model for Clone, Supported voice models: Akool Multilingual 1. getVoiceModelName
Response Attributes
ParameterTypeValueDescription
- codeInteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- create_timeLong

1751350363707

Creation timestamp
- uidInteger

101400

User ID
- team_idString

”6805fb69e92d9edc7ca0b409”

Team ID
- previewString

null

Generated audio URL, this value will be updated after task completion, you can view it in the resourceList. getResourceList
- source_voice_fileStringhttps://drz0f01yeq1cx.cloudfront.net/1749098405491-5858-1749019840512audio.mp3Original audio file URL
- statusInteger

1

Voice changer status: 【1:queueing, 2:processing, 3:completed, 4:failed】
- webhookUrlString

""

Callback URL
- durationInteger

12800

Audio duration in milliseconds
- file_nameString

”1749098405491-5858-1749019840512audio.mp3”

Generated file name
- genderString

”Female”

Voice gender
- deduction_creditFloat

0.512

Deducted credits
- nameString

”3f591fc370c542fca9087f124b5ad82b”

Generated name
- _idString

”68637c5b41e5eb74bb8dfec6”

Document ID
- voice_model_idString

”67a45479354b7c1fff7e943a”

Voice document ID
- voice_idString

”hkfHEbBvdQFNX4uWHqRF”

Voice ID
- voice_optionsObjectVoice options object
- stabilityNumber

0.7

Voice stability setting
- similarity_boostNumber

0.5

Similarity boost setting
- styleNumber

0.6

Voice style setting
- speaker_boostBoolean

false

Speaker boost setting

Example

Body
{
    "voice_id": "6889b628662160e2caad5dbc",
    "source_voice_file": "https://drz0f01yeq1cx.cloudfront.net/1749098405491-5858-1749019840512audio.mp3",
    "voice_options": {
        "stability": 0.9,
        "similarity_boost": 0.7,
        "style": 1,
        "speaker_boost": false,
        "remove_background_noise": true,
        "speed": 1,
        "file_format": "mp3"
    },
    "voice_model_name": "Akool Multilingual 1",
    "webhookUrl": ""
}
Request
curl --location 'https://openapi.akool.com/api/open/v4/voice/change' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
    "voice_id": "6889b628662160e2caad5dbc",
    "source_voice_file": "https://drz0f01yeq1cx.cloudfront.net/1749098405491-5858-1749019840512audio.mp3",
    "voice_options": {
        "stability": 0.9,
        "similarity_boost": 0.7,
        "style": 1,
        "speaker_boost": false,
        "remove_background_noise": true,
        "speed": 1,
        "file_format": "mp3"
    },
    "voice_model_name": "Akool Multilingual 1",
    "webhookUrl": ""
}'
Response
{
  "code": 1000,
  "msg": "OK",
  "data": {
    "create_time": 1751350363707,
    "uid": 101400,
    "team_id": "6805fb69e92d9edc7ca0b409",
    "source_voice_file": "https://drz0f01yeq1cx.cloudfront.net/1749098405491-5858-1749019840512audio.mp3",
    "preview": null,
    "status": 1,
    "webhookUrl": "",
    "duration": 12800,
    "file_name": "1749098405491-5858-1749019840512audio.mp3",
    "gender": "Female",
    "deduction_credit": 0.512,
    "name": "3f591fc370c542fca9087f124b5ad82b",
    "_id": "68637c5b41e5eb74bb8dfec6",
    "voice_model_id": "67a45479354b7c1fff7e943a",
    "voice_id": "hkfHEbBvdQFNX4uWHqRF",
    "voice_options": {
      "stability": 0.7,
      "similarity_boost": 0.5,
      "style": 0.6,
      "speaker_boost": false
    }
  }
}

Get Voice Results List

GET https://openapi.akool.com/api/open/v4/voice/resource/list
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization. getToken
Query Attributes
ParameterTypeRequiredValueDescription
typeStringtrue1,21-voiceTTS, 2-voiceChanger
pageStringfalse1Page number
sizeStringfalse10Page size
Response Attributes
ParameterTypeValueDescription
- codeInteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- resultArrayVoice resource list
- _idString

”68637c5b41e5eb74bb8dfec6”

Document ID
- create_timeLong

1751350363707

Creation timestamp
- update_timeLong

1751350368468

Update timestamp
- uidInteger

101400

User ID
- team_idString

”6805fb69e92d9edc7ca0b409”

Team ID
- rateString

”100%“

Processing rate
- previewStringhttps://drz0f01yeq1cx.cloudfront.net/…”Generated audio URL
- statusInteger

3

Status: 【1:queueing, 2:processing, 3:completed, 4:failed】
- webhookUrlString

""

Callback URL
- durationInteger

12852

Audio duration in milliseconds
- file_nameString

”1749098405491-5858-1749019840512audio.mp3”

File name
- genderString

”Female”

Voice gender
- deduction_creditFloat

0.9295

Deducted credits
- nameString

”3f591fc370c542fca9087f124b5ad82b”

Resource name
- input_textString

”Słyszę, że chcesz leżeć płasko? Gratulacje — przynajmniej zrozumiałeś grawitację! “

Text to Speech trial listening text
- __vInteger

0

Version number
- countInteger

1

Total count of resources
- pageInteger

1

Current page number
- sizeInteger

10

Page size

Example

Request
curl --location 'https://openapi.akool.com/api/open/v4/voice/resource/list?type=1&page=1&size=10' \
--header 'Authorization: Bearer {{token}}'
Response
{
    "code": 1000,
    "msg": "OK",
    "data": {
        "result": [
            {
                "_id": "68637c5b41e5eb74bb8dfec6",
                "create_time": 1751350363707,
                "update_time": 1751350368468,
                "uid": 101400,
                "team_id": "6805fb69e92d9edc7ca0b409",
                "rate": "100%",
                "preview": "https://drz0f01yeq1cx.cloudfront.net/1751350368172-audio.mp3",
                "status": 3,
                "webhookUrl": "",
                "duration": 12852,
                "file_name": "1749098405491-5858-1749019840512audio.mp3",
                "gender": "Female",
                "deduction_credit": 0.9295,
                "name": "3f591fc370c542fca9087f124b5ad82b",
                "input_text": "Słyszę, że chcesz leżeć płasko? Gratulacje — przynajmniej zrozumiałeś grawitację! ",
                "__v": 0
            }
        ],
        "count": 1,
        "page": 1,
        "size": 10
    }
}

Get Voice List

GET https://openapi.akool.com/api/open/v4/voice/list
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization. getToken
Query Attributes
ParameterTypeRequiredValueDescription
typeStringtrue

1,2

1-VoiceClone, 2-Akool Voices
pageStringfalse

1

Page number
sizeStringfalse

10

Page size
styleStringfalse

Calm,Authoritative

Voice style filters, separated by commas
genderStringfalse

Male,Female

Gender filters, separated by commas
ageStringfalse

Young,Middle,Elderly

Age filters, separated by commas
scenarioStringfalse

Advertisement,Education

Scenario filters, separated by commas
nameStringfalse

MyVoice

Voice name, supports fuzzy search
support_streamIntegerfalse

1

2-Voice does not support streaming.; 1-Voice supports streaming.
Response Attributes
ParameterTypeValueDescription
- codeInteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- resultArrayVoice list
- _idString

”68676e544439e3b8e246a077”

Document ID
- uidInteger

101400

User ID
- team_idString

”6805fb69e92d9edc7ca0b409”

Team ID
- voice_idString

”zQAGCFElz23u6Brdj4L-NrbEmSxswXdoPN_GBpYgUPHo1EGWgZgAnFJexONx_jGy”

Voice ID
- genderString

”Male”

Voice gender
- languageString

”Polish”

Voice language
- localeString

”pl”

Voice locale
- nameString

”MyVoice0626-01”

Voice name
- previewString

https://d2qf6ukcym4kn9.cloudfront.net/…”

Preview audio URL
- textString

”This is a comic style model…”

Preview text content
- durationInteger

9822

Audio duration in milliseconds
- statusInteger

3

Voice status: 【1:queueing, 2:processing, 3:completed, 4:failed】
- create_timeLong

1751608916162

Creation timestamp
- update_timeLong

1751608916162

Update timestamp
- styleArray

[“Authoritative”, “Calm”]

Voice style tags
- scenarioArray

[“Advertisement”]

Scenario tags
- ageArray

[“Elderly”, “Middle”]

Age tags
- deduction_creditInteger

0

Deducted credits
- webhookUrlString

""

Callback URL
- voice_model_nameString

”Akool Multilingual 3”

Supported voice model name
- support_streamBoolean

true

Supported stream: true/false, Akool Multilingual 1 & Akool Multilingual 3 only support stream.
- countInteger

9

Total count of voices
- pageInteger

1

Current page number
- sizeInteger

1

Page size

Example

Request
curl --location 'https://openapi.akool.com/api/open/v4/voice/list?type=1&page=1&size=10&style=Calm,Authoritative&gender=Male&name=MyVoice' \
--header 'Authorization: Bearer {{token}}'
Response
{
    "code": 1000,
    "msg": "OK",
    "data": {
        "result": [
            {
                "_id": "68676e544439e3b8e246a077",
                "uid": 101400,
                "team_id": "6805fb69e92d9edc7ca0b409",
                "voice_id": "zQAGCFElz23u6Brdj4L-NrbEmSxswXdoPN_GBpYgUPHo1EGWgZgAnFJexONx_jGy",
                "gender": "Male",
                "language": "Polish",
                "locale": "pl",
                "name": "MyVoice0626-01",
                "preview": "https://d2qf6ukcym4kn9.cloudfront.net/1751608955706-c1cf1692-fd47-417c-b18a-dcbbb93360fa-2756.mp3",
                "text": "This is a comic style model, this is a comic style model, this is a comic style model, this is a comic style model",
                "duration": 9822,
                "status": 3,
                "create_time": 1751608916162,
                "style": [
                    "Authoritative",
                    "Calm"
                ],
                "scenario": [
                    "Advertisement"
                ],
                "age": [
                    "Elderly",
                    "Middle"
                ],
                "deduction_credit": 0,
                "webhookUrl": "",
                "voice_model_name": "Akool Multilingual 3",
                "support_stream": true
            }
        ],
        "count": 9,
        "page": 1,
        "size": 1
    }
}

Delete Voice

POST https://openapi.akool.com/api/open/v4/voice/del
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization.getToken
Body Attributes
ParameterTypeRequiredValueDescription
_idsArraytrueVoice list document IDs getVoiceDocumentId
Response Attributes
ParameterTypeValueDescription
- codeinteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- successIdsArrayDeleted voice document IDs
- noPermissionVoicesArrayDelete failed voice document msg list
- _idString

6881cd86618fa41c89557b0c

Delete failed voice document ID
- msgString

VoiceId:6881cd86618fa41c89557b0c resource not found

Delete failed voice error msg

Example

Body
{
    "_ids": [
        "6836b8183a59f36196bb9c52",
        "6836ba935026505ab7a529ce"
    ]
}
Request
curl --location --request DELETE 'https://openapi.akool.com/api/open/v4/voice/del' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
    "_ids": [
        "6836b8183a59f36196bb9c52",
        "6836ba935026505ab7a529ce"
    ]
}'
Response
{
    "code": 1000,
    "msg": "Delete voice successfully",
    "data": {
        "successIds": [
            "6882f4c10529ae771e71531d"
        ],
        "noPermissionVoices": [
            {
                "_id": "6881cd86618fa41c89557b0c",
                "msg": "VoiceId:6881cd86618fa41c89557b0c resource not found"
            }
        ]
    }
}

Get Voice Detail

GET https://openapi.akool.com/api/open/v4/voice/detail/{_id}
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization.getToken
Path Attributes
ParameterTypeRequiredValueDescription
_idStringtrueVoice list document IDs getVoiceDocumentId
Response Attributes
ParameterTypeValueDescription
- codeInteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- _idString

”6836bafb5026505ab7a529fa”

Document ID
- uidInteger

101400

User ID
- team_idString

”6805fb69e92d9edc7ca0b409”

Team ID
- voice_idString

”yRBw4OM8YFm5pCNKxJQ7”

Voice ID
- genderString

”Male”

Voice gender
- nameString

”Snow Peak 01”

Voice name
- previewStringhttps://drz0f01yeq1cx.cloudfront.net/…”Preview audio URL
- textString”Hello, I’m your personalized AI voice…”Preview text content
- durationInteger

7055

Audio duration in milliseconds
- statusInteger

3

Voice status: 【1:queueing, 2:processing, 3:completed, 4:failed】
- create_timeLong

1748417275493

Creation timestamp
- styleArray

[“Authoritative”, “Calm”]

Voice style tags
- scenarioArray

[“Advertisement”]

Scenario tags
- ageArray

[“Elderly”, “Middle”]

Age tags
- deduction_creditInteger

0

Deducted credits
- voice_model_nameString

”Akool Multilingual 1”

Supported voice model name
- support_streamBoolean

true

Supported stream: true/false, Akool Multilingual 1 & Akool Multilingual 3 only support stream.
- languageString

”Chinese”

Voice language
- localeString

”zh”

Voice locale
- update_timeLong

1751608916162

Update timestamp

Example

Request
curl --location 'https://openapi.akool.com/api/open/v4/voice/detail/6836bafb5026505ab7a529fa' \
--header 'Authorization: Bearer {{token}}'
Response
{
    "code": 1000,
    "msg": "OK",
    "data": {
        "_id": "6882f23c0529ae771e7152dc",
        "uid": 101400,
        "team_id": "6805fb69e92d9edc7ca0b409",
        "voice_id": "kfr_1wGPuauzcSOZgpBGLd_ApviIHqMIZ5bS2OeMiMkvId0eAMkq1ii8rvInZ2pE",
        "gender": "Male",
        "name": "zhongwen-072501",
        "preview": "https://drz0f01yeq1cx.cloudfront.net/1753412190380-sample.mp3",
        "text": "人生就像登山,重要的不是顶峰的高度,而是攀登时的姿态。当你觉得脚步沉重时,请记住:竹子用四年时间仅生长3厘米,但从第五年开始,每天以30厘米的速度疯长。那些看似微不足道的积累,终将在某个转角绽放光芒。前路或许泥泞,但每个坚持的脚印都在书写传奇;黑夜也许漫长,但晨光总在咬牙坚持后准时降临。正如海明威所说:人可以被毁灭,但不能被打败。2025年的今天,愿你把挫折当作垫脚石,让汗水成为勋章,因为这个世界永远奖励那些在跌倒后依然选择起身奔跑的人。",
        "duration": 55353,
        "status": 3,
        "create_time": 1753412156588,
        "style": [
            "Authoritative",
            "Calm"
        ],
        "scenario": [
            "Advertisenment"
        ],
        "age": [
            "Elderly",
            "Middle"
        ],
        "deduction_credit": 0,
        "webhookUrl": "",
        "language": "Chinese",
        "locale": "zh",
        "voice_model_name": "Akool Multilingual 3",
        "support_stream": true
    }
}

Get Voice Result Detail

GET https://openapi.akool.com/api/open/v4/voice/resource/detail/{_id}
Request Headers
ParameterValueDescription
AuthorizationBearer {token}Your API Key used for request authorization.getToken
Path Attributes
ParameterTypeRequiredValueDescription
_idStringtrueVoice result document ID getVoiceResultId
Response Attributes
ParameterTypeValueDescription
- codeInteger

1000

API returns status code(1000:success)
- msgStringAPI returns status message
- dataObjectResponse data object
- resultObjectVoice result object
- _idString

”688afbd9d2b4b269d1123ffb”

Document ID
- create_timeLong

1753938905005

Creation timestamp
- update_timeLong

0

Update timestamp
- uidInteger

101400

User ID
- team_idString

”6805fb69e92d9edc7ca0b409”

Team ID
- input_textString”Życie jak wspinaczka górska…”Input text content
- rateString

”100%“

Processing rate
- statusInteger

1

Status: 【1:queueing, 2:processing, 3:completed, 4:failed】
- webhookUrlString

""

Callback URL
- durationInteger

0

Audio duration in milliseconds
- file_nameString

”1753938905005.mp3”

File name
- genderString

”Male”

Voice gender
- deduction_creditFloat

0.5148

Deducted credits
- nameString

”26ca668a9eb448b7b9a3806fa86207f3”

Resource name
- priorityInteger

2

Priority level
- language_codeString

”pt”

Language code
- __vInteger

0

Version number
- previewString

null

Preview audio URL

Example

Request
curl --location 'https://openapi.akool.com/api/open/v4/voice/resource/detail/688afbd9d2b4b269d1123ffb' \
--header 'Authorization: Bearer {{token}}'
Response
{
    "code": 1000,
    "msg": "OK",
    "data": {
        "result": {
            "_id": "688afbd9d2b4b269d1123ffb",
            "create_time": 1753938905005,
            "update_time": 0,
            "uid": 101400,
            "team_id": "6805fb69e92d9edc7ca0b409",
            "input_text": "Życie jak wspinaczka górska: ważniejsza od wysokości szczytu jest postawa, z jaką się wspinasz. Gdy czujesz, że stopy",
            "rate": "100%",
            "status": 1,
            "webhookUrl": "",
            "duration": 0,
            "file_name": "1753938905005.mp3",
            "gender": "Male",
            "deduction_credit": 0.5148,
            "name": "26ca668a9eb448b7b9a3806fa86207f3",
            "priority": 2,
            "language_code": "pt",
            "__v": 0,
            "preview": null
        }
    }
}
I