curl --request PATCH \
--url https://app.famulor.io/api/v1/assistants/{id}/fallback-voices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"voices": [
{
"voice_id": "<string>"
}
]
}
'import requests
url = "https://app.famulor.io/api/v1/assistants/{id}/fallback-voices"
payload = { "voices": [{ "voice_id": "<string>" }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({voices: [{voice_id: '<string>'}]})
};
fetch('https://app.famulor.io/api/v1/assistants/{id}/fallback-voices', 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://app.famulor.io/api/v1/assistants/{id}/fallback-voices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'voices' => [
[
'voice_id' => '<string>'
]
]
]),
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://app.famulor.io/api/v1/assistants/{id}/fallback-voices"
payload := strings.NewReader("{\n \"voices\": [\n {\n \"voice_id\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://app.famulor.io/api/v1/assistants/{id}/fallback-voices")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"voices\": [\n {\n \"voice_id\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/assistants/{id}/fallback-voices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"voices\": [\n {\n \"voice_id\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyUpdate assistant backup voices
Replace backup voice choices using IDs from GET /voices?fallback_position=1 (or 2, 3). Omitted positions and null use default voices. Positions must be unique. Model order and fallback activation stay unchanged. Compatible public library voices only; private cloned voices are not supported for these backups. Requires Fallbacks & Guardrails. Required scope: assistants:write.
curl --request PATCH \
--url https://app.famulor.io/api/v1/assistants/{id}/fallback-voices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"voices": [
{
"voice_id": "<string>"
}
]
}
'import requests
url = "https://app.famulor.io/api/v1/assistants/{id}/fallback-voices"
payload = { "voices": [{ "voice_id": "<string>" }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({voices: [{voice_id: '<string>'}]})
};
fetch('https://app.famulor.io/api/v1/assistants/{id}/fallback-voices', 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://app.famulor.io/api/v1/assistants/{id}/fallback-voices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'voices' => [
[
'voice_id' => '<string>'
]
]
]),
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://app.famulor.io/api/v1/assistants/{id}/fallback-voices"
payload := strings.NewReader("{\n \"voices\": [\n {\n \"voice_id\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://app.famulor.io/api/v1/assistants/{id}/fallback-voices")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"voices\": [\n {\n \"voice_id\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/assistants/{id}/fallback-voices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"voices\": [\n {\n \"voice_id\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
API key (fam_..., created under Settings → API Keys) or an OAuth 2.0 access token (fam_at_...). REST operations also require API Access for the credential's workspace. Keys can be restricted to scopes such as assistants:read, calls:write, campaigns:write, automations:read, dashboards:read, dashboards:write, leads:write, segments:write, loop:read, loop:write, phone_numbers:write, sip_trunks:write, knowledge:write, voices:read, billing:read, billing:write, settings:write, platform:read, platform:write; a *:write scope implies the matching *:read. Automation and dashboard endpoints also accept the legacy calls:* scope. Keys without scope restrictions have full access within the workspace's available capabilities.
Path Parameters
Assistant ID.
Body
Ordered backup voice choices. Null uses the default voice.
3Show child attributes
Show child attributes
Response
Backup voice choices.
Show child attributes
Show child attributes