curl --request POST \
--url https://api.modellix.ai/api/v1/alibaba/cosyvoice-design \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'cosyvoice-v3.5-plus',
voice_prompt: 'Calm male announcer with a deep tone',
text: 'Hello, welcome to Modellix. Today we will introduce our products.'
})
};
fetch('https://api.modellix.ai/api/v1/alibaba/cosyvoice-design', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design"
payload = {
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design"
payload := strings.NewReader("{\n \"model\": \"cosyvoice-v3.5-plus\",\n \"voice_prompt\": \"Calm male announcer with a deep tone\",\n \"text\": \"Hello, welcome to Modellix. Today we will introduce our products.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.modellix.ai/api/v1/alibaba/cosyvoice-design")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"cosyvoice-v3.5-plus\",\n \"voice_prompt\": \"Calm male announcer with a deep tone\",\n \"text\": \"Hello, welcome to Modellix. Today we will introduce our products.\"\n}")
.asString();const url = 'https://api.modellix.ai/api/v1/alibaba/cosyvoice-design';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'cosyvoice-v3.5-plus',
voice_prompt: 'Calm male announcer with a deep tone',
text: 'Hello, welcome to Modellix. Today we will introduce our products.'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'cosyvoice-v3.5-plus',
'voice_prompt' => 'Calm male announcer with a deep tone',
'text' => 'Hello, welcome to Modellix. Today we will introduce our products.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.modellix.ai/api/v1/alibaba/cosyvoice-design")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"cosyvoice-v3.5-plus\",\n \"voice_prompt\": \"Calm male announcer with a deep tone\",\n \"text\": \"Hello, welcome to Modellix. Today we will introduce our products.\"\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = [
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.modellix.ai/api/v1/alibaba/cosyvoice-design' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
}'{
"code": 0,
"message": "success",
"data": {
"status": "pending",
"task_id": "task-cosyvoice-design-001",
"model_id": "alibaba/cosyvoice-design",
"get_result": {
"method": "GET",
"url": "https://api.modellix.ai/api/v1/tasks/task-cosyvoice-design-001"
}
}
}{
"code": 400,
"message": "Invalid parameters: voice is required for alibaba/cosyvoice-v3-plus"
}{
"code": 401,
"message": "Authentication failed: invalid API key"
}{
"code": 429,
"message": "Rate limit exceeded: 100 requests per minute, retry after 60 seconds"
}{
"code": 500,
"message": "Internal server error"
}CosyVoice Design
[Core Function] CosyVoice Design creates a temporary voice from a natural-language voice_prompt and synthesizes speech in one async request; only the final audio is returned. [Strengths] No voice enrollment management; language_hint (zh/en) applies to both design and synthesis; same prosody and format controls as CosyVoice TTS. [Best For] One-off designed speech without storing enrolled voices. [Limitations] Do NOT use this to obtain a reusable voice library entry; the designed voice is temporary and is not returned. model must be cosyvoice-v3.5-plus or cosyvoice-v3.5-flash; voice_prompt and text are required.
curl --request POST \
--url https://api.modellix.ai/api/v1/alibaba/cosyvoice-design \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'cosyvoice-v3.5-plus',
voice_prompt: 'Calm male announcer with a deep tone',
text: 'Hello, welcome to Modellix. Today we will introduce our products.'
})
};
fetch('https://api.modellix.ai/api/v1/alibaba/cosyvoice-design', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design"
payload = {
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design"
payload := strings.NewReader("{\n \"model\": \"cosyvoice-v3.5-plus\",\n \"voice_prompt\": \"Calm male announcer with a deep tone\",\n \"text\": \"Hello, welcome to Modellix. Today we will introduce our products.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.modellix.ai/api/v1/alibaba/cosyvoice-design")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"cosyvoice-v3.5-plus\",\n \"voice_prompt\": \"Calm male announcer with a deep tone\",\n \"text\": \"Hello, welcome to Modellix. Today we will introduce our products.\"\n}")
.asString();const url = 'https://api.modellix.ai/api/v1/alibaba/cosyvoice-design';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'cosyvoice-v3.5-plus',
voice_prompt: 'Calm male announcer with a deep tone',
text: 'Hello, welcome to Modellix. Today we will introduce our products.'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'cosyvoice-v3.5-plus',
'voice_prompt' => 'Calm male announcer with a deep tone',
'text' => 'Hello, welcome to Modellix. Today we will introduce our products.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.modellix.ai/api/v1/alibaba/cosyvoice-design")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"cosyvoice-v3.5-plus\",\n \"voice_prompt\": \"Calm male announcer with a deep tone\",\n \"text\": \"Hello, welcome to Modellix. Today we will introduce our products.\"\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = [
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.modellix.ai/api/v1/alibaba/cosyvoice-design")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.modellix.ai/api/v1/alibaba/cosyvoice-design' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"model": "cosyvoice-v3.5-plus",
"voice_prompt": "Calm male announcer with a deep tone",
"text": "Hello, welcome to Modellix. Today we will introduce our products."
}'{
"code": 0,
"message": "success",
"data": {
"status": "pending",
"task_id": "task-cosyvoice-design-001",
"model_id": "alibaba/cosyvoice-design",
"get_result": {
"method": "GET",
"url": "https://api.modellix.ai/api/v1/tasks/task-cosyvoice-design-001"
}
}
}{
"code": 400,
"message": "Invalid parameters: voice is required for alibaba/cosyvoice-v3-plus"
}{
"code": 401,
"message": "Authentication failed: invalid API key"
}{
"code": 429,
"message": "Rate limit exceeded: 100 requests per minute, retry after 60 seconds"
}{
"code": 500,
"message": "Internal server error"
}Authorizations
Modellix API Key. Format: Bearer <your_api_key>
Body
One-shot voice design + TTS. Required: model, voice_prompt, text. The designed voice is temporary and is not returned.
Target CosyVoice v3.5 TTS model used for synthesis after voice design.
cosyvoice-v3.5-plus, cosyvoice-v3.5-flash Natural-language voice description (Chinese or English). Required. Max 500 Unicode characters.
1 - 500"Calm male announcer with a deep tone"
Text to synthesize with the temporarily designed voice. Required. Max 20,000 Unicode characters.
1 - 20000"Hello, welcome to Modellix. Today we will introduce our products."
Language hint for both design and synthesis (zh/en only). Default zh.
zh, en "en"
Output audio encoding format. Default mp3.
mp3, pcm, wav, opus "mp3"
Output sample rate in Hz. Default 22050.
8000, 16000, 22050, 24000, 44100, 48000 24000
Output volume. Default 50. Range 0–100.
0 <= x <= 10050
Speech rate multiplier. Default 1.0. Range 0.5–2.0.
0.5 <= x <= 21
Pitch multiplier. Default 1.0. Range 0.5–2.0.
0.5 <= x <= 21
Audio bit rate in kbps. Optional. Range 6–510. Only supported when format is opus.
6 <= x <= 51032
Optional speaking-style instruction. Weighted length ≤100 (CJK ideographs count as 2).
"Speak in a friendly customer-service tone."
Random seed. Default 0. Range 0–65535.
0 <= x <= 655350
Whether to parse text as SSML. Default false.
false
Text hot-fix before synthesis. Same as CosyVoice TTS hot_fix.
{ "replace": [{ "Modellix": "Modelix" }] }
Response
Task submitted successfully. Poll GET /api/v1/tasks/{task_id} until the task completes; synthesized audio is returned on the task result.
Response object for asynchronous task submission.