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>",
  "type": "<string>"
}
'
{
  "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 when needed"
  },
  {
    "type": "warm_call_transfer",
    "supervisor_phone": "+1234567890",
    "outbound_phone_id": 7,
    "description": "Transfer the call to a human supervisor when the customer requests to speak with a real person.",
    "custom_sip": false,
    "caller_id_mode": "outbound_number",
    "hold_music": "hold_music",
    "hold_music_volume": 80,
    "hold_message": "Please hold while I connect you with a supervisor.",
    "summary_instructions": "Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences).",
    "briefing_initial_message": "Hello! I have a caller on the line who needs your assistance. May I brief you on the situation?",
    "connected_message": "You are now connected with a supervisor. I'll leave you to it."
  },
  {
    "type": "collect_keypad",
    "timeout": 5,
    "stop_key": "#"
  },
  {
    "type": "assistant_transfer",
    "assistant_id": 14765,
    "description": "Transfer to the Support Assistant when the customer needs technical help.",
    "message_before_transfer": "Sure — let me transfer you to our support specialist.",
    "speak_transfer_greeting": true
  },
  {
    "type": "end_call",
    "description": "End call when done"
  }
]
When you list assistants, each configured tool is returned as { "type": "...", "data": { ... } } with the same field names nested under data (not top-level).

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)