Skip to main content
Creates a new AI assistant. The assistant is created with inactive status and is ready to configure and activate.

Endpoint

POST /user/assistant

Engine modes

The assistant supports three engine modes, each with different requirements:
ModeDescriptionRequired field
pipelineTraditional STT → LLM → TTS pipelinellm_model_id
multimodalReal-time multimodal AImultimodal_model_id
dualplexMultimodal brain with custom TTS voicemultimodal_model_id

Request

Core required fields

name
string
required
Name of the assistant. Maximum 255 characters.
voice_id
integer
required
Voice ID to use. Use the Get Voices endpoint with the mode parameter to retrieve voices compatible with your engine mode.
language_id
integer
required
Primary language ID. Use the Get Languages endpoint to retrieve available languages.
type
string
required
Assistant type: inbound or outbound.
mode
string
required
Engine mode: pipeline, multimodal, or dualplex.
timezone
string
required
Timezone identifier (e.g., America/New_York, Europe/Bucharest).
initial_message
string
required
Greeting message spoken at the start of a call. Maximum 200 characters.
system_prompt
string
required
System prompt defining the assistant’s behavior and personality.

Mode-specific fields

llm_model_id
integer
LLM model ID. Required for pipeline mode. Use the Get Models endpoint to retrieve available models.
multimodal_model_id
integer
Multimodal model ID. Required for 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. Optional.
turn_detection_threshold
number
Turn detection sensitivity for multimodal/dualplex modes. Range: 0–1. Defaults to auto.

Secondary languages

secondary_language_ids
integer[]
Additional language IDs the assistant can speak. The assistant auto-detects and switches languages during the call.
"secondary_language_ids": [2, 3, 4]

Knowledge base

knowledgebase_id
integer
ID of the knowledge base to attach to this assistant.
knowledgebase_mode
string
How the assistant uses the knowledge base:
  • function_call — AI calls a function to search. Required for multimodal and dualplex modes.
  • prompt — Knowledge is injected into the system prompt. Pipeline mode only.

Phone number

phone_number_id
integer
ID of the phone number to assign. Must belong to your account.
For inbound assistants, the phone number cannot be a Caller ID type and cannot already be assigned to another inbound assistant.

Custom mid-call tools

tool_ids
integer[]
IDs of custom mid-call tools to attach. Each tool must belong to your account.
"tool_ids": [1, 5, 12]

Built-in tools

tools
array
Built-in tools to enable on the assistant. Each tool object has a type and type-specific fields.

Voice and TTS settings

voice_stability
number
default:"0.70"
Voice stability. Range: 0–1. Higher values produce a more consistent voice.
voice_similarity
number
default:"0.50"
Voice similarity to the original. Range: 0–1.
speech_speed
number
default:"1.00"
Speech speed multiplier. Range: 0.7–1.2.
llm_temperature
number
default:"0.10"
LLM temperature. Range: 0–1. Lower values produce more deterministic responses.
tts_emotion_enabled
boolean
default:"true"
Whether to enable emotional TTS synthesis.
synthesizer_provider_id
integer
Custom TTS provider ID. Auto-selected based on language if not provided.
transcriber_provider_id
integer
Custom STT provider ID. Pipeline mode only. Auto-selected based on language if not provided.

Call behavior

allow_interruptions
boolean
default:"true"
Whether the caller can interrupt the assistant.
Cannot be disabled for multimodal and dualplex modes.
fillers
boolean
default:"false"
Whether to use filler audio while processing (e.g., “Hmm”, “Let me check”).
Only available in pipeline mode.
filler_config
object
Custom filler phrases per category. Each category is an array of short strings.
"filler_config": {
  "positive": ["Great!", "Perfect!"],
  "negative": ["Hmm.", "I see."],
  "question": ["Good question.", "Let me check."],
  "neutral": ["Ok.", "Noted."]
}
record
boolean
default:"false"
Whether to record calls.
enable_noise_cancellation
boolean
default:"true"
Whether to enable noise cancellation.
wait_for_customer
boolean
default:"false"
If true, the assistant waits for the customer to speak first.

Timing

max_duration
integer
default:"600"
Maximum call duration in seconds. Range: 20–1200.
max_silence_duration
integer
default:"40"
Maximum silence duration before re-engagement, in seconds. Range: 1–360.
max_initial_silence_duration
integer
Maximum silence at call start before ending, in seconds. Range: 1–120.
ringing_time
integer
default:"30"
Maximum ringing time before giving up, in seconds. Range: 1–60.

Re-engagement

reengagement_interval
integer
default:"30"
Seconds between re-engagement attempts. Range: 7–600.
reengagement_prompt
string
Custom re-engagement message prompt. Maximum 1000 characters.

Voicemail

end_call_on_voicemail
boolean
default:"true"
Whether to end the call when voicemail is detected.
voice_mail_message
string
Message to leave on voicemail before hanging up. Maximum 1000 characters.

Endpoint detection

endpoint_type
string
default:"vad"
Voice activity detection type: vad or ai.
endpoint_sensitivity
number
default:"0.5"
Endpoint sensitivity level. Range: 0–5.
interrupt_sensitivity
number
default:"0.5"
Interrupt sensitivity level. Range: 0–5.
min_interrupt_words
integer
Minimum words spoken before an interruption is processed. Range: 0–10.

Ambient sound

ambient_sound
string
Background ambient sound: off, office, city, forest, crowded_room, cafe, or nature.
ambient_sound_volume
number
default:"0.5"
Ambient sound volume. Range: 0–1.

Webhook configuration

is_webhook_active
boolean
default:"false"
Whether to enable post-call webhook notifications.
webhook_url
string
Webhook URL for post-call notifications. Required if is_webhook_active is true.
send_webhook_only_on_completed
boolean
default:"true"
Whether to send webhooks only for completed calls.
include_recording_in_webhook
boolean
default:"true"
Whether to include the recording URL in webhook payloads.

Post-call evaluation

post_call_evaluation
boolean
default:"true"
Whether to enable AI post-call evaluation.
post_call_schema
array
Schema for extracting structured data from calls.
"post_call_schema": [
  {"name": "status", "type": "bool", "description": "Was the call objective achieved"},
  {"name": "summary", "type": "string", "description": "Brief summary of the call"}
]

Variables

variables
object
Custom key-value pairs accessible in prompts via {{variable_name}}.
"variables": {
  "company_name": "Acme Corp",
  "product": "Premium Widget"
}

Conversation ended settings

conversation_inactivity_timeout
integer
default:"30"
Minutes of chat inactivity before the conversation is considered ended. Range: 1–1440.
conversation_ended_retrigger
boolean
default:"false"
Whether to allow re-triggering after the conversation ends due to inactivity.
conversation_ended_webhook_url
string
Webhook URL called when a chat conversation ends due to inactivity.

Response

message
string
Confirmation message.
data
object

Example

curl -X POST "https://portal.intellixent.ai/api/user/assistant" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sales Assistant",
    "voice_id": 1,
    "language_id": 1,
    "type": "outbound",
    "mode": "pipeline",
    "timezone": "America/New_York",
    "initial_message": "Hello! How can I help you today?",
    "system_prompt": "You are a professional sales assistant...",
    "llm_model_id": 2,
    "record": true,
    "tools": [
      {
        "type": "end_call",
        "description": "End call when customer is satisfied"
      }
    ]
  }'
201 Success
{
  "message": "Assistant created successfully",
  "data": {
    "id": 789,
    "name": "Sales Assistant",
    "status": "inactive",
    "type": "outbound",
    "mode": "pipeline"
  }
}
422 Validation error
{
  "message": "Validation failed",
  "errors": {
    "name": ["The name field is required."],
    "voice_id": ["The selected voice is not compatible with the chosen engine type."]
  }
}
New assistants are created with inactive status. Activate them through the Intellixent portal or by attaching a phone number and enabling them.