curl --request PATCH \
--url https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ai_enabled": true,
"ignore_message_reactions": true,
"keep_conversations_unread": true,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": true,
"conversation_ended_webhook_url": "<string>"
}
'import requests
url = "https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile"
payload = {
"ai_enabled": True,
"ignore_message_reactions": True,
"keep_conversations_unread": True,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": True,
"conversation_ended_webhook_url": "<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({
ai_enabled: true,
ignore_message_reactions: true,
keep_conversations_unread: true,
response_delay_sec: 15,
inactivity_timeout_min: 720,
allow_retrigger: true,
conversation_ended_webhook_url: '<string>'
})
};
fetch('https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile', 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/whatsapp/connectors/{id}/profile",
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([
'ai_enabled' => true,
'ignore_message_reactions' => true,
'keep_conversations_unread' => true,
'response_delay_sec' => 15,
'inactivity_timeout_min' => 720,
'allow_retrigger' => true,
'conversation_ended_webhook_url' => '<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/whatsapp/connectors/{id}/profile"
payload := strings.NewReader("{\n \"ai_enabled\": true,\n \"ignore_message_reactions\": true,\n \"keep_conversations_unread\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\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/whatsapp/connectors/{id}/profile")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ai_enabled\": true,\n \"ignore_message_reactions\": true,\n \"keep_conversations_unread\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile")
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 \"ai_enabled\": true,\n \"ignore_message_reactions\": true,\n \"keep_conversations_unread\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after the indicated delay."
}
}{
"error": {
"code": "internal_error",
"message": "Request protection is temporarily unavailable."
}
}Update WhatsApp sender profile
Patch local sender settings and business profile fields. Required scope: assistants:write.
curl --request PATCH \
--url https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ai_enabled": true,
"ignore_message_reactions": true,
"keep_conversations_unread": true,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": true,
"conversation_ended_webhook_url": "<string>"
}
'import requests
url = "https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile"
payload = {
"ai_enabled": True,
"ignore_message_reactions": True,
"keep_conversations_unread": True,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": True,
"conversation_ended_webhook_url": "<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({
ai_enabled: true,
ignore_message_reactions: true,
keep_conversations_unread: true,
response_delay_sec: 15,
inactivity_timeout_min: 720,
allow_retrigger: true,
conversation_ended_webhook_url: '<string>'
})
};
fetch('https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile', 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/whatsapp/connectors/{id}/profile",
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([
'ai_enabled' => true,
'ignore_message_reactions' => true,
'keep_conversations_unread' => true,
'response_delay_sec' => 15,
'inactivity_timeout_min' => 720,
'allow_retrigger' => true,
'conversation_ended_webhook_url' => '<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/whatsapp/connectors/{id}/profile"
payload := strings.NewReader("{\n \"ai_enabled\": true,\n \"ignore_message_reactions\": true,\n \"keep_conversations_unread\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\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/whatsapp/connectors/{id}/profile")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ai_enabled\": true,\n \"ignore_message_reactions\": true,\n \"keep_conversations_unread\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/whatsapp/connectors/{id}/profile")
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 \"ai_enabled\": true,\n \"ignore_message_reactions\": true,\n \"keep_conversations_unread\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"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.
Path Parameters
Body
Automatically reply to incoming customer messages.
Ignore emoji reactions. When false, new reactions are processed as incoming messages.
Keep customer messages unread and omit the typing indicator.
Debounce after the latest customer message. Zero means no deliberate delay; AI generation and delivery take additional time.
0 <= x <= 30Customer inactivity before ending a conversation.
1 <= x <= 1440Send the configured conversation-ended webhook again after a customer resumes the same chat and becomes inactive.
HTTPS destination for the transcript and extracted variables. Null disables this webhook.
Response
Updated profile.