Logo
Search
API Docs

Call Timeouts & Duration

Inbound Call Handling

Call Timeouts and Duration Settings

Overview

Sulus provides several timeout and duration settings that control how calls behave during silence, inactivity, and maximum call length. Here's an overview of each setting and how to configure it.


Idle Messages (Customer Silence Timeout)

Idle messages use the customer.speech.timeout hook to automatically prompt users during periods of inactivity. When a user stops speaking, Sulus starts a timer and triggers configured actions when the timeout is reached.

Key configuration options:

OptionTypeRangeDefaultDescription
timeoutSecondsnumber1–1000s7.5sHow long to wait for customer speech before triggering
triggerMaxCountnumber1–103Maximum times the hook triggers per call
triggerResetModestringnever | onUserSpeechneverWhether to reset the trigger count when the user speaks

Example — end call after 30 seconds of silence:

{
  "hooks": [
    {
      "on": "customer.speech.timeout",
      "options": { "timeoutSeconds": 10, "triggerMaxCount": 3 },
      "do": [{ "type": "say", "exact": "Are you still there?" }]
    },
    {
      "on": "customer.speech.timeout",
      "options": { "timeoutSeconds": 30, "triggerMaxCount": 3 },
      "do": [
        { "type": "say", "exact": "I'll be ending the call now." },
        { "type": "tool", "tool": { "type": "endCall" } }
      ]
    }
  ]
}

Idle messages are automatically disabled during tool calls and warm transfers to avoid interrupting system processes.


Maximum Call Duration

Calls are automatically terminated when they reach maxDurationSeconds, resulting in the exceeded-max-duration ended reason. This is configured on the assistant and sets a hard cap on how long any single call can last.


Silence Timeout (Call End)

The silence-timed-out ended reason is triggered when no speech is detected for the configured silence timeout duration. This is distinct from idle messages — it ends the call outright rather than prompting the user.


Warm Transfer Silence Timeout

For AI-managed warm transfers, you can configure silenceTimeoutSeconds (default 30 seconds) on the Transfer Assistant to automatically end the call after a specified period of silence. This prevents idle calls from lingering and saves costs.


Customer Join Timeout (Web Calls Only)

customerJoinTimeoutSeconds sets the maximum time users have to join a web call before it's automatically terminated. If users don't complete the join process (network connection, microphone permissions, WebRTC setup) within the timeout, the call ends with assistant-did-not-receive-customer-audio.

SettingDefaultRange
customerJoinTimeoutSeconds15 seconds1–60 seconds

Example configuration:

curl -X POST "https://api.sulus.ai/assistant" \
     -H "Authorization: Bearer $SULUS_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "name": "My Assistant",
       "customerJoinTimeoutSeconds": 30
     }'

Quick Reference

SettingScopeWhat it controls
timeoutSeconds (hook)Idle messagesHow long before prompting a silent user
triggerMaxCountIdle messagesMax number of idle prompts per call
maxDurationSecondsCallHard cap on total call duration
silenceTimeoutSecondsWarm transferEnd transfer after silence
customerJoinTimeoutSecondsWeb calls onlyMax time to join before termination

In summary, Sulus gives you fine-grained control over call timeouts at multiple levels: idle message prompts via hooks, hard call duration limits, silence-based call termination, warm transfer silence handling, and web call join timeouts. Combining these settings lets you optimize both user experience and resource usage.