curl --request PATCH \
--url https://app.famulor.io/api/v1/platform/default-limits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"self_service_registration_enabled": true,
"prepaid_accounts_enabled": false,
"prepaid_extra_minute_price_eur": 0.49,
"prepaid_default_limits": {
"max_assistants": 2,
"web_widget": true
}
}
'import requests
url = "https://app.famulor.io/api/v1/platform/default-limits"
payload = {
"self_service_registration_enabled": True,
"prepaid_accounts_enabled": False,
"prepaid_extra_minute_price_eur": 0.49,
"prepaid_default_limits": {
"max_assistants": 2,
"web_widget": 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({
self_service_registration_enabled: true,
prepaid_accounts_enabled: false,
prepaid_extra_minute_price_eur: 0.49,
prepaid_default_limits: {max_assistants: 2, web_widget: true}
})
};
fetch('https://app.famulor.io/api/v1/platform/default-limits', 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/platform/default-limits",
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([
'self_service_registration_enabled' => true,
'prepaid_accounts_enabled' => false,
'prepaid_extra_minute_price_eur' => 0.49,
'prepaid_default_limits' => [
'max_assistants' => 2,
'web_widget' => 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.famulor.io/api/v1/platform/default-limits"
payload := strings.NewReader("{\n \"self_service_registration_enabled\": true,\n \"prepaid_accounts_enabled\": false,\n \"prepaid_extra_minute_price_eur\": 0.49,\n \"prepaid_default_limits\": {\n \"max_assistants\": 2,\n \"web_widget\": 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.famulor.io/api/v1/platform/default-limits")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"self_service_registration_enabled\": true,\n \"prepaid_accounts_enabled\": false,\n \"prepaid_extra_minute_price_eur\": 0.49,\n \"prepaid_default_limits\": {\n \"max_assistants\": 2,\n \"web_widget\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/platform/default-limits")
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 \"self_service_registration_enabled\": true,\n \"prepaid_accounts_enabled\": false,\n \"prepaid_extra_minute_price_eur\": 0.49,\n \"prepaid_default_limits\": {\n \"max_assistants\": 2,\n \"web_widget\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"self_service_registration_enabled": true,
"prepaid_accounts_enabled": true,
"prepaid_extra_minute_price_eur": 0.49,
"prepaid_default_limits": {
"max_assistants": 2,
"max_campaigns": 0,
"web_widget": true
}
}
}{
"error": {
"code": "invalid_request",
"message": "\"to_number\" is required (E.164 format, e.g. +4930123456)."
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid API key."
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after the indicated delay."
}
}{
"error": {
"code": "internal_error",
"message": "Request protection is temporarily unavailable."
}
}Update platform registration and prepaid defaults
Updates one or more registration or prepaid-account settings. Self-service registration controls whether new customers can create an account from your login page. Prepaid access independently controls whether customers without a paid plan can use prepaid credits; when it is disabled, registered customers choose a paid plan before using the platform. Required scope: platform:write.
curl --request PATCH \
--url https://app.famulor.io/api/v1/platform/default-limits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"self_service_registration_enabled": true,
"prepaid_accounts_enabled": false,
"prepaid_extra_minute_price_eur": 0.49,
"prepaid_default_limits": {
"max_assistants": 2,
"web_widget": true
}
}
'import requests
url = "https://app.famulor.io/api/v1/platform/default-limits"
payload = {
"self_service_registration_enabled": True,
"prepaid_accounts_enabled": False,
"prepaid_extra_minute_price_eur": 0.49,
"prepaid_default_limits": {
"max_assistants": 2,
"web_widget": 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({
self_service_registration_enabled: true,
prepaid_accounts_enabled: false,
prepaid_extra_minute_price_eur: 0.49,
prepaid_default_limits: {max_assistants: 2, web_widget: true}
})
};
fetch('https://app.famulor.io/api/v1/platform/default-limits', 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/platform/default-limits",
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([
'self_service_registration_enabled' => true,
'prepaid_accounts_enabled' => false,
'prepaid_extra_minute_price_eur' => 0.49,
'prepaid_default_limits' => [
'max_assistants' => 2,
'web_widget' => 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.famulor.io/api/v1/platform/default-limits"
payload := strings.NewReader("{\n \"self_service_registration_enabled\": true,\n \"prepaid_accounts_enabled\": false,\n \"prepaid_extra_minute_price_eur\": 0.49,\n \"prepaid_default_limits\": {\n \"max_assistants\": 2,\n \"web_widget\": 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.famulor.io/api/v1/platform/default-limits")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"self_service_registration_enabled\": true,\n \"prepaid_accounts_enabled\": false,\n \"prepaid_extra_minute_price_eur\": 0.49,\n \"prepaid_default_limits\": {\n \"max_assistants\": 2,\n \"web_widget\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/platform/default-limits")
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 \"self_service_registration_enabled\": true,\n \"prepaid_accounts_enabled\": false,\n \"prepaid_extra_minute_price_eur\": 0.49,\n \"prepaid_default_limits\": {\n \"max_assistants\": 2,\n \"web_widget\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"self_service_registration_enabled": true,
"prepaid_accounts_enabled": true,
"prepaid_extra_minute_price_eur": 0.49,
"prepaid_default_limits": {
"max_assistants": 2,
"max_campaigns": 0,
"web_widget": true
}
}
}{
"error": {
"code": "invalid_request",
"message": "\"to_number\" is required (E.164 format, e.g. +4930123456)."
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid API key."
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after the indicated delay."
}
}{
"error": {
"code": "internal_error",
"message": "Request protection is temporarily unavailable."
}
}Authorizations
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.
Body
Customer price per additional minute in EUR major units. When prepaid access is enabled, this price must leave a positive reseller margin.
x >= 0Default numeric limits and feature availability for prepaid accounts. Numeric values use -1 for unlimited and 0 for unavailable; boolean values enable or disable the corresponding capability.
Show child attributes
Show child attributes
{
"max_assistants": 2,
"max_campaigns": 0,
"web_widget": true
}
Response
Updated registration and prepaid-account defaults.
Show child attributes
Show child attributes