curl --request GET \
--url https://api.peachdeskai.com/api/v1/sa/billing/voice-failover \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.peachdeskai.com/api/v1/sa/billing/voice-failover"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.peachdeskai.com/api/v1/sa/billing/voice-failover', 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.peachdeskai.com/api/v1/sa/billing/voice-failover",
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://api.peachdeskai.com/api/v1/sa/billing/voice-failover"
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://api.peachdeskai.com/api/v1/sa/billing/voice-failover")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peachdeskai.com/api/v1/sa/billing/voice-failover")
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{
"enabled": true,
"within_family": true,
"stt": {
"provider": "deepgram",
"model": "<string>"
},
"llm": {
"provider": "openai",
"model": "<string>"
},
"tts": {
"provider": "elevenlabs",
"voice_id": "<string>",
"model": "<string>"
}
}Read Voice Failover
The active failover config (defaults overlaid with SA edits).
curl --request GET \
--url https://api.peachdeskai.com/api/v1/sa/billing/voice-failover \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.peachdeskai.com/api/v1/sa/billing/voice-failover"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.peachdeskai.com/api/v1/sa/billing/voice-failover', 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.peachdeskai.com/api/v1/sa/billing/voice-failover",
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://api.peachdeskai.com/api/v1/sa/billing/voice-failover"
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://api.peachdeskai.com/api/v1/sa/billing/voice-failover")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peachdeskai.com/api/v1/sa/billing/voice-failover")
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{
"enabled": true,
"within_family": true,
"stt": {
"provider": "deepgram",
"model": "<string>"
},
"llm": {
"provider": "openai",
"model": "<string>"
},
"tts": {
"provider": "elevenlabs",
"voice_id": "<string>",
"model": "<string>"
}
}Authorizations
Interactive user session: the login JWT, sent as Authorization: Bearer <token>.
Response
Successful Response
Master switch for the EXTERNAL failover hop. When a self-hosted plane is not serviceable at call start, route the call to the configured third-party provider below instead of failing. тЪая╕П SPENDS MONEY: the external provider bills the operator's own account, at that vendor's rate, for every call it serves. Cost is recorded as COGS (call_charges.failover_usd) and never changes what the customer is charged. Defaults to OFF.
Master switch for the WITHIN-FAMILY model hop, which is tried BEFORE the hop above. When the selected self-hosted model is no longer offered but its plane is warm, serve the call from another model of the SAME brand family that can really serve it (verified against the model manager, the language whitelists and the streaming capability). Free тАФ our own weights on GPUs already paid for, no vendor involved and no invoice тАФ and the customer stays on our brand. Loud rather than silent: it logs VOICE_MODEL_FALLBACK and is stamped on the run. Defaults to ON; turn it off to restore the pre-┬з19 chain exactly.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes

