Skip to main content
PUT
/
api
/
user
/
assistant
/
{id}
Update Assistant
curl --request PUT \
  --url https://app.famulor.de/api/user/assistant/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "voice_id": 123,
  "language_id": 123,
  "type": "<string>",
  "mode": "<string>",
  "timezone": "<string>",
  "initial_message": "<string>",
  "system_prompt": "<string>",
  "llm_model_id": 123,
  "multimodal_model_id": 123,
  "chat_llm_fallback_id": 123,
  "turn_detection_threshold": 123,
  "secondary_language_ids": [
    123
  ],
  "knowledgebase_id": 123,
  "knowledgebase_mode": "<string>",
  "phone_number_id": 123,
  "tool_ids": [
    123
  ],
  "tools": [
    {}
  ],
  "tts_emotion_enabled": true,
  "voice_stability": 123,
  "voice_similarity": 123,
  "speech_speed": 123,
  "llm_temperature": 123,
  "synthesizer_provider_id": 123,
  "transcriber_provider_id": 123,
  "allow_interruptions": true,
  "fillers": true,
  "filler_config": {},
  "record": true,
  "enable_noise_cancellation": true,
  "wait_for_customer": true,
  "max_duration": 123,
  "max_silence_duration": 123,
  "max_initial_silence_duration": 123,
  "ringing_time": 123,
  "reengagement_interval": 123,
  "reengagement_prompt": "<string>",
  "end_call_on_voicemail": true,
  "voice_mail_message": "<string>",
  "endpoint_type": "<string>",
  "endpoint_sensitivity": 123,
  "interrupt_sensitivity": 123,
  "min_interrupt_words": 123,
  "ambient_sound": "<string>",
  "ambient_sound_volume": 123,
  "is_webhook_active": true,
  "webhook_url": "<string>",
  "send_webhook_only_on_completed": true,
  "include_recording_in_webhook": true,
  "post_call_evaluation": true,
  "post_call_schema": [
    {
      "name": "<string>",
      "type": "<string>",
      "description": "<string>"
    }
  ],
  "variables": {}
}
'
{
  "message": "Assistant updated successfully",
  "data": {
    "id": 789,
    "name": "Updated Sales Assistant",
    "status": "active",
    "type": "outbound",
    "mode": "pipeline"
  }
}
This endpoint allows you to update the configuration of an existing AI assistant. All fields are optional – only the fields provided will be updated. For detailed field descriptions and options, see Create Assistant.

Path Parameter

id
integer
required
The unique identifier of the assistant to be updated

Request Body

Core Fields

name
string
The name of the assistant (max. 255 characters)
voice_id
integer
The voice ID to be used for the assistant. Use the Get Voices endpoint with the mode parameter to get voices compatible with your engine mode.
language_id
integer
The language ID for the assistant. Use the Get Languages endpoint to retrieve available languages.
type
string
The assistant type. Options: inbound, outbound
mode
string
The engine mode. Options: pipeline, multimodal, dualplex
Changing the mode resets mode-specific settings to their default values for the new mode.
timezone
string
The timezone for the assistant (e.g., “Europe/Berlin”, “America/New_York”)
initial_message
string
The initial message the assistant will speak at call start (max. 200 characters)
system_prompt
string
The system prompt defining the assistant’s behaviour and personality

Mode-Specific Fields

llm_model_id
integer
The LLM model ID to use. Only applicable in pipeline mode.Use the Get Models endpoint to retrieve available models.
multimodal_model_id
integer
The multimodal model ID. Applicable only in multimodal and dualplex modes.Use the Get Models endpoint to retrieve available multimodal models.
chat_llm_fallback_id
integer
Fallback LLM model ID for tool calls in multimodal/dualplex modes. Set to null to remove.
turn_detection_threshold
number
Sensitivity of speaker turn detection for multimodal/dualplex modes (0-1). Set to null for automatic.

Secondary Languages

secondary_language_ids
integer[]
Array of additional language IDs the assistant can speak. Replaces existing secondary languages. Pass an empty array [] to remove all secondary languages.
"secondary_language_ids": [2, 3, 4]

Knowledgebase Settings

knowledgebase_id
integer
The ID of the knowledgebase to link. Set to null to remove.
knowledgebase_mode
string
How the knowledgebase should be used. Options:
  • function_call - AI uses a function to search (required for multimodal/dualplex)
  • prompt - knowledge is injected into the prompt (pipeline only)

Phone Number

phone_number_id
integer
The ID of a phone number to assign. Set to null to unassign. Must belong to your account.
For inbound assistants, the phone number cannot be a caller ID type and must not already be assigned to another inbound assistant.

Custom Mid-Call Tools

tool_ids
integer[]
Array of custom mid-call tool IDs to synchronize. Replaces all existing tool assignments. Pass an empty array [] to remove all tools. Each tool must belong to your account.
"tool_ids": [1, 5, 12]

Built-in Tools

tools
array
Array of built-in tools. Replaces all existing built-in tools. Pass an empty array [] to remove all tools.
"tools": [
  {"type": "dtmf_input", "description": "Navigate IVR as needed"},
  {
    "type": "warm_call_transfer",
    "supervisor_phone": "+1234567890",
    "outbound_phone_id": 7,
    "description": "Transfer to a human agent when the customer wants to speak to a real person.",
    "custom_sip": false,
    "caller_id_mode": "outbound_number",
    "hold_music": "hold_music",
    "hold_music_volume": 80,
    "hold_message": "Please wait while I connect you to an agent.",
    "summary_instructions": "Briefly from your perspective: Who is calling, why, why a human is needed. 2–3 sentences.",
    "briefing_initial_message": "Hello! I have a caller who needs assistance. May I briefly explain the situation?",
    "connected_message": "You are now connected to an agent."
  },
  {"type": "collect_keypad", "timeout": 5, "stop_key": "#"},
  {"type": "end_call", "description": "End call when done"}
]

Speech and TTS Settings

tts_emotion_enabled
boolean
Whether emotional text-to-speech synthesis is enabled
voice_stability
number
Voice stability setting (0-1). Higher = more consistent voice
voice_similarity
number
Voice similarity setting (0-1). Higher = closer to original voice
speech_speed
number
Speech speed multiplier (0.7-1.2)
llm_temperature
number
LLM temperature setting (0-1). Lower = more deterministic
synthesizer_provider_id
integer
Custom TTS provider ID. Set to null to use the system default voice. See Get Synthesizer Providers.
transcriber_provider_id
integer
Custom STT provider ID. Pipeline mode only. Set to null to use the system default voice. See Get Transcriber Providers.

Call Behavior Settings

allow_interruptions
boolean
Whether caller interruptions are allowed.
Cannot be disabled in multimodal and dualplex modes.
fillers
boolean
Whether filler audio should be used during processing.
Available only in pipeline mode.
filler_config
object
Custom filler profiles per category. Replaces the existing filler configuration. Each category is an array of short phrases.
  • positive: Fillers for affirmative responses
  • negative: Fillers for negative/neutral responses
  • question: Fillers when processing a question
  • neutral: Fillers for neutral confirmations
"filler_config": {
  "positive": ["Great!", "Perfect!"],
  "negative": ["Hmm.", "Understood."],
  "question": ["Good question.", "One moment."],
  "neutral": ["Okay.", "Noted."]
}
record
boolean
Whether the call should be recorded
enable_noise_cancellation
boolean
Whether noise cancellation should be enabled
wait_for_customer
boolean
If true, the assistant waits for the customer to speak first

Timing Settings

max_duration
integer
Maximum call duration in seconds (20-1200)
max_silence_duration
integer
Maximum silence duration before re-engagement in seconds (1-360)
max_initial_silence_duration
integer
Maximum silence at the start of the call before termination (1-120 seconds). Set to null to disable.
ringing_time
integer
Maximum ringing time before aborting (1-60 seconds)

Re-Engagement Settings

reengagement_interval
integer
Interval for re-engagement in seconds (7-600)
reengagement_prompt
string
Custom prompt for re-engagement messages (max. 1000 characters). Set to null to use the default.

Voicemail Settings

end_call_on_voicemail
boolean
Whether to end the call when voicemail is detected
voice_mail_message
string
Message to leave on voicemail before hanging up (max. 1000 characters). Set to null to disable.

Endpoint Detection

endpoint_type
string
Type of voice activity detection. Options: vad, ai
endpoint_sensitivity
number
Endpoint sensitivity level (0-5)
interrupt_sensitivity
number
Interruption sensitivity level (0-5)
min_interrupt_words
integer
Minimum number of words before interruption is allowed (0-10). Set to null to disable.

Ambient Sound

ambient_sound
string
Background ambient sound. Options: off, office, city, forest, crowded_room, cafe, nature
ambient_sound_volume
number
Volume of the ambient sound (0-1)

Webhook Configuration

is_webhook_active
boolean
Whether webhook notifications are enabled
webhook_url
string
The webhook URL for post-call notifications. Set to null to remove.
send_webhook_only_on_completed
boolean
Whether webhooks should be sent only for successfully completed calls (not on failed/no-answer)
include_recording_in_webhook
boolean
Whether the recording URL should be included in the webhook payload

Post-Call Evaluation

post_call_evaluation
boolean
Whether AI-based post-call evaluation is enabled
post_call_schema
array
Schema definition for extracting post-call data. Replaces the existing schema.

Variables

variables
object
Key-value pairs for custom variables. Replaces all existing variables.
"variables": {
  "company_name": "Acme Corp",
  "product": "Premium Widget"
}

Example Requests

Update Basic Settings

{
  "name": "Updated Assistant Name",
  "initial_message": "Hello! How can I help you today?",
  "max_duration": 900
}

Switch to Multimodal Mode

{
  "mode": "multimodal",
  "voice_id": 41,
  "multimodal_model_id": 1,
  "chat_llm_fallback_id": 2,
  "knowledgebase_mode": "function_call"
}

Update Tools and Knowledgebase

{
  "tool_ids": [1, 5, 12],
  "knowledgebase_id": 3,
  "knowledgebase_mode": "prompt"
}

Update Re-Engagement and Voicemail

{
  "reengagement_interval": 15,
  "reengagement_prompt": "Are you still there? I'm here to help.",
  "end_call_on_voicemail": true,
  "voice_mail_message": "Hello, please call us back at your earliest convenience."
}

Remove Optional Settings

{
  "phone_number_id": null,
  "webhook_url": null,
  "tool_ids": [],
  "secondary_language_ids": []
}

Response

message
string
Success message confirming the assistant update
data
object
{
  "message": "Assistant updated successfully",
  "data": {
    "id": 789,
    "name": "Updated Sales Assistant",
    "status": "active",
    "type": "outbound",
    "mode": "pipeline"
  }
}

Notes

  • Only the fields you provide in the request body will be updated
  • To remove optional fields, explicitly set them to null
  • To clear arrays (tools, secondary languages), pass an empty array []
  • The assistant must belong to the authenticated user
  • Use the Get Voices endpoint with the mode parameter to get compatible voices
  • For multimodal/dualplex modes, knowledgebase_mode must be set to function_call
  • In multimodal/dualplex modes, interruptions (allow_interruptions) cannot be disabled
  • Changing mode resets mode-specific settings (LLM model, multimodal model, providers)