Text to Speech
curl --request POST \
--url https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"dialogue": [
{}
],
"stability": 123,
"language_code": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
'import requests
url = "https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech"
payload = {
"model": "<string>",
"input": {
"dialogue": [{}],
"stability": 123,
"language_code": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {dialogue: [{}], stability: 123, language_code: '<string>'},
webhookUrl: '<string>',
metadata: {}
})
};
fetch('https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech', 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.modelhunter.ai/api/v1/elevenlabs/text-to-speech",
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' => '<string>',
'input' => [
'dialogue' => [
[
]
],
'stability' => 123,
'language_code' => '<string>'
],
'webhookUrl' => '<string>',
'metadata' => [
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"input\": {\n \"dialogue\": [\n {}\n ],\n \"stability\": 123,\n \"language_code\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\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.modelhunter.ai/api/v1/elevenlabs/text-to-speech")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"input\": {\n \"dialogue\": [\n {}\n ],\n \"stability\": 123,\n \"language_code\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech")
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\": \"<string>\",\n \"input\": {\n \"dialogue\": [\n {}\n ],\n \"stability\": 123,\n \"language_code\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "task_elevenlabs_tts_123",
"status": "pending",
"type": "text-to-speech",
"provider": "elevenlabs",
"model": "elevenlabs/text-to-dialogue-v3",
"created_at": "2026-03-16T10:00:00Z",
"estimated_seconds": 30
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "input.dialogue must contain at least one line"
}
}
ElevenLabs
Text to Speech
Generate expressive multi-speaker dialogue audio using Eleven v3.
POST
/
api
/
v1
/
elevenlabs
/
text-to-speech
Text to Speech
curl --request POST \
--url https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"dialogue": [
{}
],
"stability": 123,
"language_code": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
'import requests
url = "https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech"
payload = {
"model": "<string>",
"input": {
"dialogue": [{}],
"stability": 123,
"language_code": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {dialogue: [{}], stability: 123, language_code: '<string>'},
webhookUrl: '<string>',
metadata: {}
})
};
fetch('https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech', 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.modelhunter.ai/api/v1/elevenlabs/text-to-speech",
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' => '<string>',
'input' => [
'dialogue' => [
[
]
],
'stability' => 123,
'language_code' => '<string>'
],
'webhookUrl' => '<string>',
'metadata' => [
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"input\": {\n \"dialogue\": [\n {}\n ],\n \"stability\": 123,\n \"language_code\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\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.modelhunter.ai/api/v1/elevenlabs/text-to-speech")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"input\": {\n \"dialogue\": [\n {}\n ],\n \"stability\": 123,\n \"language_code\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.modelhunter.ai/api/v1/elevenlabs/text-to-speech")
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\": \"<string>\",\n \"input\": {\n \"dialogue\": [\n {}\n ],\n \"stability\": 123,\n \"language_code\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "task_elevenlabs_tts_123",
"status": "pending",
"type": "text-to-speech",
"provider": "elevenlabs",
"model": "elevenlabs/text-to-dialogue-v3",
"created_at": "2026-03-16T10:00:00Z",
"estimated_seconds": 30
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "input.dialogue must contain at least one line"
}
}
Body Parameters
string
required
ElevenLabs model to use in this phase:
elevenlabs/text-to-dialogue-v3— billed at$0.12per1000input characters across all dialogue lines
object
required
Input parameters for the generation.
Show properties
Show properties
array
required
Ordered dialogue lines. Provide at least one item and at most
5000 total input characters across all lines.Each dialogue item must include:text— Dialogue line text. Inline audio tags such as[whispering]are supported.voice— ElevenLabs voice ID for that line. UseGET /api/v1/elevenlabs/voicesto list available voices.
number
Delivery stability hint. Range:
0 to 1.string
default:"auto"
Language hint for the dialogue. Use
auto to let the model infer the language.string
URL to receive a webhook when the task completes.
object
Custom key-value metadata to attach to the task.
{
"success": true,
"data": {
"id": "task_elevenlabs_tts_123",
"status": "pending",
"type": "text-to-speech",
"provider": "elevenlabs",
"model": "elevenlabs/text-to-dialogue-v3",
"created_at": "2026-03-16T10:00:00Z",
"estimated_seconds": 30
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "input.dialogue must contain at least one line"
}
}
⌘I