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

# Termination Reasons

Every call handled by SigmaMind ends with a **Termination Reason** — a system-assigned value that tells you exactly how and why the call session closed. This value appears in the **Call Logs** table under the `Terminated reason` column and is also returned via the API as `terminationReason` on any call record.

Understanding termination reasons helps you:

* Monitor agent performance and call quality
* Identify calls that ended unexpectedly or due to failures
* Improve agent prompts based on how conversations are closing
* Filter and segment call data for reporting and analytics

***

## Where to Find Termination Reasons

### In the Dashboard

1. Go to **Home Dashboard**
2. From the left panel, click **Conversations**
3. Open the **Calls** tab
4. Look for the **Terminated reason** column in the calls table

Each row shows one of the reason values listed below.

### Via the API

Termination reason is returned in the `terminationReason` field when you fetch a call record:

```bash theme={null}
GET https://api.sigmamind.ai/v1/calls/{callId}
```

**Example response:**

```json theme={null}
{
  "callId": "call_AuUKK371Spr5nHJS",
  "status": "ended",
  "terminationReason": "user_ended_call",
  "duration": 120,
  "startTime": "2024-04-20T10:00:00.000Z",
  "endTime": "2024-04-20T10:02:00.000Z"
}
```

<Note>
  `terminationReason` is `null` if the call has not yet ended (status is `in_progress` or `scheduled`)
</Note>

***

## All Termination Reasons

### `silence_timed_out`

**The call was terminated due to prolonged silence or no interaction.**

SigmaMind detected that neither the customer nor the agent was speaking for an extended period. The platform automatically closed the session to avoid an open, idle connection.

**Common triggers:**

* Customer put the phone down without hanging up
* Customer was placed on hold manually but the AI did not detect activity resuming
* Network or audio issues caused one side to stop transmitting
* The agent was waiting for a response that never came

**What it means for you:** Silence timeout terminations usually point to either a customer who disengaged quietly or a technical audio issue. Review the transcript to see where the silence began.

**How to reduce it:**

* Configure silence handling in **Call Settings** — set a maximum silence duration and a prompt the agent should play (e.g., "Are you still there?") before terminating
* Ensure your agent prompts are open-ended enough to keep the customer engaged

***

### `agent_ended_call`

**The AI agent terminated the call programmatically.**

This happens when the agent executes the `voice_end_call` tool based on its configured instruction. It is the expected, intentional ending for any call where the AI completes its task and closes the conversation cleanly.

**Common triggers:**

* Customer confirmed a booking, renewal, or action
* Customer said goodbye or "that's all"
* Customer declined the offer or asked to be removed from the list
* Agent reached the end of its script after all steps completed

**What it means for you:** This is a healthy termination reason. A high proportion of `agent_ended_call` in your call logs means your agent is closing conversations correctly and consistently.

**How to control it:** Configure the `voice_end_call` tool in your agent with a precise instruction.

***

### `user_ended_call`

**The customer or user hung up first.**

The call ended because the person on the other end disconnected — either by pressing the hang-up button on their phone, saying "goodbye" without triggering the agent's end-call tool, or simply dropping the line.

**Common triggers:**

* Customer finished the conversation and hung up before the agent did
* Customer lost patience mid-conversation
* Customer accidentally disconnected
* Customer was not satisfied and dropped the call

**What it means for you:** Occasional `user_ended_call` is normal — many customers will hang up on their own. However, a high rate of this reason, especially early in calls, may indicate the agent is not engaging the customer effectively or is failing to trigger its own `voice_end_call` tool cleanly.

**How to improve:**

* Review transcripts of calls with this reason to identify drop-off points
* Ensure the agent has a warm, natural closing flow so it ends the call before the customer feels they need to hang up themselves

***

### `voicemail_detected`

**The call reached voicemail and was not answered live.**

SigmaMind's voicemail detection identified that the call connected to an automated voicemail system rather than a live person. The platform terminated the call rather than leaving a message (unless voicemail drop is configured).

**Common triggers:**

* Customer's phone went to voicemail (did not answer)
* Business line is outside operating hours and routes to voicemail
* Customer's phone is switched off

**What it means for you:** For outbound campaigns, a high `voicemail_detected` rate can indicate poor timing (calling outside peak hours), list quality issues (inactive numbers), or the need to adjust retry schedules.

**How to handle it:**

* Use **Campaign Settings** to set preferred calling hours that align with your audience's availability
* Configure retry logic to attempt the number again at a different time
* Enable voicemail drop if you want the agent to leave a pre-recorded message

***

### `ivr_detected`

**The call connected to an automated IVR (Interactive Voice Response) system instead of a live person.**

SigmaMind detected that the answered call was an automated phone menu rather than a human recipient. The platform terminated the call to avoid the agent interacting with a non-human system.

**Common triggers:**

* Calling a business number that routes through an IVR before reaching a person
* The destination number has an automated attendant or press-1 menu
* Corporate or multi-department lines with front-end automation

**What it means for you:** A high `ivr_detected` rate in your campaign may indicate that your contact list includes business switchboard numbers rather than direct lines, or that you are calling during hours when live agents are unavailable.

**How to handle it:**

* Review your contact list to ensure you are dialling direct lines where possible
* Consider adjusting call timing to hours when live staff are more likely to answer

***

### `agent_transferred_call`

**The AI agent transferred the call to another destination.**

The call session on SigmaMind's side was closed because the agent performed a call transfer — handing the conversation off to a human agent, a different number, or another system.

**Common triggers:**

* Customer requested to speak to a human
* Agent reached an escalation point in its script
* Transfer tool was triggered based on customer intent or outcome

**What it means for you:** `agent_transferred_call` is an expected and intentional outcome when your agent is configured with transfer logic. Monitor this rate to understand how often escalations occur and whether transfer destinations are handling calls effectively.

***

### `max_call_duration_exceeded`

**The call reached the maximum allowed duration and was automatically terminated.**

SigmaMind enforces a configurable maximum call duration to prevent runaway sessions. When a call hits this limit, it is closed regardless of where the conversation is.

**Common triggers:**

* An unusually long conversation that exceeded the set limit
* A loop or repeated exchange in the agent's script that kept the call running
* A customer who stayed on the line for an extended period without resolution

**What it means for you:** Calls hitting `max_call_duration_exceeded` may indicate the agent is not resolving the customer's request efficiently, or that the max duration setting is too short for your use case.

**How to adjust it:** Go to **Call Settings** → **Max Call Duration** to increase or decrease the limit. Review transcripts of `max_call_duration_exceeded` calls to check whether the agent is looping or stalling.

***

### `dial_telephony_permission_denied`

**Outbound dialling was blocked by the telephony provider due to a permission or authorisation issue.**

The call could not be placed because SigmaMind's telephony provider rejected the dial request at the permission level — not because the destination number is invalid, but because the originating account or number is not authorised to place this type of call.

**Common triggers:**

* Outbound calling not enabled on the account or phone number
* Geographic or international dialling restrictions in place
* Caller ID or originating number not verified or approved
* Account compliance hold or restriction applied by the provider

**What it means for you:** This is a configuration or account-level issue, not a problem with the destination number. It requires action on your SigmaMind account or telephony settings.

**How to investigate:** Review your telephony provider permissions, confirm outbound calling is enabled for the originating number, and contact SigmaMind support if the issue persists.

***

### `dial_invalid_destination`

**The call could not be placed because the destination number was invalid.**

SigmaMind or the carrier rejected the dial attempt because the destination phone number is not a valid, dialable number.

**Common triggers:**

* Phone number is not in valid E.164 format (`+[country code][number]`)
* Number contains invalid characters or incorrect digit count
* Number is not assigned or does not exist on the carrier network

**What it means for you:** Isolated `dial_invalid_destination` calls indicate bad numbers in your contact list. A high rate may point to a data quality issue with your list or an incorrect number format being passed to the API.

**How to fix it:** Validate all numbers are in E.164 format before importing or passing them to SigmaMind. Remove or correct invalid entries from your list.

***

### `dial_no_answer`

**The call rang but was not picked up within the timeout period.**

SigmaMind dialled the number, the carrier confirmed ringing, but no one answered before the configured timeout expired.

**Common triggers:**

* Customer did not hear or see the incoming call
* Customer chose not to answer an unknown number
* The number is valid but the person is unavailable

**What it means for you:** `dial_no_answer` is the most common outbound non-connection reason. A high rate may suggest poor timing, unrecognised caller ID, or list quality issues.

**How to handle it:**

* Retry no-answer calls at different times of day to increase contact rate
* Use a local or recognisable phone number as the caller ID to improve answer rates
* Segment your campaign by timezone to call during reasonable hours

***

### `dial_user_declined`

**The recipient actively declined the incoming call.**

The destination phone rang and the recipient explicitly rejected it — pressing the decline button or otherwise actively dismissing the call rather than simply not answering.

**Common triggers:**

* Customer saw the incoming number and chose not to answer
* Customer is on Do Not Call preference and recognised the number
* Repeated calls from the same number causing the recipient to decline

**What it means for you:** Unlike `dial_no_answer`, this is an active rejection. A high rate may indicate caller ID recognition issues, poor list targeting, or contact frequency that is too high for the audience.

**How to handle it:**

* Review call frequency and avoid contacting the same number too often
* Ensure your caller ID is recognisable and trustworthy to your target audience
* Audit your contact list for numbers that have repeatedly declined

***

### `dial_busy`

**The destination number was busy when the call was attempted.**

The outbound call connected to the carrier, but the recipient's line was engaged with another call at the time of dialling.

**Common triggers:**

* The customer was already on another call
* The destination number has a single line with no call waiting
* High-volume campaign dialling the same number simultaneously

**What it means for you:** `dial_busy` is a carrier-level outcome outside SigmaMind's control. It is expected at a low rate in any outbound campaign.

**How to handle it:**

* Configure campaign retry settings to re-attempt busy numbers after a defined interval (e.g., 30–60 minutes)
* Avoid concentrating calls to the same number in a short time window

***

### `dial_failed`

**The outbound call failed due to a SIP or telephony error.**

The call could not be connected because of a SIP-level or telephony provider error — distinct from permission denials or invalid numbers, this indicates a technical failure in the call routing or connection process.

**Common triggers:**

* SIP configuration error on a BYO or SIP trunk number
* Carrier routing failure or temporary outage
* SIP signalling error during call setup
* Incompatible codec or SIP parameters

**What it means for you:** Isolated `dial_failed` calls may be transient carrier issues. A sustained spike may indicate a SIP misconfiguration or a carrier-side problem.

**How to investigate:**

* Review SIP configuration if using BYO or SIP trunking
* Check carrier status for any reported outages
* Contact SigmaMind support if the issue persists across multiple calls

***

### `error_credit_limit_reached`

**The call was terminated because the account's credit balance was insufficient.**

SigmaMind could not continue or initiate the call because the account has reached its credit limit or has insufficient balance to cover the call cost.

**What it means for you:** Active campaigns may pause or calls may terminate mid-session if credit runs out. This requires immediate action to restore calling capacity.

**How to fix it:** Top up your account balance in **Billing Settings**. Consider setting up auto top-up to prevent interruptions during active campaigns.

***

### `error_llm`

**The call was terminated because the language model failed to generate a response.**

The AI engine powering your agent encountered an error and could not produce a reply during the call, causing the session to close.

**Common triggers:**

* Transient LLM service outage or timeout
* Unusually complex input that caused a model processing failure
* Context window or token limit exceeded during a very long call

**What it means for you:** Occasional `error_llm` events may be transient. A pattern of this error across many calls may indicate a systemic issue or a prompt configuration that is causing consistent model failures.

**How to investigate:** Review the transcript up to the point of failure. If the issue recurs, contact SigmaMind support with the affected call IDs.

***

### `error_tts`

**The call was terminated due to a text-to-speech service error.**

The TTS engine failed to convert the agent's text response into audio, causing the session to close.

**Common triggers:**

* Transient TTS service outage
* Unsupported characters or formatting in the agent's response text
* TTS provider rate limit or quota exceeded

**What it means for you:** Isolated `error_tts` events are usually transient. A recurring pattern may indicate a prompt or response format issue causing the TTS engine to fail consistently.

***

### `error_asr`

**The call was terminated due to a speech recognition service error.**

The ASR (Automatic Speech Recognition) engine failed to process the customer's audio input, causing the session to close.

**Common triggers:**

* Transient ASR service outage
* Severe audio quality issues preventing transcription
* ASR provider rate limit or quota exceeded

**What it means for you:** Occasional `error_asr` may reflect transient service issues or poor call audio quality. If this reason appears frequently for calls to a specific region or carrier, audio quality between SigmaMind and that carrier may need investigation.

***

### `error_sigmamind`

**The call was terminated due to an internal SigmaMind processing error.**

An unexpected error occurred within SigmaMind's core platform during the call session, causing it to close.

**What it means for you:** This is a platform-side error. Isolated occurrences may be transient edge cases. If you see a sustained rate of `error_sigmamind`, contact SigmaMind support with the affected call IDs and timeframe.

***

### `error_telephony`

**The call was terminated due to a telephony provider or connection error.**

A failure occurred at the telephony infrastructure level — either with the provider SigmaMind uses or with the connection between SigmaMind and the carrier — that caused the session to close unexpectedly.

**Common triggers:**

* Telephony provider outage or degraded service
* Network connectivity issue between SigmaMind and the carrier
* Unexpected session drop from the provider side

**What it means for you:** A spike in `error_telephony` across multiple calls at the same time may indicate a provider-side incident. Check SigmaMind's status page and your telephony provider's status for any active incidents.

***

### `error_unknown`

**The call ended due to an unknown internal error.**

SigmaMind encountered an unexpected condition that caused the session to close, but the specific error could not be classified.

**Common triggers:**

* Rare edge case during session teardown
* Internal error path not mapped to a known category

**What it means for you:** A small number of `error_unknown` terminations is normal. If you see a large proportion, contact SigmaMind support with affected call IDs for investigation.

***

## Quick Reference Table

| Termination Reason                 | Who Ended It                | Expected?                | Action Needed                                   |
| ---------------------------------- | --------------------------- | ------------------------ | ----------------------------------------------- |
| `silence_timed_out`                | System (silence timeout)    | ⚠️ Sometimes             | Check silence settings, review transcripts      |
| `agent_ended_call`                 | AI agent (programmatic)     | ✅ Yes                    | None — healthy outcome                          |
| `user_ended_call`                  | Customer hung up            | ✅ Usually                | Review if rate is high                          |
| `voicemail_detected`               | System (voicemail detected) | ⚠️ Expected in campaigns | Adjust call timing, enable voicemail drop       |
| `ivr_detected`                     | System (IVR detected)       | ⚠️ Expected              | Review contact list for direct lines            |
| `agent_transferred_call`           | AI agent (transfer)         | ✅ Yes                    | None — expected escalation outcome              |
| `max_call_duration_exceeded`       | System (duration limit hit) | ⚠️ Occasional            | Review agent script for loops, adjust limit     |
| `dial_telephony_permission_denied` | Carrier (permission denied) | ❌ Investigate            | Check account permissions, contact support      |
| `dial_invalid_destination`         | System / Carrier            | ❌ Investigate            | Validate E.164 number format, clean list        |
| `dial_no_answer`                   | Carrier (no pickup)         | ⚠️ Expected              | Retry at different times, check caller ID       |
| `dial_user_declined`               | Recipient (active decline)  | ⚠️ Monitor               | Review call frequency, caller ID trust          |
| `dial_busy`                        | Carrier (line engaged)      | ⚠️ Expected              | Configure retry with delay                      |
| `dial_failed`                      | Carrier / SIP error         | ❌ Investigate            | Check SIP config, contact support if widespread |
| `error_credit_limit_reached`       | System (no balance)         | ❌ Act immediately        | Top up account balance                          |
| `error_llm`                        | System (LLM failure)        | ❌ Investigate            | Review transcript, contact support if recurring |
| `error_tts`                        | System (TTS failure)        | ❌ Investigate            | Check prompt formatting, contact support        |
| `error_asr`                        | System (ASR failure)        | ❌ Investigate            | Check audio quality, contact support            |
| `error_sigmamind`                  | System (internal error)     | ❌ Investigate            | Contact support with call IDs                   |
| `error_telephony`                  | Telephony provider          | ❌ Investigate            | Check provider status page                      |
| `error_unknown`                    | Undetermined                | ❌ Investigate            | Contact support if widespread                   |

***

## Termination Reason in Post-Call Analysis

Termination reasons are also available in **Post-Conversation Analysis**. You can configure your agent to extract and log the reason alongside custom variables like customer intent, resolution status, or sentiment — giving you a complete picture of each call's outcome.

See [Post-Conversation Analysis](/documentation/agents/settings/post-call-analysis) for setup instructions.

***

## Filtering by Termination Reason

Currently, the Calls table does not support direct filtering by termination reason in the UI. To analyse reason distribution:

1. Click **Download** in the top-right of the Calls table to export the current view as a CSV
2. Open the CSV in Excel or Google Sheets
3. Filter or pivot the `Terminated reason` column to see counts and percentages by reason
