Update platform settings
curl --request PATCH \
--url https://app.autocalls.ai/api/white-label/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"welcome_email": {
"subject": "<string>",
"preheader": "<string>",
"greeting_text": "<string>",
"content": "<string>",
"journey_text": "<string>",
"questions_text": "<string>",
"contact_email": "<string>",
"signature_text": "<string>"
},
"email_notifications": {
"welcome_email": true,
"low_balance_alert": true,
"auto_topup_notification": true,
"low_chat_credits_alert": true,
"chat_credits_auto_topup_notification": true,
"trial_ending_reminder": true,
"voice_cloning_completed": true,
"phone_number_deleted": true,
"import_completed": true,
"export_completed": true,
"automation_usage_alert": true,
"automation_usage_alert_email": "<string>"
},
"scripts": {
"scripts": "<string>",
"scripts_auth": "<string>"
},
"appearance": {
"hide_pages": [
"<string>"
],
"hide_features": [
"<string>"
],
"hide_countries": [
"<string>"
],
"plan_billing_display": "<string>",
"relabel_minutes_as_credits": true,
"allow_sign_ups": true
},
"webhooks": {
"user_signup_webhook_url": "<string>"
},
"checkout": {
"require_tax_id": true
}
}
'import requests
url = "https://app.autocalls.ai/api/white-label/settings"
payload = {
"welcome_email": {
"subject": "<string>",
"preheader": "<string>",
"greeting_text": "<string>",
"content": "<string>",
"journey_text": "<string>",
"questions_text": "<string>",
"contact_email": "<string>",
"signature_text": "<string>"
},
"email_notifications": {
"welcome_email": True,
"low_balance_alert": True,
"auto_topup_notification": True,
"low_chat_credits_alert": True,
"chat_credits_auto_topup_notification": True,
"trial_ending_reminder": True,
"voice_cloning_completed": True,
"phone_number_deleted": True,
"import_completed": True,
"export_completed": True,
"automation_usage_alert": True,
"automation_usage_alert_email": "<string>"
},
"scripts": {
"scripts": "<string>",
"scripts_auth": "<string>"
},
"appearance": {
"hide_pages": ["<string>"],
"hide_features": ["<string>"],
"hide_countries": ["<string>"],
"plan_billing_display": "<string>",
"relabel_minutes_as_credits": True,
"allow_sign_ups": True
},
"webhooks": { "user_signup_webhook_url": "<string>" },
"checkout": { "require_tax_id": True }
}
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({
welcome_email: {
subject: '<string>',
preheader: '<string>',
greeting_text: '<string>',
content: '<string>',
journey_text: '<string>',
questions_text: '<string>',
contact_email: '<string>',
signature_text: '<string>'
},
email_notifications: {
welcome_email: true,
low_balance_alert: true,
auto_topup_notification: true,
low_chat_credits_alert: true,
chat_credits_auto_topup_notification: true,
trial_ending_reminder: true,
voice_cloning_completed: true,
phone_number_deleted: true,
import_completed: true,
export_completed: true,
automation_usage_alert: true,
automation_usage_alert_email: '<string>'
},
scripts: {scripts: '<string>', scripts_auth: '<string>'},
appearance: {
hide_pages: ['<string>'],
hide_features: ['<string>'],
hide_countries: ['<string>'],
plan_billing_display: '<string>',
relabel_minutes_as_credits: true,
allow_sign_ups: true
},
webhooks: {user_signup_webhook_url: '<string>'},
checkout: {require_tax_id: true}
})
};
fetch('https://app.autocalls.ai/api/white-label/settings', 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.autocalls.ai/api/white-label/settings",
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([
'welcome_email' => [
'subject' => '<string>',
'preheader' => '<string>',
'greeting_text' => '<string>',
'content' => '<string>',
'journey_text' => '<string>',
'questions_text' => '<string>',
'contact_email' => '<string>',
'signature_text' => '<string>'
],
'email_notifications' => [
'welcome_email' => true,
'low_balance_alert' => true,
'auto_topup_notification' => true,
'low_chat_credits_alert' => true,
'chat_credits_auto_topup_notification' => true,
'trial_ending_reminder' => true,
'voice_cloning_completed' => true,
'phone_number_deleted' => true,
'import_completed' => true,
'export_completed' => true,
'automation_usage_alert' => true,
'automation_usage_alert_email' => '<string>'
],
'scripts' => [
'scripts' => '<string>',
'scripts_auth' => '<string>'
],
'appearance' => [
'hide_pages' => [
'<string>'
],
'hide_features' => [
'<string>'
],
'hide_countries' => [
'<string>'
],
'plan_billing_display' => '<string>',
'relabel_minutes_as_credits' => true,
'allow_sign_ups' => true
],
'webhooks' => [
'user_signup_webhook_url' => '<string>'
],
'checkout' => [
'require_tax_id' => true
]
]),
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.autocalls.ai/api/white-label/settings"
payload := strings.NewReader("{\n \"welcome_email\": {\n \"subject\": \"<string>\",\n \"preheader\": \"<string>\",\n \"greeting_text\": \"<string>\",\n \"content\": \"<string>\",\n \"journey_text\": \"<string>\",\n \"questions_text\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"signature_text\": \"<string>\"\n },\n \"email_notifications\": {\n \"welcome_email\": true,\n \"low_balance_alert\": true,\n \"auto_topup_notification\": true,\n \"low_chat_credits_alert\": true,\n \"chat_credits_auto_topup_notification\": true,\n \"trial_ending_reminder\": true,\n \"voice_cloning_completed\": true,\n \"phone_number_deleted\": true,\n \"import_completed\": true,\n \"export_completed\": true,\n \"automation_usage_alert\": true,\n \"automation_usage_alert_email\": \"<string>\"\n },\n \"scripts\": {\n \"scripts\": \"<string>\",\n \"scripts_auth\": \"<string>\"\n },\n \"appearance\": {\n \"hide_pages\": [\n \"<string>\"\n ],\n \"hide_features\": [\n \"<string>\"\n ],\n \"hide_countries\": [\n \"<string>\"\n ],\n \"plan_billing_display\": \"<string>\",\n \"relabel_minutes_as_credits\": true,\n \"allow_sign_ups\": true\n },\n \"webhooks\": {\n \"user_signup_webhook_url\": \"<string>\"\n },\n \"checkout\": {\n \"require_tax_id\": true\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.autocalls.ai/api/white-label/settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"welcome_email\": {\n \"subject\": \"<string>\",\n \"preheader\": \"<string>\",\n \"greeting_text\": \"<string>\",\n \"content\": \"<string>\",\n \"journey_text\": \"<string>\",\n \"questions_text\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"signature_text\": \"<string>\"\n },\n \"email_notifications\": {\n \"welcome_email\": true,\n \"low_balance_alert\": true,\n \"auto_topup_notification\": true,\n \"low_chat_credits_alert\": true,\n \"chat_credits_auto_topup_notification\": true,\n \"trial_ending_reminder\": true,\n \"voice_cloning_completed\": true,\n \"phone_number_deleted\": true,\n \"import_completed\": true,\n \"export_completed\": true,\n \"automation_usage_alert\": true,\n \"automation_usage_alert_email\": \"<string>\"\n },\n \"scripts\": {\n \"scripts\": \"<string>\",\n \"scripts_auth\": \"<string>\"\n },\n \"appearance\": {\n \"hide_pages\": [\n \"<string>\"\n ],\n \"hide_features\": [\n \"<string>\"\n ],\n \"hide_countries\": [\n \"<string>\"\n ],\n \"plan_billing_display\": \"<string>\",\n \"relabel_minutes_as_credits\": true,\n \"allow_sign_ups\": true\n },\n \"webhooks\": {\n \"user_signup_webhook_url\": \"<string>\"\n },\n \"checkout\": {\n \"require_tax_id\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/white-label/settings")
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 \"welcome_email\": {\n \"subject\": \"<string>\",\n \"preheader\": \"<string>\",\n \"greeting_text\": \"<string>\",\n \"content\": \"<string>\",\n \"journey_text\": \"<string>\",\n \"questions_text\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"signature_text\": \"<string>\"\n },\n \"email_notifications\": {\n \"welcome_email\": true,\n \"low_balance_alert\": true,\n \"auto_topup_notification\": true,\n \"low_chat_credits_alert\": true,\n \"chat_credits_auto_topup_notification\": true,\n \"trial_ending_reminder\": true,\n \"voice_cloning_completed\": true,\n \"phone_number_deleted\": true,\n \"import_completed\": true,\n \"export_completed\": true,\n \"automation_usage_alert\": true,\n \"automation_usage_alert_email\": \"<string>\"\n },\n \"scripts\": {\n \"scripts\": \"<string>\",\n \"scripts_auth\": \"<string>\"\n },\n \"appearance\": {\n \"hide_pages\": [\n \"<string>\"\n ],\n \"hide_features\": [\n \"<string>\"\n ],\n \"hide_countries\": [\n \"<string>\"\n ],\n \"plan_billing_display\": \"<string>\",\n \"relabel_minutes_as_credits\": true,\n \"allow_sign_ups\": true\n },\n \"webhooks\": {\n \"user_signup_webhook_url\": \"<string>\"\n },\n \"checkout\": {\n \"require_tax_id\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "Settings updated.",
"data": {
"welcome_email": {
"subject": "Welcome to {tenant_name}, {user_name}!",
"preheader": null,
"greeting_text": "Welcome {user_name}!",
"content": "<p>Thanks for joining {tenant_name}. Your account is ready.</p>",
"journey_text": null,
"questions_text": "If you have any questions, reach out to:",
"contact_email": "[email protected]",
"signature_text": "Best,<br>{tenant_name} team"
},
"email_notifications": {
"welcome_email": true,
"low_balance_alert": true,
"auto_topup_notification": true,
"low_chat_credits_alert": true,
"chat_credits_auto_topup_notification": true,
"trial_ending_reminder": true,
"voice_cloning_completed": true,
"phone_number_deleted": true,
"import_completed": true,
"export_completed": false,
"automation_usage_alert": true,
"automation_usage_alert_email": null
},
"scripts": {
"scripts": "<script src=\"https://chat.example.com/widget.js\" async></script>",
"scripts_auth": null
},
"appearance": {
"hide_pages": ["hide_api_page", "hide_blacklist_page"],
"hide_features": ["hide_carrier_costs", "hide_platform_tour"],
"hide_countries": [],
"plan_billing_display": "both",
"relabel_minutes_as_credits": false,
"allow_sign_ups": true
},
"webhooks": {
"user_signup_webhook_url": "https://example.com/hooks/signup"
},
"checkout": {
"require_tax_id": false
}
}
}
{
"message": "Unauthenticated."
}
{
"message": "You are not an administrator."
}
{
"message": "You do not have access to these settings."
}
{
"message": "The domain field is not supported.",
"errors": {
"domain": ["The domain field is not supported."]
}
}
{
"message": "The welcome_email field must be an object with only the supported keys.",
"errors": {
"welcome_email": ["The welcome_email field must be an object with only the supported keys."]
}
}
{
"message": "The appearance.hide_countries field accepts only: US, CA, AU, GB, ZA, RO, IT, PR, DK, IL, PL, FI, NL, ES.",
"errors": {
"appearance.hide_countries": ["The appearance.hide_countries field accepts only: US, CA, AU, GB, ZA, RO, IT, PR, DK, IL, PL, FI, NL, ES."]
}
}
{
"message": "The welcome_email.content field must be HTML, not JSON.",
"errors": {
"welcome_email.content": ["The welcome_email.content field must be HTML, not JSON."]
}
}
{
"message": "Too Many Attempts."
}
White Label
Update platform settings
Update the settings of your white label platform
PATCH
/
white-label
/
settings
Update platform settings
curl --request PATCH \
--url https://app.autocalls.ai/api/white-label/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"welcome_email": {
"subject": "<string>",
"preheader": "<string>",
"greeting_text": "<string>",
"content": "<string>",
"journey_text": "<string>",
"questions_text": "<string>",
"contact_email": "<string>",
"signature_text": "<string>"
},
"email_notifications": {
"welcome_email": true,
"low_balance_alert": true,
"auto_topup_notification": true,
"low_chat_credits_alert": true,
"chat_credits_auto_topup_notification": true,
"trial_ending_reminder": true,
"voice_cloning_completed": true,
"phone_number_deleted": true,
"import_completed": true,
"export_completed": true,
"automation_usage_alert": true,
"automation_usage_alert_email": "<string>"
},
"scripts": {
"scripts": "<string>",
"scripts_auth": "<string>"
},
"appearance": {
"hide_pages": [
"<string>"
],
"hide_features": [
"<string>"
],
"hide_countries": [
"<string>"
],
"plan_billing_display": "<string>",
"relabel_minutes_as_credits": true,
"allow_sign_ups": true
},
"webhooks": {
"user_signup_webhook_url": "<string>"
},
"checkout": {
"require_tax_id": true
}
}
'import requests
url = "https://app.autocalls.ai/api/white-label/settings"
payload = {
"welcome_email": {
"subject": "<string>",
"preheader": "<string>",
"greeting_text": "<string>",
"content": "<string>",
"journey_text": "<string>",
"questions_text": "<string>",
"contact_email": "<string>",
"signature_text": "<string>"
},
"email_notifications": {
"welcome_email": True,
"low_balance_alert": True,
"auto_topup_notification": True,
"low_chat_credits_alert": True,
"chat_credits_auto_topup_notification": True,
"trial_ending_reminder": True,
"voice_cloning_completed": True,
"phone_number_deleted": True,
"import_completed": True,
"export_completed": True,
"automation_usage_alert": True,
"automation_usage_alert_email": "<string>"
},
"scripts": {
"scripts": "<string>",
"scripts_auth": "<string>"
},
"appearance": {
"hide_pages": ["<string>"],
"hide_features": ["<string>"],
"hide_countries": ["<string>"],
"plan_billing_display": "<string>",
"relabel_minutes_as_credits": True,
"allow_sign_ups": True
},
"webhooks": { "user_signup_webhook_url": "<string>" },
"checkout": { "require_tax_id": True }
}
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({
welcome_email: {
subject: '<string>',
preheader: '<string>',
greeting_text: '<string>',
content: '<string>',
journey_text: '<string>',
questions_text: '<string>',
contact_email: '<string>',
signature_text: '<string>'
},
email_notifications: {
welcome_email: true,
low_balance_alert: true,
auto_topup_notification: true,
low_chat_credits_alert: true,
chat_credits_auto_topup_notification: true,
trial_ending_reminder: true,
voice_cloning_completed: true,
phone_number_deleted: true,
import_completed: true,
export_completed: true,
automation_usage_alert: true,
automation_usage_alert_email: '<string>'
},
scripts: {scripts: '<string>', scripts_auth: '<string>'},
appearance: {
hide_pages: ['<string>'],
hide_features: ['<string>'],
hide_countries: ['<string>'],
plan_billing_display: '<string>',
relabel_minutes_as_credits: true,
allow_sign_ups: true
},
webhooks: {user_signup_webhook_url: '<string>'},
checkout: {require_tax_id: true}
})
};
fetch('https://app.autocalls.ai/api/white-label/settings', 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.autocalls.ai/api/white-label/settings",
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([
'welcome_email' => [
'subject' => '<string>',
'preheader' => '<string>',
'greeting_text' => '<string>',
'content' => '<string>',
'journey_text' => '<string>',
'questions_text' => '<string>',
'contact_email' => '<string>',
'signature_text' => '<string>'
],
'email_notifications' => [
'welcome_email' => true,
'low_balance_alert' => true,
'auto_topup_notification' => true,
'low_chat_credits_alert' => true,
'chat_credits_auto_topup_notification' => true,
'trial_ending_reminder' => true,
'voice_cloning_completed' => true,
'phone_number_deleted' => true,
'import_completed' => true,
'export_completed' => true,
'automation_usage_alert' => true,
'automation_usage_alert_email' => '<string>'
],
'scripts' => [
'scripts' => '<string>',
'scripts_auth' => '<string>'
],
'appearance' => [
'hide_pages' => [
'<string>'
],
'hide_features' => [
'<string>'
],
'hide_countries' => [
'<string>'
],
'plan_billing_display' => '<string>',
'relabel_minutes_as_credits' => true,
'allow_sign_ups' => true
],
'webhooks' => [
'user_signup_webhook_url' => '<string>'
],
'checkout' => [
'require_tax_id' => true
]
]),
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.autocalls.ai/api/white-label/settings"
payload := strings.NewReader("{\n \"welcome_email\": {\n \"subject\": \"<string>\",\n \"preheader\": \"<string>\",\n \"greeting_text\": \"<string>\",\n \"content\": \"<string>\",\n \"journey_text\": \"<string>\",\n \"questions_text\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"signature_text\": \"<string>\"\n },\n \"email_notifications\": {\n \"welcome_email\": true,\n \"low_balance_alert\": true,\n \"auto_topup_notification\": true,\n \"low_chat_credits_alert\": true,\n \"chat_credits_auto_topup_notification\": true,\n \"trial_ending_reminder\": true,\n \"voice_cloning_completed\": true,\n \"phone_number_deleted\": true,\n \"import_completed\": true,\n \"export_completed\": true,\n \"automation_usage_alert\": true,\n \"automation_usage_alert_email\": \"<string>\"\n },\n \"scripts\": {\n \"scripts\": \"<string>\",\n \"scripts_auth\": \"<string>\"\n },\n \"appearance\": {\n \"hide_pages\": [\n \"<string>\"\n ],\n \"hide_features\": [\n \"<string>\"\n ],\n \"hide_countries\": [\n \"<string>\"\n ],\n \"plan_billing_display\": \"<string>\",\n \"relabel_minutes_as_credits\": true,\n \"allow_sign_ups\": true\n },\n \"webhooks\": {\n \"user_signup_webhook_url\": \"<string>\"\n },\n \"checkout\": {\n \"require_tax_id\": true\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.autocalls.ai/api/white-label/settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"welcome_email\": {\n \"subject\": \"<string>\",\n \"preheader\": \"<string>\",\n \"greeting_text\": \"<string>\",\n \"content\": \"<string>\",\n \"journey_text\": \"<string>\",\n \"questions_text\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"signature_text\": \"<string>\"\n },\n \"email_notifications\": {\n \"welcome_email\": true,\n \"low_balance_alert\": true,\n \"auto_topup_notification\": true,\n \"low_chat_credits_alert\": true,\n \"chat_credits_auto_topup_notification\": true,\n \"trial_ending_reminder\": true,\n \"voice_cloning_completed\": true,\n \"phone_number_deleted\": true,\n \"import_completed\": true,\n \"export_completed\": true,\n \"automation_usage_alert\": true,\n \"automation_usage_alert_email\": \"<string>\"\n },\n \"scripts\": {\n \"scripts\": \"<string>\",\n \"scripts_auth\": \"<string>\"\n },\n \"appearance\": {\n \"hide_pages\": [\n \"<string>\"\n ],\n \"hide_features\": [\n \"<string>\"\n ],\n \"hide_countries\": [\n \"<string>\"\n ],\n \"plan_billing_display\": \"<string>\",\n \"relabel_minutes_as_credits\": true,\n \"allow_sign_ups\": true\n },\n \"webhooks\": {\n \"user_signup_webhook_url\": \"<string>\"\n },\n \"checkout\": {\n \"require_tax_id\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/white-label/settings")
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 \"welcome_email\": {\n \"subject\": \"<string>\",\n \"preheader\": \"<string>\",\n \"greeting_text\": \"<string>\",\n \"content\": \"<string>\",\n \"journey_text\": \"<string>\",\n \"questions_text\": \"<string>\",\n \"contact_email\": \"<string>\",\n \"signature_text\": \"<string>\"\n },\n \"email_notifications\": {\n \"welcome_email\": true,\n \"low_balance_alert\": true,\n \"auto_topup_notification\": true,\n \"low_chat_credits_alert\": true,\n \"chat_credits_auto_topup_notification\": true,\n \"trial_ending_reminder\": true,\n \"voice_cloning_completed\": true,\n \"phone_number_deleted\": true,\n \"import_completed\": true,\n \"export_completed\": true,\n \"automation_usage_alert\": true,\n \"automation_usage_alert_email\": \"<string>\"\n },\n \"scripts\": {\n \"scripts\": \"<string>\",\n \"scripts_auth\": \"<string>\"\n },\n \"appearance\": {\n \"hide_pages\": [\n \"<string>\"\n ],\n \"hide_features\": [\n \"<string>\"\n ],\n \"hide_countries\": [\n \"<string>\"\n ],\n \"plan_billing_display\": \"<string>\",\n \"relabel_minutes_as_credits\": true,\n \"allow_sign_ups\": true\n },\n \"webhooks\": {\n \"user_signup_webhook_url\": \"<string>\"\n },\n \"checkout\": {\n \"require_tax_id\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "Settings updated.",
"data": {
"welcome_email": {
"subject": "Welcome to {tenant_name}, {user_name}!",
"preheader": null,
"greeting_text": "Welcome {user_name}!",
"content": "<p>Thanks for joining {tenant_name}. Your account is ready.</p>",
"journey_text": null,
"questions_text": "If you have any questions, reach out to:",
"contact_email": "[email protected]",
"signature_text": "Best,<br>{tenant_name} team"
},
"email_notifications": {
"welcome_email": true,
"low_balance_alert": true,
"auto_topup_notification": true,
"low_chat_credits_alert": true,
"chat_credits_auto_topup_notification": true,
"trial_ending_reminder": true,
"voice_cloning_completed": true,
"phone_number_deleted": true,
"import_completed": true,
"export_completed": false,
"automation_usage_alert": true,
"automation_usage_alert_email": null
},
"scripts": {
"scripts": "<script src=\"https://chat.example.com/widget.js\" async></script>",
"scripts_auth": null
},
"appearance": {
"hide_pages": ["hide_api_page", "hide_blacklist_page"],
"hide_features": ["hide_carrier_costs", "hide_platform_tour"],
"hide_countries": [],
"plan_billing_display": "both",
"relabel_minutes_as_credits": false,
"allow_sign_ups": true
},
"webhooks": {
"user_signup_webhook_url": "https://example.com/hooks/signup"
},
"checkout": {
"require_tax_id": false
}
}
}
{
"message": "Unauthenticated."
}
{
"message": "You are not an administrator."
}
{
"message": "You do not have access to these settings."
}
{
"message": "The domain field is not supported.",
"errors": {
"domain": ["The domain field is not supported."]
}
}
{
"message": "The welcome_email field must be an object with only the supported keys.",
"errors": {
"welcome_email": ["The welcome_email field must be an object with only the supported keys."]
}
}
{
"message": "The appearance.hide_countries field accepts only: US, CA, AU, GB, ZA, RO, IT, PR, DK, IL, PL, FI, NL, ES.",
"errors": {
"appearance.hide_countries": ["The appearance.hide_countries field accepts only: US, CA, AU, GB, ZA, RO, IT, PR, DK, IL, PL, FI, NL, ES."]
}
}
{
"message": "The welcome_email.content field must be HTML, not JSON.",
"errors": {
"welcome_email.content": ["The welcome_email.content field must be HTML, not JSON."]
}
}
{
"message": "Too Many Attempts."
}
This endpoint changes the settings of your white label platform. Send only the sections, and the keys inside them, that you want to change: everything you leave out stays as it is. The response returns all your settings after the change, in the same format as Get platform settings.
All pages, and all features except
This endpoint is available to the account owner (with an active plan) and to team members with Settings Access. Changing the
checkout section also requires Billing Access, which the owner always has. Without the required access the request returns a 403 Forbidden error and nothing is saved.Request Body
object
The welcome email sent to new users. Every key takes a string, or
null to use the default text. You can use these placeholders in every key except contact_email: {user_name} (the new user’s name), {tenant_name} (your platform name) and {tenant_domain} (your platform domain).Show welcome_email properties
Show welcome_email properties
string
Email subject, up to 255 characters
string
Preview text shown in the inbox before the email is opened, up to 255 characters
string
Heading at the top of the email, for example
Welcome {user_name}!. Up to 255 charactersstring
Main body of the email, in HTML, up to 65,535 characters. A value that is valid JSON, such as an editor document or a plain number, returns 422. The HTML is normalised when it is saved: plain text is wrapped in a paragraph and markup the email editor does not support, such as
<script>, is removed. The value you read back can therefore differ slightly from the value you sent.string
Message shown after the main content, before the contact details. Up to 255 characters
string
Text shown before the contact email, up to 255 characters
string
Support email address shown in the email. Must be a valid email address
string
Signature at the end of the email, up to 255 characters. Use
<br> for a line breakobject
Which emails your users receive. Each email takes
true (sent) or false (not sent). Password reset emails are always sent.Show email_notifications properties
Show email_notifications properties
boolean
Sent to new users after they sign up
boolean
Sent when a user’s balance drops below the alert threshold
boolean
Sent after each automatic top-up
boolean
Sent when a user’s chat credits drop below the alert threshold
boolean
Sent after each automatic chat credits top-up
boolean
Sent before a user’s free trial ends. Only available when free trials are enabled for your platform; otherwise sending this key returns a 422 error
boolean
Sent when voice cloning finishes
boolean
Sent when a phone number is removed
boolean
Sent when a lead import finishes
boolean
Sent when a data export finishes
boolean
Sent when a user reaches 90% and 100% of their monthly automation usage
string
Where automation usage alerts go.
null sends each alert to the user it concerns. An email address, for example your support inbox, receives the alerts instead of your users, and each alert names the userobject
object
What your users see on your platform. A list you send replaces the current list; send
[] to clear it. A value sent twice is saved once, and a list cannot have more items than it has possible values.Show appearance properties
Show appearance properties
string[]
Pages to hide from your users’ navigation. Values from Pages you can hide
string[]
Features and buttons to hide from your users. Values from Features you can hide
string[]
Countries to hide when your users buy a phone number. Values from Countries you can hide
string
Billing cycles shown on the plans page:
both (monthly and yearly), monthly (monthly only) or yearly (yearly only)boolean
When
true, “Minutes” is shown as “Calling credits” in the sidebar balance, the plans page and the credits page. Only the labels change, not billingboolean
Whether visitors can create an account on your platform.
true by default. When false, the register page redirects to the login page, the sign-up link is hidden, and new accounts cannot be created with Google or LinkedIn or through the registration API. Users you create yourself, in the administration panel or with Register user, are not affectedobject
Your webhooks
Show webhooks properties
Show webhooks properties
string
An
http or https URL, up to 255 characters, that receives a POST request each time a new user signs up on your platform. null turns the webhook off. See Signup webhook for the payloadobject
Your checkout settings. Changing them requires Billing Access.
Show checkout properties
Show checkout properties
boolean
When
true, customers from supported countries must enter their VAT or tax ID at checkoutResponse
string
Success message
object
All your settings after the change, in the same format as Get platform settings. The
checkout section is only included if you have Billing Access.{
"message": "Settings updated.",
"data": {
"welcome_email": {
"subject": "Welcome to {tenant_name}, {user_name}!",
"preheader": null,
"greeting_text": "Welcome {user_name}!",
"content": "<p>Thanks for joining {tenant_name}. Your account is ready.</p>",
"journey_text": null,
"questions_text": "If you have any questions, reach out to:",
"contact_email": "[email protected]",
"signature_text": "Best,<br>{tenant_name} team"
},
"email_notifications": {
"welcome_email": true,
"low_balance_alert": true,
"auto_topup_notification": true,
"low_chat_credits_alert": true,
"chat_credits_auto_topup_notification": true,
"trial_ending_reminder": true,
"voice_cloning_completed": true,
"phone_number_deleted": true,
"import_completed": true,
"export_completed": false,
"automation_usage_alert": true,
"automation_usage_alert_email": null
},
"scripts": {
"scripts": "<script src=\"https://chat.example.com/widget.js\" async></script>",
"scripts_auth": null
},
"appearance": {
"hide_pages": ["hide_api_page", "hide_blacklist_page"],
"hide_features": ["hide_carrier_costs", "hide_platform_tour"],
"hide_countries": [],
"plan_billing_display": "both",
"relabel_minutes_as_credits": false,
"allow_sign_ups": true
},
"webhooks": {
"user_signup_webhook_url": "https://example.com/hooks/signup"
},
"checkout": {
"require_tax_id": false
}
}
}
{
"message": "Unauthenticated."
}
{
"message": "You are not an administrator."
}
{
"message": "You do not have access to these settings."
}
{
"message": "The domain field is not supported.",
"errors": {
"domain": ["The domain field is not supported."]
}
}
{
"message": "The welcome_email field must be an object with only the supported keys.",
"errors": {
"welcome_email": ["The welcome_email field must be an object with only the supported keys."]
}
}
{
"message": "The appearance.hide_countries field accepts only: US, CA, AU, GB, ZA, RO, IT, PR, DK, IL, PL, FI, NL, ES.",
"errors": {
"appearance.hide_countries": ["The appearance.hide_countries field accepts only: US, CA, AU, GB, ZA, RO, IT, PR, DK, IL, PL, FI, NL, ES."]
}
}
{
"message": "The welcome_email.content field must be HTML, not JSON.",
"errors": {
"welcome_email.content": ["The welcome_email.content field must be HTML, not JSON."]
}
}
{
"message": "Too Many Attempts."
}
Partial updates
- Sections you do not send stay unchanged, and so do the keys you leave out of a section you send.
- A list you send, such as
hide_pages, replaces the whole list. Send[]to clear it. - An unknown top-level field returns 422 with “The X field is not supported.”, and an unknown key inside a section returns 422 with “The X field must be an object with only the supported keys.”. In both cases nothing is saved, not even the valid parts of the request.
- Leading and trailing spaces and line breaks are removed from text values,
scriptsincluded. An empty string is saved asnull. - Send only the keys you want to change. A value you read earlier and send back unchanged is saved again, trimmed.
Pages you can hide
| Value | Page |
|---|---|
hide_automation_page | Automation |
hide_assistant_page | Assistants |
hide_campaigns_page | Campaigns |
hide_leads_page | Leads |
hide_tools_page | Tools & MCP |
hide_phone_numbers_page | Get Phone Number |
hide_sms_history_page | SMS History |
hide_api_page | API Keys |
hide_knowledgebase_page | Knowledgebase |
hide_conversations_page | Conversations |
hide_calls_page | Calls History |
hide_blacklist_page | Blacklist |
hide_your_phone_numbers_page | Your Phone Numbers |
hide_create_custom_dashboard | Create Custom Dashboard |
hide_whatsapp_senders_page | WhatsApp Senders |
hide_whatsapp_templates_page | WhatsApp Templates |
hide_channels_page | Channels |
hide_meta_connections_page | Messenger & Instagram |
Features you can hide
| Value | Feature |
|---|---|
hide_caller_id_button | Caller ID Button |
hide_sip_integration_button | SIP Integration |
hide_calendar_integration | Calendar Integration |
hide_carrier_costs | Carrier Costs Display |
hide_web_widget | Web Widget Feature |
hide_secondary_languages | Secondary Languages |
hide_dashboard_heading | Dashboard Title & Subheading |
hide_auto_generated_plan_features | Auto-Generated Plan Features |
hide_add_credits | Add Credits Button |
hide_plans | Plans Page & Button |
hide_vat_text | VAT Text on Plans Page |
hide_ai_prompt_editor | AI Prompt Editor |
hide_flow_builder | Flow Builder |
hide_docs_button | Docs Button |
hide_updates_button | Updates Button & Modal |
hide_platform_tour | Platform Tour |
hide_ai_connect_button | Connect AI Button (ChatGPT/Claude) |
hide_auto_generated_plan_features and hide_platform_tour, can also be set for a single user with Update user settings.
Countries you can hide
| Value | Country |
|---|---|
US | United States |
CA | Canada |
AU | Australia |
GB | United Kingdom |
ZA | South Africa |
RO | Romania |
IT | Italy |
PR | Puerto Rico |
DK | Denmark |
IL | Israel |
PL | Poland |
FI | Finland |
NL | Netherlands |
ES | Spain |
Signup webhook
Each time a new user account is created on your platform, for example when someone signs up, the platform sends a POST request with this JSON body touser_signup_webhook_url:
{
"id": 123,
"name": "Jane Doe",
"email": "[email protected]",
"created_at": "2026-09-29T10:15:00+00:00"
}
| Field | Type | Description |
|---|---|---|
id | integer | The new user’s ID, the same ID the other white label endpoints use, such as Get user settings |
name | string | The user’s name |
email | string | The user’s email address |
created_at | string | When the account was created, in ISO 8601 format with a UTC offset |
Rate limit
The platform settings, default limits, user settings and plan endpoints share a limit of 60 requests per minute for each account. Above it they return429, and the Retry-After response header tells you how many seconds to wait.
Example
curl -X PATCH https://app.autocalls.ai/api/white-label/settings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"welcome_email": {
"subject": "Welcome to {tenant_name}, {user_name}!"
},
"email_notifications": {
"export_completed": false
},
"appearance": {
"hide_pages": ["hide_api_page", "hide_blacklist_page"]
},
"webhooks": {
"user_signup_webhook_url": "https://example.com/hooks/signup"
}
}'

