curl --request PATCH \
--url https://app.famulor.io/api/v1/messaging-connectors/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"assistant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_active": true,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": true,
"conversation_ended_webhook_url": "<string>",
"extra_actions_enabled": true,
"watch_name": "<string>",
"watch_id": "<string>",
"ai_enabled": true
}
'import requests
url = "https://app.famulor.io/api/v1/messaging-connectors/{id}"
payload = {
"name": "<string>",
"assistant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_active": True,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": True,
"conversation_ended_webhook_url": "<string>",
"extra_actions_enabled": True,
"watch_name": "<string>",
"watch_id": "<string>",
"ai_enabled": 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({
name: '<string>',
assistant_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
is_active: true,
response_delay_sec: 15,
inactivity_timeout_min: 720,
allow_retrigger: true,
conversation_ended_webhook_url: '<string>',
extra_actions_enabled: true,
watch_name: '<string>',
watch_id: '<string>',
ai_enabled: true
})
};
fetch('https://app.famulor.io/api/v1/messaging-connectors/{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.famulor.io/api/v1/messaging-connectors/{id}",
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([
'name' => '<string>',
'assistant_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'is_active' => true,
'response_delay_sec' => 15,
'inactivity_timeout_min' => 720,
'allow_retrigger' => true,
'conversation_ended_webhook_url' => '<string>',
'extra_actions_enabled' => true,
'watch_name' => '<string>',
'watch_id' => '<string>',
'ai_enabled' => 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/messaging-connectors/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"assistant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"is_active\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\",\n \"extra_actions_enabled\": true,\n \"watch_name\": \"<string>\",\n \"watch_id\": \"<string>\",\n \"ai_enabled\": true\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/messaging-connectors/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"assistant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"is_active\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\",\n \"extra_actions_enabled\": true,\n \"watch_name\": \"<string>\",\n \"watch_id\": \"<string>\",\n \"ai_enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/messaging-connectors/{id}")
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 \"name\": \"<string>\",\n \"assistant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"is_active\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\",\n \"extra_actions_enabled\": true,\n \"watch_name\": \"<string>\",\n \"watch_id\": \"<string>\",\n \"ai_enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assistant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assistant_name": "<string>",
"platform": "sms",
"name": "<string>",
"is_active": true,
"status": "pending",
"last_error": "<string>",
"webhook_url": "<string>",
"response_delay_sec": 5,
"inactivity_timeout_min": 30,
"allow_retrigger": false,
"conversation_ended_webhook_url": "<string>",
"reply_mode": "send",
"extra_actions_enabled": true,
"watch_scope": "inbox",
"watch_name": "<string>",
"watch_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"whatsapp_coexistence": true,
"linked_phone_number_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ai_enabled": true
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after the indicated delay."
}
}{
"error": {
"code": "internal_error",
"message": "Request protection is temporarily unavailable."
}
}Update messaging connector
Patch name, assistant, credentials, or conversation settings. whatsapp_coexistence cannot be changed after the connector is created — reconnect instead (400 if included). On a Coexistence sender, voice flags (whatsapp_voice_enabled, whatsapp_outbound_voice_enabled) and marketplace-number linking are rejected (400) — Coexistence numbers have no Calling API and are never a marketplace/OTP number. Required scope: assistants:write.
curl --request PATCH \
--url https://app.famulor.io/api/v1/messaging-connectors/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"assistant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_active": true,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": true,
"conversation_ended_webhook_url": "<string>",
"extra_actions_enabled": true,
"watch_name": "<string>",
"watch_id": "<string>",
"ai_enabled": true
}
'import requests
url = "https://app.famulor.io/api/v1/messaging-connectors/{id}"
payload = {
"name": "<string>",
"assistant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"is_active": True,
"response_delay_sec": 15,
"inactivity_timeout_min": 720,
"allow_retrigger": True,
"conversation_ended_webhook_url": "<string>",
"extra_actions_enabled": True,
"watch_name": "<string>",
"watch_id": "<string>",
"ai_enabled": 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({
name: '<string>',
assistant_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
is_active: true,
response_delay_sec: 15,
inactivity_timeout_min: 720,
allow_retrigger: true,
conversation_ended_webhook_url: '<string>',
extra_actions_enabled: true,
watch_name: '<string>',
watch_id: '<string>',
ai_enabled: true
})
};
fetch('https://app.famulor.io/api/v1/messaging-connectors/{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.famulor.io/api/v1/messaging-connectors/{id}",
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([
'name' => '<string>',
'assistant_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'is_active' => true,
'response_delay_sec' => 15,
'inactivity_timeout_min' => 720,
'allow_retrigger' => true,
'conversation_ended_webhook_url' => '<string>',
'extra_actions_enabled' => true,
'watch_name' => '<string>',
'watch_id' => '<string>',
'ai_enabled' => 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/messaging-connectors/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"assistant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"is_active\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\",\n \"extra_actions_enabled\": true,\n \"watch_name\": \"<string>\",\n \"watch_id\": \"<string>\",\n \"ai_enabled\": true\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/messaging-connectors/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"assistant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"is_active\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\",\n \"extra_actions_enabled\": true,\n \"watch_name\": \"<string>\",\n \"watch_id\": \"<string>\",\n \"ai_enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.io/api/v1/messaging-connectors/{id}")
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 \"name\": \"<string>\",\n \"assistant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"is_active\": true,\n \"response_delay_sec\": 15,\n \"inactivity_timeout_min\": 720,\n \"allow_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\",\n \"extra_actions_enabled\": true,\n \"watch_name\": \"<string>\",\n \"watch_id\": \"<string>\",\n \"ai_enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assistant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assistant_name": "<string>",
"platform": "sms",
"name": "<string>",
"is_active": true,
"status": "pending",
"last_error": "<string>",
"webhook_url": "<string>",
"response_delay_sec": 5,
"inactivity_timeout_min": 30,
"allow_retrigger": false,
"conversation_ended_webhook_url": "<string>",
"reply_mode": "send",
"extra_actions_enabled": true,
"watch_scope": "inbox",
"watch_name": "<string>",
"watch_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"whatsapp_coexistence": true,
"linked_phone_number_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ai_enabled": true
}
}{
"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
1200 <= x <= 301 <= x <= 1440App channels only. send (default) or draft (Gmail and Outlook only; 400 elsewhere).
send, draft App channels only. Allow one app-specific action (e.g. label, tag, prioritize) alongside each reply.
Gmail, Outlook, and Zoho Mail only. Which mailbox slice the assistant watches.
inbox, all, label, folder Display name of the selected Gmail label or mail folder.
Provider id from GET /messaging-connectors/{id}/watch-options.
Enable or pause automatic replies on this channel.
Response
Updated connector.
Show child attributes
Show child attributes