Call Experience Features
Fine-tune how your voice agent sounds and behaves — pace control, silence fillers, backchanneling, greeting variants, pronunciation, business hours, and more.
Call Experience Features
These features control how your voice agent sounds, reacts, and behaves during calls. They're configured via voice settings and inject behavior through the system prompt — no explicit LLM tool calls needed.
Dynamic Speed / Pace Control
Adjusts the agent's speaking speed based on conversation context. When explaining complex topics, the agent slows down. For simple confirmations, it speeds up.
{
"dynamicPaceEnabled": true
}The system prompt is injected with provider-specific pacing instructions.
Silence Fillers
When the agent is processing a response (thinking), it speaks natural filler phrases to avoid awkward silence.
{
"silenceFillersEnabled": true,
"silenceFillerPhrases": [
"Let me think about that...",
"One moment please...",
"Let me check that for you...",
"Bear with me..."
]
}| Setting | Type | Default | Description |
|---|---|---|---|
silenceFillersEnabled | boolean | false | Enable silence fillers |
silenceFillerPhrases | string[] | default set | Custom filler phrases |
Instant Filler Words
Short, natural sounds like "hmm", "aha", or "acchha" that play instantly when the user stops speaking — before the AI starts generating a response. This eliminates the perceived gap between the user finishing and the agent replying, creating a human-like conversational rhythm.
Unlike silence fillers (which are LLM-driven phrases for tool calls), instant filler words are fired at the audio level and don't wait for the LLM.
{
"fillerWordsEnabled": true,
"fillerWords": ["hmm", "aha", "um", "okay"],
"fillerWordsMinChars": 10
}| Setting | Type | Default | Description |
|---|---|---|---|
fillerWordsEnabled | boolean | false | Enable instant filler words |
fillerWords | string[] | language defaults | Custom filler words. If empty, uses language-appropriate defaults |
fillerWordsMinChars | number | 10 | Minimum user transcript length to trigger a filler. Short replies ("yes", "no") skip fillers |
Language defaults:
| Language | Default Fillers |
|---|---|
| Hindi | "hmm", "acchha", "haan", "theek hai", "ji" |
| English | "hmm", "uh huh", "um", "right", "okay" |
| Other | "hmm", "aha", "um", "okay" |
How it works:
- User finishes speaking → STT produces final transcript
- If transcript is longer than
fillerWordsMinChars, a random filler word is spoken immediately via TTS - The filler is interruptible — once the LLM response is ready, it seamlessly takes over
- The filler uses the same voice as the agent, so it sounds natural
When to use:
- Support agents that handle complex queries (user asks a long question → agent says "hmm" while thinking)
- Sales calls where natural flow matters
- Indian language agents where conversational fillers are culturally expected
When to skip:
- IVR-style bots with short yes/no interactions
- Agents that already respond very quickly (the filler may overlap with the real response)
Backchanneling
The agent interjects brief acknowledgment cues ("uh huh", "got it", "I see") while the caller is speaking, showing active listening.
{
"backchannelingEnabled": true,
"backchannelingFrequency": "medium",
"backchannelingPhrases": ["uh huh", "got it", "I see", "okay", "right"]
}| Setting | Type | Default | Description |
|---|---|---|---|
backchannelingEnabled | boolean | false | Enable active listening cues |
backchannelingFrequency | string | medium | Frequency: low, medium, high |
backchannelingPhrases | string[] | default set | Custom acknowledgment phrases |
Greeting Variants (A/B Testing)
Randomly select from multiple greeting messages for A/B testing.
{
"greetingVariantsEnabled": true,
"greetingVariants": [
"Hi there! How can I help you today?",
"Hello! Thanks for calling. What can I do for you?",
"Welcome! I'm here to help. What's on your mind?"
]
}A random variant is selected at the start of each call.
Pronunciation Dictionary
Map words or acronyms to their phonetic pronunciation for the TTS engine.
{
"pronunciationDictEnabled": true,
"pronunciationDictionary": {
"HIPAA": "hip-uh",
"SQL": "sequel",
"GIF": "jiff",
"thinnestAI": "thinnest A I"
}
}Before speaking, the agent replaces dictionary keys with their pronunciation values.
Business Hours
Configure operating hours and after-hours behavior. When a call comes in outside business hours, the agent can play a custom greeting, switch to an after-hours prompt, or end the call.
{
"businessHoursEnabled": true,
"businessHours": {
"timezone": "America/New_York",
"schedule": {
"monday": { "enabled": true, "open": "09:00", "close": "17:00" },
"tuesday": { "enabled": true, "open": "09:00", "close": "17:00" },
"wednesday": { "enabled": true, "open": "09:00", "close": "17:00" },
"thursday": { "enabled": true, "open": "09:00", "close": "17:00" },
"friday": { "enabled": true, "open": "09:00", "close": "17:00" },
"saturday": { "enabled": false },
"sunday": { "enabled": false }
}
},
"afterHoursGreeting": "Thank you for calling. Our office is currently closed.",
"afterHoursPrompt": "Take a message and let the caller know we'll return their call on the next business day.",
"afterHoursAction": "continue"
}| After Hours Action | Behavior |
|---|---|
continue | Use the after-hours prompt and continue the call |
end_call | Play the after-hours greeting and hang up |
Holiday Calendar
Extend business hours with holiday support. When today matches a holiday date, the agent uses after-hours behavior.
{
"holidayCalendarEnabled": true,
"holidays": [
{ "date": "2026-12-25", "name": "Christmas Day", "recurring": true },
{ "date": "2026-01-01", "name": "New Year's Day", "recurring": true },
{ "date": "2026-07-04", "name": "Independence Day", "recurring": true },
{ "date": "2026-11-26", "name": "Thanksgiving", "recurring": false }
]
}Set recurring: true for holidays that repeat every year (matches month/day only).
Barge-In Phrases (Smart Interruption)
Configure specific phrases that immediately interrupt the agent, even if interruption threshold isn't met.
{
"bargeInEnabled": true,
"bargeInPhrases": ["stop", "wait", "hold on", "actually", "one second"]
}Call Whisper / Agent Coaching
A supervisor can send text messages to the agent during a live call. The agent sees the coaching message but the caller doesn't hear it.
{
"callWhisperEnabled": true,
"whisperDisplayMode": "overlay"
}Conversational Memory (Cross-Call)
Remember context from previous calls with the same phone number. The agent receives a summary of past interactions at the start of each new call.
{
"conversationalMemoryEnabled": true,
"memoryMaxPreviousCalls": 5,
"memoryContextTokenBudget": 500
}| Setting | Type | Default | Description |
|---|---|---|---|
conversationalMemoryEnabled | boolean | false | Enable cross-call memory |
memoryMaxPreviousCalls | integer | 5 | Max previous calls to include |
memoryContextTokenBudget | integer | 500 | Max tokens for memory context |
Real-Time Translation
The agent automatically detects the caller's language and responds in kind.
{
"realTimeTranslationEnabled": true,
"translationPrimaryLanguage": "English",
"translationTargetLanguages": ["Spanish", "French", "German", "Hindi"]
}Unlike Multilingual Auto-Switch, this doesn't switch the TTS voice — it relies on the LLM's multilingual capabilities.
Voice Cloning
Override the TTS voice with a cloned voice ID for a personalized experience.
{
"voiceCloningEnabled": true,
"clonedVoiceId": "your-cloned-voice-id",
"clonedVoiceProvider": "elevenlabs"
}Emotion-Aware TTS
Inject provider-specific emotion instructions into the system prompt so the agent adjusts its vocal delivery based on conversation context.
{
"emotionEnabled": true
}Works with Cartesia, ElevenLabs, and other providers that support SSML or emotion tags.
Example — Create Agent with Call Experience Features
curl -X POST https://api.thinnest.ai/v1/agents \
-H "Authorization: Bearer $THINNESTAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Premium Support Agent",
"model": "gpt-4o",
"instructions": "You are a premium support agent. Be warm, professional, and helpful.",
"voiceEnabled": true,
"transcriber": { "provider": "deepgram", "model": "nova-2-conversationalai" },
"voice": { "provider": "deepgram", "voiceId": "aura-2-thalia-en" },
"dynamicPaceEnabled": true,
"silenceFillersEnabled": true,
"silenceFillerPhrases": ["Let me check that...", "One moment please..."],
"backchannelingEnabled": true,
"backchannelingFrequency": "medium",
"greetingVariantsEnabled": true,
"greetingVariants": [
"Hi there! How can I help you today?",
"Hello! Thanks for calling. What can I do for you?"
],
"pronunciationDictEnabled": true,
"pronunciationDictionary": { "thinnestAI": "thinnest A I", "SQL": "sequel" },
"businessHoursEnabled": true,
"businessHours": {
"timezone": "America/New_York",
"schedule": {
"monday": { "enabled": true, "open": "09:00", "close": "17:00" },
"tuesday": { "enabled": true, "open": "09:00", "close": "17:00" },
"wednesday": { "enabled": true, "open": "09:00", "close": "17:00" },
"thursday": { "enabled": true, "open": "09:00", "close": "17:00" },
"friday": { "enabled": true, "open": "09:00", "close": "17:00" },
"saturday": { "enabled": false },
"sunday": { "enabled": false }
}
},
"afterHoursGreeting": "Our office is closed. Please call back during business hours.",
"afterHoursAction": "end_call",
"conversationalMemoryEnabled": true,
"memoryMaxPreviousCalls": 5
}'