Skip to main content
PUT
https://app.voiz.mx/api/
/
user
/
assistant
/
{id}
Update assistant
curl --request PUT \
  --url https://app.voiz.mx/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,
  "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 an existing AI assistant’s configuration. All fields are optional - only provide the fields you want to update.

Path Parameters

id
integer
required
The unique identifier of the assistant to update

Request Body

Core Fields

name
string
The name of the assistant (max 255 characters)
voice_id
integer
The voice ID to use for the assistant. Use the Get Voices endpoint with the mode parameter to get compatible voices for your engine mode.
language_id
integer
The language ID for the assistant. Use the Get Languages endpoint to get available languages.
type
string
The assistant type. Options: inbound, outbound
mode
string
The engine mode. Options: pipeline, multimodal, dualplex
Changing the mode will reset mode-specific settings to defaults for the new mode.
timezone
string
The timezone for the assistant (e.g., “Europe/Bucharest”, “America/New_York”)
initial_message
string
The initial message the assistant will speak when the call starts (max 200 characters)
system_prompt
string
The system prompt that defines the assistant’s behavior and personality

Mode-Specific Fields

llm_model_id
integer
The LLM model ID to use. Only applies to pipeline mode.Use the Get Models endpoint to get available models.
multimodal_model_id
integer
The multimodal model ID. Only applies to multimodal and dualplex modes.Use the Get Models endpoint to get 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
Turn detection sensitivity for multimodal/dualplex modes (0-1). Set to null for auto.

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 knowledgebase ID to attach. Set to null to remove knowledgebase.
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)

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 cannot be already assigned to another inbound assistant.

Custom Mid-Call Tools

tool_ids
integer[]
Array of custom mid-call tool IDs to sync. 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": "end_call", "description": "End call when done"}
]

Voice and TTS Settings

tts_emotion_enabled
boolean
Whether to enable emotional text-to-speech synthesis
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 language default.
transcriber_provider_id
integer
Custom STT provider ID. Pipeline mode only. Set to null to use language default.

Call Behavior Settings

allow_interruptions
boolean
Whether to allow caller interruptions.
Cannot be disabled for multimodal and dualplex modes.
fillers
boolean
Whether to use filler audio during processing.
Only available for pipeline mode.
record
boolean
Whether to record the call
enable_noise_cancellation
boolean
Whether to enable noise cancellation
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 call start before ending (1-120 seconds). Set to null to disable.
ringing_time
integer
Maximum ringing time before giving up (1-60 seconds)

Re-engagement Settings

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

Voicemail Settings

end_call_on_voicemail
boolean
Whether to end 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
Voice activity detection type. Options: vad, ai
endpoint_sensitivity
number
Endpoint sensitivity level (0-5)
interrupt_sensitivity
number
Interrupt sensitivity level (0-5)
min_interrupt_words
integer
Minimum 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
Ambient sound volume level (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 to send webhooks only on completed calls (not failed/no-answer)
include_recording_in_webhook
boolean
Whether to include recording URL in webhook payload

Post-Call Evaluation

post_call_evaluation
boolean
Whether to enable AI post-call evaluation
post_call_schema
array
Schema definition for post-call data extraction. Replaces existing schema.

Variables

variables
object
Key-value pairs of 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 may I assist you?",
  "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 convenience."
}

Remove Optional Settings

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

Response

message
string
Success message confirming 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 mode parameter to get compatible voices
  • For multimodal/dualplex modes, knowledgebase_mode must be function_call
  • For multimodal/dualplex modes, allow_interruptions cannot be disabled
  • Changing the mode resets mode-specific settings (LLM model, multimodal model, providers)