Get user settings
curl --request GET \
--url https://app.autocalls.ai/api/white-label/users/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.autocalls.ai/api/white-label/users/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.autocalls.ai/api/white-label/users/{id}', 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/users/{id}",
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://app.autocalls.ai/api/white-label/users/{id}"
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://app.autocalls.ai/api/white-label/users/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/white-label/users/{id}")
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{
"data": {
"id": 123,
"name": "Jane Doe",
"email": "[email protected]",
"permissions": {
"platform_admin": false,
"settings_access": false,
"billing_access": false,
"revenue_reports_access": false,
"impersonate_owner": false
},
"custom_minute_rate": 0.12,
"effective_minute_rate": 0.12,
"limits": {
"assistants": { "custom": 3, "effective": 3 },
"campaigns": { "custom": null, "effective": 1 },
"cloned_voices": { "custom": null, "effective": 0 },
"knowledgebases": { "custom": null, "effective": 1 },
"mid_call_tools": { "custom": null, "effective": 1 },
"parallel_calls": { "custom": null, "effective": 3 },
"automation_runs": { "custom": null, "effective": 500 },
"own_numbers": { "custom": null, "effective": 1 },
"web_widget": { "custom": false, "effective": false },
"secondary_languages": { "custom": null, "effective": true },
"automation_platform": { "custom": null, "effective": true },
"custom_dashboards": { "custom": null, "effective": false },
"ai_prompt_editor": { "custom": null, "effective": true },
"flow_builder": { "custom": null, "effective": true },
"ai_connector": { "custom": null, "effective": true }
},
"appearance": {
"custom": true,
"hide_pages": ["hide_blacklist_page"],
"hide_features": ["hide_carrier_costs"],
"visible_plans": [12]
}
}
}
{
"message": "Unauthenticated."
}
{
"message": "You are not an administrator."
}
{
"message": "User not found."
}
{
"message": "Too Many Attempts."
}
White Label
Get user settings
Get the permissions, minute rate, limits and appearance of one of your users
GET
/
white-label
/
users
/
{id}
Get user settings
curl --request GET \
--url https://app.autocalls.ai/api/white-label/users/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.autocalls.ai/api/white-label/users/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.autocalls.ai/api/white-label/users/{id}', 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/users/{id}",
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://app.autocalls.ai/api/white-label/users/{id}"
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://app.autocalls.ai/api/white-label/users/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/white-label/users/{id}")
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{
"data": {
"id": 123,
"name": "Jane Doe",
"email": "[email protected]",
"permissions": {
"platform_admin": false,
"settings_access": false,
"billing_access": false,
"revenue_reports_access": false,
"impersonate_owner": false
},
"custom_minute_rate": 0.12,
"effective_minute_rate": 0.12,
"limits": {
"assistants": { "custom": 3, "effective": 3 },
"campaigns": { "custom": null, "effective": 1 },
"cloned_voices": { "custom": null, "effective": 0 },
"knowledgebases": { "custom": null, "effective": 1 },
"mid_call_tools": { "custom": null, "effective": 1 },
"parallel_calls": { "custom": null, "effective": 3 },
"automation_runs": { "custom": null, "effective": 500 },
"own_numbers": { "custom": null, "effective": 1 },
"web_widget": { "custom": false, "effective": false },
"secondary_languages": { "custom": null, "effective": true },
"automation_platform": { "custom": null, "effective": true },
"custom_dashboards": { "custom": null, "effective": false },
"ai_prompt_editor": { "custom": null, "effective": true },
"flow_builder": { "custom": null, "effective": true },
"ai_connector": { "custom": null, "effective": true }
},
"appearance": {
"custom": true,
"hide_pages": ["hide_blacklist_page"],
"hide_features": ["hide_carrier_costs"],
"visible_plans": [12]
}
}
}
{
"message": "Unauthenticated."
}
{
"message": "You are not an administrator."
}
{
"message": "User not found."
}
{
"message": "Too Many Attempts."
}
This endpoint returns the settings of one of your platform users: their name and email, their permissions in the administration panel, their minute rate, their limits and what they see on your platform. It is the information you see when you edit the user in the administration panel.
This endpoint is available to the account owner (with an active plan) and to team members who can open the administration panel, meaning they have Platform Admin, Settings Access or Billing Access. Other users receive a 403 Forbidden error. Only users of your platform can be read: any other ID, including the owner account, returns 404.
Path Parameters
integer
required
The ID of the user. Administrators can list user IDs with Get platform users.
Response
object
The user’s settings
Show data properties
Show data properties
integer
The user’s ID
string
The user’s name
string
The user’s email address
object
The user’s permissions in your administration panel. Returned only to the account owner, as in the panel. See Permissions for what each one allows.
number
The rate per minute you set for this user, in your currency, or
null when they use the rate of their plan or your default ratenumber
The rate per minute this user is charged now:
custom_minute_rate when it is set, otherwise the rate of their subscription plan, otherwise your price for users without a plan (free_account_extra_minutes_cost in Get default limits). After a change to a plan’s rate or to your price for users without a plan, the new rate can take up to 15 minutes to apply.object
One entry per limit, each with two values. The keys are those of default limits except
calendar_integrations. Count limits are integers (-1 means unlimited, 0 means none), and boolean limits are true or false.Show each limit
Show each limit
integer | boolean
The value you set for this user, or
null when they have noneinteger | boolean
The value that applies to the user now: their own value when set, otherwise the limit of their subscription plan, otherwise your default limits. For
ai_connector, it is always true for users with the platform_admin permissionobject
What the user sees on your platform
Show appearance properties
Show appearance properties
boolean
true when the user has appearance settings of their own, false when they see your platform-wide appearancestring[]
The pages hidden for this user: their own setting where they have one, your platform-wide setting otherwise
string[]
The features hidden for this user, with the same rule. Only the features that can be set per user are listed
integer[]
IDs of the plans this user sees on the plans page. An empty list means all your active plans
{
"data": {
"id": 123,
"name": "Jane Doe",
"email": "[email protected]",
"permissions": {
"platform_admin": false,
"settings_access": false,
"billing_access": false,
"revenue_reports_access": false,
"impersonate_owner": false
},
"custom_minute_rate": 0.12,
"effective_minute_rate": 0.12,
"limits": {
"assistants": { "custom": 3, "effective": 3 },
"campaigns": { "custom": null, "effective": 1 },
"cloned_voices": { "custom": null, "effective": 0 },
"knowledgebases": { "custom": null, "effective": 1 },
"mid_call_tools": { "custom": null, "effective": 1 },
"parallel_calls": { "custom": null, "effective": 3 },
"automation_runs": { "custom": null, "effective": 500 },
"own_numbers": { "custom": null, "effective": 1 },
"web_widget": { "custom": false, "effective": false },
"secondary_languages": { "custom": null, "effective": true },
"automation_platform": { "custom": null, "effective": true },
"custom_dashboards": { "custom": null, "effective": false },
"ai_prompt_editor": { "custom": null, "effective": true },
"flow_builder": { "custom": null, "effective": true },
"ai_connector": { "custom": null, "effective": true }
},
"appearance": {
"custom": true,
"hide_pages": ["hide_blacklist_page"],
"hide_features": ["hide_carrier_costs"],
"visible_plans": [12]
}
}
}
{
"message": "Unauthenticated."
}
{
"message": "You are not an administrator."
}
{
"message": "User not found."
}
{
"message": "Too Many Attempts."
}
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 GET https://app.autocalls.ai/api/white-label/users/123 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"

