---
title: "Update Assistant"
method: PUT
path: "/user/assistant/{id}"
tags: ["Assistants"]
---

# Update Assistant

`PUT /user/assistant/{id}`

## Request

- Base URL: `https://app.famulor.de/api`
- URL: `https://app.famulor.de/api/user/assistant/{id}`
- Auth: HTTP bearer

Update the configuration of an existing AI assistant

[Docs](https://docs.famulor.io/api-v1/assistants/update)

## Path parameters

- `id` integer, required

## Request body

- object
  - `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](/en/api-reference/assistants/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](/en/api-reference/assistants/languages) endpoint to retrieve available languages.
  - `type` 'inbound' | 'outbound': The assistant type. Options: `inbound`, `outbound`
  - `mode` 'pipeline' | 'multimodal' | 'dualplex': The engine mode. Options: `pipeline`, `multimodal`, `dualplex` <Warning> Changing the mode resets mode-specific settings to their default values for the new mode. </Warning>
  - `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
  - `llm_model_id` integer: The LLM model ID to use. Only applicable in `pipeline` mode. Use the [Get Models](/en/api-reference/assistants/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](/en/api-reference/assistants/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_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.
  - `knowledgebase_id` integer: The ID of the knowledgebase to link. Set to `null` to remove.
  - `knowledgebase_mode` string: How to use the knowledgebase. Options: * `function_call` - AI calls a function to search (required for multimodal/dualplex) * `prompt` - Knowledge is injected into prompt (pipeline only)
  - `folder_id` integer: ID of a [folder](/en/api-reference/folders/create) to move this assistant into. Must belong to your account. Set to `null` to make it uncategorized. Omit to leave the folder unchanged.
  - `label_ids` integer[]: Array of [label](/en/api-reference/labels/create) IDs for this assistant. Each label must belong to your account. When provided, this **replaces** the assistant's current labels. Omit to leave labels unchanged; send `[]` to remove all labels.
  - `phone_number_id` integer: The ID of a phone number to assign. Set to `null` to unassign. Must belong to your account. <Warning> For `inbound` assistants, the phone number cannot be a caller ID type and must not already be assigned to another inbound assistant. </Warning>
  - `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.
  - `tools` unknown[]: Array of built-in tools. **Replaces all existing built-in tools.** Pass an empty array `[]` to remove all tools. <Note> When you [list assistants](/en/api-reference/assistants/list), each configured tool is returned as `{ "type": "...", "data": { ... } }` with the same field names nested under `data` (not top-level). </Note>
    - unknown
  - `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](/en/api-reference/assistants/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](/en/api-reference/assistants/transcriber-providers).
  - `allow_interruptions` boolean: Whether caller interruptions are allowed. <Warning>Cannot be disabled in `multimodal` and `dualplex` modes.</Warning>
  - `fillers` boolean: Whether filler audio should be used during processing. <Warning>Available only in `pipeline` mode.</Warning>
  - `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
  - `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
  - `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)
  - `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.
  - `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_type` 'vad' | 'ai': 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` 'off' | 'office' | 'city' | 'forest' | 'crowded_room' | 'cafe' | 'nature': Background ambient sound. Options: `off`, `office`, `city`, `forest`, `crowded_room`, `cafe`, `nature`
  - `ambient_sound_volume` number: Volume of the ambient sound (0-1)
  - `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` boolean: Whether AI-based post-call evaluation is enabled
  - `post_call_schema` object[]: Schema definition for extracting post-call data. Replaces the existing schema.
    - `name` string, required: Field name (3-16 characters, lowercase, alphanumeric and underscores only)
    - `type` 'string' | 'number' | 'bool', required: Data type. Options: `string`, `number`, `bool`
    - `description` string, required: Description of what this field represents (3-255 characters)
  - `variables` object: Key-value pairs for custom variables. **Replaces all existing variables.**

## Response `200`

Success

- object
  - `message` string: Success message confirming the assistant update
  - `data` object
    - `id` integer: The unique ID of the updated assistant
    - `name` string: The assistant’s name
    - `status` string: The current status of the assistant
    - `type` string: The type (`inbound` or `outbound`)
    - `mode` string: The engine mode (`pipeline`, `multimodal`, or `dualplex`)

## Other responses

- `401`: Fehlender oder ungültiger API-Key.
- `404`: Not Found
- `422`: Validation Error

---

[API](https://skmtc.dev/famulor/apis/famulor-api.md) · [All operations](https://skmtc.dev/famulor/apis/famulor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/famulor/apis/famulor-api/revisions/3b938c370721?raw)
