> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intellixent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Update assistant

> Update an existing AI assistant's configuration.

Updates an existing AI assistant. Only the fields you include in the request body are changed — omitted fields retain their current values.

## Endpoint

`PUT /user/assistant/{id}`

## Path parameters

<ParamField path="id" type="integer" required>
  Unique identifier of the assistant to update.
</ParamField>

## Request

All body parameters are optional. Provide only the fields you want to update.

### Core fields

<ParamField body="name" type="string">
  Name of the assistant. Maximum 255 characters.
</ParamField>

<ParamField body="voice_id" type="integer">
  Voice ID. Use the Get Voices endpoint with the `mode` parameter to retrieve compatible voices.
</ParamField>

<ParamField body="language_id" type="integer">
  Primary language ID.
</ParamField>

<ParamField body="type" type="string">
  Assistant type: `inbound` or `outbound`.
</ParamField>

<ParamField body="mode" type="string">
  Engine mode: `pipeline`, `multimodal`, or `dualplex`.

  <Warning>
    Changing the mode resets mode-specific settings (LLM model, multimodal model, providers) to defaults for the new mode.
  </Warning>
</ParamField>

<ParamField body="timezone" type="string">
  Timezone identifier (e.g., `America/New_York`, `Europe/Bucharest`).
</ParamField>

<ParamField body="initial_message" type="string">
  Greeting message spoken at the start of a call. Maximum 200 characters.
</ParamField>

<ParamField body="system_prompt" type="string">
  System prompt defining the assistant's behavior.
</ParamField>

### Mode-specific fields

<ParamField body="llm_model_id" type="integer">
  LLM model ID. Applies to `pipeline` mode only.
</ParamField>

<ParamField body="multimodal_model_id" type="integer">
  Multimodal model ID. Applies to `multimodal` and `dualplex` modes.
</ParamField>

<ParamField body="chat_llm_fallback_id" type="integer">
  Fallback LLM for tool calls in multimodal/dualplex modes. Set to `null` to remove.
</ParamField>

<ParamField body="turn_detection_threshold" type="number">
  Turn detection sensitivity for multimodal/dualplex modes. Range: 0–1. Set to `null` for auto.
</ParamField>

### Secondary languages

<ParamField body="secondary_language_ids" type="integer[]">
  Additional language IDs. **Replaces all existing secondary languages.** Pass `[]` to remove all.
</ParamField>

### Knowledge base

<ParamField body="knowledgebase_id" type="integer">
  ID of the knowledge base to attach. Set to `null` to remove.
</ParamField>

<ParamField body="knowledgebase_mode" type="string">
  How the assistant uses the knowledge base: `function_call` or `prompt`.
</ParamField>

### Phone number

<ParamField body="phone_number_id" type="integer">
  ID of the phone number to assign. Set to `null` to unassign.

  <Warning>
    For `inbound` assistants, the number cannot be a Caller ID type and cannot be assigned to another inbound assistant.
  </Warning>
</ParamField>

### Custom mid-call tools

<ParamField body="tool_ids" type="integer[]">
  Custom mid-call tool IDs. **Replaces all existing tool assignments.** Pass `[]` to remove all tools.
</ParamField>

### Built-in tools

<ParamField body="tools" type="array">
  Built-in tools. **Replaces all existing built-in tools.** Pass `[]` to remove all.

  <Expandable title="Available tool types">
    **`call_transfer`**, **`warm_call_transfer`**, **`end_call`**, **`dtmf_input`**, **`collect_keypad`**, **`calendar_integration`** — See [Create assistant](/api-reference/assistants/create-assistant) for full field details on each type.
  </Expandable>
</ParamField>

### Voice and TTS settings

<ParamField body="voice_stability" type="number">
  Voice stability. Range: 0–1.
</ParamField>

<ParamField body="voice_similarity" type="number">
  Voice similarity. Range: 0–1.
</ParamField>

<ParamField body="speech_speed" type="number">
  Speech speed multiplier. Range: 0.7–1.2.
</ParamField>

<ParamField body="llm_temperature" type="number">
  LLM temperature. Range: 0–1.
</ParamField>

<ParamField body="tts_emotion_enabled" type="boolean">
  Whether to enable emotional TTS synthesis.
</ParamField>

<ParamField body="synthesizer_provider_id" type="integer">
  Custom TTS provider ID. Set to `null` to use language default.
</ParamField>

<ParamField body="transcriber_provider_id" type="integer">
  Custom STT provider ID. Pipeline mode only. Set to `null` to use language default.
</ParamField>

### Call behavior

<ParamField body="allow_interruptions" type="boolean">
  Whether the caller can interrupt the assistant.

  <Warning>Cannot be disabled for `multimodal` and `dualplex` modes.</Warning>
</ParamField>

<ParamField body="fillers" type="boolean">
  Whether to use filler audio. Pipeline mode only.
</ParamField>

<ParamField body="filler_config" type="object">
  Custom filler phrases per category. Replaces existing filler config.
</ParamField>

<ParamField body="record" type="boolean">
  Whether to record calls.
</ParamField>

<ParamField body="enable_noise_cancellation" type="boolean">
  Whether to enable noise cancellation.
</ParamField>

<ParamField body="wait_for_customer" type="boolean">
  Whether the assistant waits for the customer to speak first.
</ParamField>

### Timing

<ParamField body="max_duration" type="integer">
  Maximum call duration in seconds. Range: 20–1200.
</ParamField>

<ParamField body="max_silence_duration" type="integer">
  Maximum silence duration before re-engagement, in seconds. Range: 1–360.
</ParamField>

<ParamField body="max_initial_silence_duration" type="integer">
  Maximum silence at call start before ending, in seconds. Set to `null` to disable.
</ParamField>

<ParamField body="ringing_time" type="integer">
  Maximum ringing time in seconds. Range: 1–60.
</ParamField>

### Re-engagement

<ParamField body="reengagement_interval" type="integer">
  Seconds between re-engagement attempts. Range: 7–600.
</ParamField>

<ParamField body="reengagement_prompt" type="string">
  Custom re-engagement message prompt. Maximum 1000 characters. Set to `null` to use default.
</ParamField>

### Voicemail

<ParamField body="end_call_on_voicemail" type="boolean">
  Whether to end the call when voicemail is detected.
</ParamField>

<ParamField body="voice_mail_message" type="string">
  Message to leave on voicemail. Maximum 1000 characters. Set to `null` to disable.
</ParamField>

### Endpoint detection

<ParamField body="endpoint_type" type="string">
  Voice activity detection type: `vad` or `ai`.
</ParamField>

<ParamField body="endpoint_sensitivity" type="number">
  Endpoint sensitivity. Range: 0–5.
</ParamField>

<ParamField body="interrupt_sensitivity" type="number">
  Interrupt sensitivity. Range: 0–5.
</ParamField>

<ParamField body="min_interrupt_words" type="integer">
  Minimum words before an interruption is processed. Range: 0–10. Set to `null` to disable.
</ParamField>

### Ambient sound

<ParamField body="ambient_sound" type="string">
  Background ambient sound: `off`, `office`, `city`, `forest`, `crowded_room`, `cafe`, or `nature`.
</ParamField>

<ParamField body="ambient_sound_volume" type="number">
  Ambient sound volume. Range: 0–1.
</ParamField>

### Webhook configuration

<ParamField body="is_webhook_active" type="boolean">
  Whether webhook notifications are enabled.
</ParamField>

<ParamField body="webhook_url" type="string">
  Webhook URL for post-call notifications. Set to `null` to remove.
</ParamField>

<ParamField body="send_webhook_only_on_completed" type="boolean">
  Whether webhooks are only sent for completed calls.
</ParamField>

<ParamField body="include_recording_in_webhook" type="boolean">
  Whether to include the recording URL in webhook payloads.
</ParamField>

### Post-call evaluation

<ParamField body="post_call_evaluation" type="boolean">
  Whether to enable AI post-call evaluation.
</ParamField>

<ParamField body="post_call_schema" type="array">
  Post-call data extraction schema. Replaces the existing schema. See [Create assistant](/api-reference/assistants/create-assistant) for field details.
</ParamField>

### Variables

<ParamField body="variables" type="object">
  Custom variables. **Replaces all existing variables.**
</ParamField>

### Conversation ended settings

<ParamField body="conversation_inactivity_timeout" type="integer">
  Minutes of inactivity before the conversation ends. Range: 1–1440. Set to `null` to disable.
</ParamField>

<ParamField body="conversation_ended_retrigger" type="boolean">
  Whether to allow re-triggering after inactivity ends the conversation.
</ParamField>

<ParamField body="conversation_ended_webhook_url" type="string">
  Webhook URL for conversation ended events. Set to `null` to remove.
</ParamField>

## Response

<ResponseField name="message" type="string">
  Confirmation message.
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="id" type="integer">Unique identifier of the assistant.</ResponseField>
    <ResponseField name="name" type="string">Name of the assistant.</ResponseField>
    <ResponseField name="status" type="string">Current status.</ResponseField>
    <ResponseField name="type" type="string">`inbound` or `outbound`.</ResponseField>
    <ResponseField name="mode" type="string">Engine mode.</ResponseField>
  </Expandable>
</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT "https://portal.intellixent.ai/api/user/assistant/789" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Updated Sales Assistant",
      "initial_message": "Hello! How may I assist you?",
      "max_duration": 900
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://portal.intellixent.ai/api/user/assistant/789', {
    method: 'PUT',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      name: 'Updated Sales Assistant',
      initial_message: 'Hello! How may I assist you?',
      max_duration: 900
    })
  });

  const data = await response.json();
  ```
</CodeGroup>

```json 200 Success theme={null}
{
  "message": "Assistant updated successfully",
  "data": {
    "id": 789,
    "name": "Updated Sales Assistant",
    "status": "active",
    "type": "outbound",
    "mode": "pipeline"
  }
}
```

```json 404 Not found theme={null}
{
  "message": "Assistant not found"
}
```

<Tip>
  To remove optional fields, explicitly set them to `null`. To clear array fields like `tool_ids` or `secondary_language_ids`, pass an empty array `[]`.
</Tip>
