Get organization-level Voice AI configuration
curl --request GET \
--url https://your-instance.example.com/api/calls/voice-ai/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://your-instance.example.com/api/calls/voice-ai/config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://your-instance.example.com/api/calls/voice-ai/config', 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://your-instance.example.com/api/calls/voice-ai/config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.example.com/api/calls/voice-ai/config"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://your-instance.example.com/api/calls/voice-ai/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/calls/voice-ai/config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"aiVoiceProvider": "elevenlabs",
"hasApiKey": true,
"hasToolSecret": true,
"hasEstCredentials": true,
"sinchEstProjectId": "sinch-est-project-abc",
"sinchEstTrunkId": "sinch-est-trunk-xyz",
"sinchEstTrunkDomain": "example.sip.sinch.com",
"phoneNumbers": []
}{
"success": false,
"error": "Call not found"
}{
"success": false,
"error": "Call not found"
}Calls
Get organization-level Voice AI configuration
Returns the org’s AI voice provider selection (e.g. elevenlabs), boolean flags for whether the ElevenLabs API key / tool secret / Sinch EST credentials are configured (without leaking values), Sinch EST project/trunk identifiers, and a flattened list of all Sinch voice phone numbers across users in the org. Read access is open to any authenticated user.
GET
/
api
/
calls
/
voice-ai
/
config
Get organization-level Voice AI configuration
curl --request GET \
--url https://your-instance.example.com/api/calls/voice-ai/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://your-instance.example.com/api/calls/voice-ai/config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://your-instance.example.com/api/calls/voice-ai/config', 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://your-instance.example.com/api/calls/voice-ai/config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.example.com/api/calls/voice-ai/config"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://your-instance.example.com/api/calls/voice-ai/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/calls/voice-ai/config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"aiVoiceProvider": "elevenlabs",
"hasApiKey": true,
"hasToolSecret": true,
"hasEstCredentials": true,
"sinchEstProjectId": "sinch-est-project-abc",
"sinchEstTrunkId": "sinch-est-trunk-xyz",
"sinchEstTrunkDomain": "example.sip.sinch.com",
"phoneNumbers": []
}{
"success": false,
"error": "Call not found"
}{
"success": false,
"error": "Call not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
Voice AI config + org phone numbers
e.g. elevenlabs. Null if not configured.
True when ElevenLabs API key is set.
True when an ElevenLabs tool secret has been generated.
True when all four Sinch EST credentials are present.
Show child attributes
Show child attributes