Publish a ravi.tts request for ElevenLabs generation and extension playback
curl --request POST \
--url http://localhost:3000/api/v1/audio/tts \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>",
"account": "<string>",
"agent": "<string>",
"channel": "<string>",
"chat": "<string>",
"clientId": "<string>",
"elevenlabs": "<string>",
"execute": true,
"format": "<string>",
"id": "<string>",
"lang": "<string>",
"model": "<string>",
"noAutoplay": false,
"session": "<string>",
"sessionKey": "<string>",
"speed": "<string>",
"voice": "<string>",
"voiceSettings": "<string>"
}
'import requests
url = "http://localhost:3000/api/v1/audio/tts"
payload = {
"text": "<string>",
"account": "<string>",
"agent": "<string>",
"channel": "<string>",
"chat": "<string>",
"clientId": "<string>",
"elevenlabs": "<string>",
"execute": True,
"format": "<string>",
"id": "<string>",
"lang": "<string>",
"model": "<string>",
"noAutoplay": False,
"session": "<string>",
"sessionKey": "<string>",
"speed": "<string>",
"voice": "<string>",
"voiceSettings": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
text: '<string>',
account: '<string>',
agent: '<string>',
channel: '<string>',
chat: '<string>',
clientId: '<string>',
elevenlabs: '<string>',
execute: true,
format: '<string>',
id: '<string>',
lang: '<string>',
model: '<string>',
noAutoplay: false,
session: '<string>',
sessionKey: '<string>',
speed: '<string>',
voice: '<string>',
voiceSettings: '<string>'
})
};
fetch('http://localhost:3000/api/v1/audio/tts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/v1/audio/tts",
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([
'text' => '<string>',
'account' => '<string>',
'agent' => '<string>',
'channel' => '<string>',
'chat' => '<string>',
'clientId' => '<string>',
'elevenlabs' => '<string>',
'execute' => true,
'format' => '<string>',
'id' => '<string>',
'lang' => '<string>',
'model' => '<string>',
'noAutoplay' => false,
'session' => '<string>',
'sessionKey' => '<string>',
'speed' => '<string>',
'voice' => '<string>',
'voiceSettings' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:3000/api/v1/audio/tts"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"account\": \"<string>\",\n \"agent\": \"<string>\",\n \"channel\": \"<string>\",\n \"chat\": \"<string>\",\n \"clientId\": \"<string>\",\n \"elevenlabs\": \"<string>\",\n \"execute\": true,\n \"format\": \"<string>\",\n \"id\": \"<string>\",\n \"lang\": \"<string>\",\n \"model\": \"<string>\",\n \"noAutoplay\": false,\n \"session\": \"<string>\",\n \"sessionKey\": \"<string>\",\n \"speed\": \"<string>\",\n \"voice\": \"<string>\",\n \"voiceSettings\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:3000/api/v1/audio/tts")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"account\": \"<string>\",\n \"agent\": \"<string>\",\n \"channel\": \"<string>\",\n \"chat\": \"<string>\",\n \"clientId\": \"<string>\",\n \"elevenlabs\": \"<string>\",\n \"execute\": true,\n \"format\": \"<string>\",\n \"id\": \"<string>\",\n \"lang\": \"<string>\",\n \"model\": \"<string>\",\n \"noAutoplay\": false,\n \"session\": \"<string>\",\n \"sessionKey\": \"<string>\",\n \"speed\": \"<string>\",\n \"voice\": \"<string>\",\n \"voiceSettings\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/v1/audio/tts")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"account\": \"<string>\",\n \"agent\": \"<string>\",\n \"channel\": \"<string>\",\n \"chat\": \"<string>\",\n \"clientId\": \"<string>\",\n \"elevenlabs\": \"<string>\",\n \"execute\": true,\n \"format\": \"<string>\",\n \"id\": \"<string>\",\n \"lang\": \"<string>\",\n \"model\": \"<string>\",\n \"noAutoplay\": false,\n \"session\": \"<string>\",\n \"sessionKey\": \"<string>\",\n \"speed\": \"<string>\",\n \"voice\": \"<string>\",\n \"voiceSettings\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"request": {
"text": "<string>",
"agentId": "<string>",
"createdAt": 123,
"emitId": "<string>",
"id": "<string>",
"metadata": {},
"playback": {
"autoplay": true,
"target": "extension",
"clientId": "<string>"
},
"requestId": "<string>",
"sessionKey": "<string>",
"sessionName": "<string>",
"source": {},
"target": {
"accountId": "<string>",
"canonicalChatId": "<string>",
"channel": "<string>",
"chatId": "<string>",
"instanceId": "<string>",
"threadId": "<string>"
},
"voice": {
"lang": "<string>",
"modelId": "<string>",
"outputFormat": "<string>",
"provider": "elevenlabs",
"elevenlabs": {
"applyLanguageTextNormalization": true,
"applyTextNormalization": "auto",
"enableLogging": true,
"nextRequestIds": [
"<string>"
],
"nextText": "<string>",
"optimizeStreamingLatency": 123,
"previousRequestIds": [
"<string>"
],
"previousText": "<string>",
"pronunciationDictionaryLocators": [
"<string>"
],
"seed": 123,
"usePvcAsIvc": true
},
"voiceId": "<string>",
"voiceSettings": {
"similarityBoost": 123,
"speed": 123,
"stability": 123,
"style": 123,
"useSpeakerBoost": true
}
}
},
"topic": "ravi.tts"
}audio
Publish a ravi.tts request for ElevenLabs generation and extension playback
POST
/
api
/
v1
/
audio
/
tts
Publish a ravi.tts request for ElevenLabs generation and extension playback
curl --request POST \
--url http://localhost:3000/api/v1/audio/tts \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>",
"account": "<string>",
"agent": "<string>",
"channel": "<string>",
"chat": "<string>",
"clientId": "<string>",
"elevenlabs": "<string>",
"execute": true,
"format": "<string>",
"id": "<string>",
"lang": "<string>",
"model": "<string>",
"noAutoplay": false,
"session": "<string>",
"sessionKey": "<string>",
"speed": "<string>",
"voice": "<string>",
"voiceSettings": "<string>"
}
'import requests
url = "http://localhost:3000/api/v1/audio/tts"
payload = {
"text": "<string>",
"account": "<string>",
"agent": "<string>",
"channel": "<string>",
"chat": "<string>",
"clientId": "<string>",
"elevenlabs": "<string>",
"execute": True,
"format": "<string>",
"id": "<string>",
"lang": "<string>",
"model": "<string>",
"noAutoplay": False,
"session": "<string>",
"sessionKey": "<string>",
"speed": "<string>",
"voice": "<string>",
"voiceSettings": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
text: '<string>',
account: '<string>',
agent: '<string>',
channel: '<string>',
chat: '<string>',
clientId: '<string>',
elevenlabs: '<string>',
execute: true,
format: '<string>',
id: '<string>',
lang: '<string>',
model: '<string>',
noAutoplay: false,
session: '<string>',
sessionKey: '<string>',
speed: '<string>',
voice: '<string>',
voiceSettings: '<string>'
})
};
fetch('http://localhost:3000/api/v1/audio/tts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/v1/audio/tts",
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([
'text' => '<string>',
'account' => '<string>',
'agent' => '<string>',
'channel' => '<string>',
'chat' => '<string>',
'clientId' => '<string>',
'elevenlabs' => '<string>',
'execute' => true,
'format' => '<string>',
'id' => '<string>',
'lang' => '<string>',
'model' => '<string>',
'noAutoplay' => false,
'session' => '<string>',
'sessionKey' => '<string>',
'speed' => '<string>',
'voice' => '<string>',
'voiceSettings' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:3000/api/v1/audio/tts"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"account\": \"<string>\",\n \"agent\": \"<string>\",\n \"channel\": \"<string>\",\n \"chat\": \"<string>\",\n \"clientId\": \"<string>\",\n \"elevenlabs\": \"<string>\",\n \"execute\": true,\n \"format\": \"<string>\",\n \"id\": \"<string>\",\n \"lang\": \"<string>\",\n \"model\": \"<string>\",\n \"noAutoplay\": false,\n \"session\": \"<string>\",\n \"sessionKey\": \"<string>\",\n \"speed\": \"<string>\",\n \"voice\": \"<string>\",\n \"voiceSettings\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:3000/api/v1/audio/tts")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"account\": \"<string>\",\n \"agent\": \"<string>\",\n \"channel\": \"<string>\",\n \"chat\": \"<string>\",\n \"clientId\": \"<string>\",\n \"elevenlabs\": \"<string>\",\n \"execute\": true,\n \"format\": \"<string>\",\n \"id\": \"<string>\",\n \"lang\": \"<string>\",\n \"model\": \"<string>\",\n \"noAutoplay\": false,\n \"session\": \"<string>\",\n \"sessionKey\": \"<string>\",\n \"speed\": \"<string>\",\n \"voice\": \"<string>\",\n \"voiceSettings\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/v1/audio/tts")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"account\": \"<string>\",\n \"agent\": \"<string>\",\n \"channel\": \"<string>\",\n \"chat\": \"<string>\",\n \"clientId\": \"<string>\",\n \"elevenlabs\": \"<string>\",\n \"execute\": true,\n \"format\": \"<string>\",\n \"id\": \"<string>\",\n \"lang\": \"<string>\",\n \"model\": \"<string>\",\n \"noAutoplay\": false,\n \"session\": \"<string>\",\n \"sessionKey\": \"<string>\",\n \"speed\": \"<string>\",\n \"voice\": \"<string>\",\n \"voiceSettings\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"request": {
"text": "<string>",
"agentId": "<string>",
"createdAt": 123,
"emitId": "<string>",
"id": "<string>",
"metadata": {},
"playback": {
"autoplay": true,
"target": "extension",
"clientId": "<string>"
},
"requestId": "<string>",
"sessionKey": "<string>",
"sessionName": "<string>",
"source": {},
"target": {
"accountId": "<string>",
"canonicalChatId": "<string>",
"channel": "<string>",
"chatId": "<string>",
"instanceId": "<string>",
"threadId": "<string>"
},
"voice": {
"lang": "<string>",
"modelId": "<string>",
"outputFormat": "<string>",
"provider": "elevenlabs",
"elevenlabs": {
"applyLanguageTextNormalization": true,
"applyTextNormalization": "auto",
"enableLogging": true,
"nextRequestIds": [
"<string>"
],
"nextText": "<string>",
"optimizeStreamingLatency": 123,
"previousRequestIds": [
"<string>"
],
"previousText": "<string>",
"pronunciationDictionaryLocators": [
"<string>"
],
"seed": 123,
"usePvcAsIvc": true
},
"voiceId": "<string>",
"voiceSettings": {
"similarityBoost": 123,
"speed": 123,
"stability": 123,
"style": 123,
"useSpeakerBoost": true
}
}
},
"topic": "ravi.tts"
}Body
application/json
Text to convert to speech
Target account/instance alias
Agent ID used to resolve TTS defaults
Target channel, e.g. whatsapp
Target chat id
Extension playback client id
Additional ElevenLabs request JSON
Confirm publishing work that triggers downstream TTS generation and playback
ElevenLabs output format override
Playback request id
Language code override
ElevenLabs model ID override
Do not autoplay in extension clients
Session name
Session key
Voice speed override
ElevenLabs voice ID override
ElevenLabs voiceSettings JSON