curl --request POST \
--url https://api.deapi.ai/api/v1/client/txt2audio \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'text=A beautiful sunset over mountains' \
--form model=Kokoro \
--form lang=en-us \
--form speed=1 \
--form format=mp3 \
--form sample_rate=24000 \
--form mode=custom_voice \
--form voice=af_sky \
--form 'ref_audio=<string>' \
--form 'ref_text=<string>' \
--form 'instruct=<string>' \
--form webhook_url=https://your-server.com/webhooks/deapi \
--form ref_audio.0='@example-file' \
--form ref_audio.1='@example-file'import requests
url = "https://api.deapi.ai/api/v1/client/txt2audio"
files = {
"ref_audio.0": ("example-file", open("example-file", "rb")),
"ref_audio.1": ("example-file", open("example-file", "rb"))
}
payload = {
"text": "A beautiful sunset over mountains",
"model": "Kokoro",
"lang": "en-us",
"speed": "1",
"format": "mp3",
"sample_rate": "24000",
"mode": "custom_voice",
"voice": "af_sky",
"ref_audio": "<string>",
"ref_text": "<string>",
"instruct": "<string>",
"webhook_url": "https://your-server.com/webhooks/deapi"
}
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('text', 'A beautiful sunset over mountains');
form.append('model', 'Kokoro');
form.append('lang', 'en-us');
form.append('speed', '1');
form.append('format', 'mp3');
form.append('sample_rate', '24000');
form.append('mode', 'custom_voice');
form.append('voice', 'af_sky');
form.append('ref_audio', '<string>');
form.append('ref_text', '<string>');
form.append('instruct', '<string>');
form.append('webhook_url', 'https://your-server.com/webhooks/deapi');
form.append('ref_audio.0', '{
"fileName": "example-file"
}');
form.append('ref_audio.1', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Accept: '<accept>', Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.deapi.ai/api/v1/client/txt2audio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deapi.ai/api/v1/client/txt2audio",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.deapi.ai/api/v1/client/txt2audio"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Authorization", "Bearer <token>")
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.deapi.ai/api/v1/client/txt2audio")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/txt2audio")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = '<accept>'
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"request_id": "c08a339c-73e5-4d67-a4d5-231302fbff9a"
}
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"message": "The selected model does not support Text To Image.",
"errors": {
"model": [
"The selected model does not support Text To Image."
]
}
}{
"message": "Too Many Attempts."
}Text-to-Speech (TTS)
Endpoint for requesting text2audio inference
curl --request POST \
--url https://api.deapi.ai/api/v1/client/txt2audio \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'text=A beautiful sunset over mountains' \
--form model=Kokoro \
--form lang=en-us \
--form speed=1 \
--form format=mp3 \
--form sample_rate=24000 \
--form mode=custom_voice \
--form voice=af_sky \
--form 'ref_audio=<string>' \
--form 'ref_text=<string>' \
--form 'instruct=<string>' \
--form webhook_url=https://your-server.com/webhooks/deapi \
--form ref_audio.0='@example-file' \
--form ref_audio.1='@example-file'import requests
url = "https://api.deapi.ai/api/v1/client/txt2audio"
files = {
"ref_audio.0": ("example-file", open("example-file", "rb")),
"ref_audio.1": ("example-file", open("example-file", "rb"))
}
payload = {
"text": "A beautiful sunset over mountains",
"model": "Kokoro",
"lang": "en-us",
"speed": "1",
"format": "mp3",
"sample_rate": "24000",
"mode": "custom_voice",
"voice": "af_sky",
"ref_audio": "<string>",
"ref_text": "<string>",
"instruct": "<string>",
"webhook_url": "https://your-server.com/webhooks/deapi"
}
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('text', 'A beautiful sunset over mountains');
form.append('model', 'Kokoro');
form.append('lang', 'en-us');
form.append('speed', '1');
form.append('format', 'mp3');
form.append('sample_rate', '24000');
form.append('mode', 'custom_voice');
form.append('voice', 'af_sky');
form.append('ref_audio', '<string>');
form.append('ref_text', '<string>');
form.append('instruct', '<string>');
form.append('webhook_url', 'https://your-server.com/webhooks/deapi');
form.append('ref_audio.0', '{
"fileName": "example-file"
}');
form.append('ref_audio.1', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Accept: '<accept>', Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.deapi.ai/api/v1/client/txt2audio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deapi.ai/api/v1/client/txt2audio",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.deapi.ai/api/v1/client/txt2audio"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Authorization", "Bearer <token>")
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.deapi.ai/api/v1/client/txt2audio")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/txt2audio")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = '<accept>'
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nA beautiful sunset over mountains\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nKokoro\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nen-us\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"speed\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\nmp3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sample_rate\"\r\n\r\n24000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncustom_voice\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"voice\"\r\n\r\naf_sky\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_text\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"instruct\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttps://your-server.com/webhooks/deapi\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.0\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ref_audio.1\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"request_id": "c08a339c-73e5-4d67-a4d5-231302fbff9a"
}
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"message": "The selected model does not support Text To Image.",
"errors": {
"model": [
"The selected model does not support Text To Image."
]
}
}{
"message": "Too Many Attempts."
}mode parameter:
custom_voice(default) — Use a preset voice from the model’s voice library. Requires thevoiceparameter.voice_clone— Clone a voice from a short reference audio clip. Requires theref_audioparameter (3–10 seconds, max 15 MB). Optionally provideref_textwith a transcript of the reference audio for improved accuracy.voice_design— Create a new voice from a natural language description. Requires theinstructparameter (e.g."A warm female voice with a British accent").
slug, check specific limits and features, and verify available languages and voices.custom_voice—voiceis required.voice_clone—ref_audiois required.ref_textis optional but recommended.voice_design—instructis required.
mode is omitted, the API defaults to custom_voice.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
application/json Body
Audio generation parameters. Supports three TTS modes: custom_voice (default, preset speakers), voice_clone (clone from reference audio), voice_design (create voice from description).
Text to be converted to speech
"A beautiful sunset over mountains"
The model to use for speech generation. Available models can be retrieved via the GET /api/v1/client/models endpoint.
"Kokoro"
Language to be used during audio generation
"en-us"
Generated audio speech speed
1
Audio output format
"mp3"
Sample rate of generated audio
24000
TTS mode: custom_voice (default), voice_clone, or voice_design. Determines which fields are required.
custom_voice, voice_clone, voice_design "custom_voice"
Name of the voice to be used. Required for custom_voice mode.
"af_sky"
Reference audio file for voice cloning. Supported formats: mp3, ogg, m4a. Max 15MB. Duration must be between 3-10 seconds (model-specific limits may apply). Required for voice_clone mode.
Optional transcript of the reference audio for improved voice cloning accuracy.
Natural language voice description for voice_design mode (e.g. "A warm female voice with a British accent"), or style/emotion control in custom_voice mode.
Optional HTTPS URL to receive webhook notifications for job status changes (processing, completed, failed). Must be HTTPS. Max 2048 characters. See Webhook Documentation for payload structure and authentication details.
2048"https://your-server.com/webhooks/deapi"
Response
ID of the inference request.
Information from success endpoint
Show child attributes
Show child attributes
Was this page helpful?