# VoiceSessionEndReason

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.voicesessionendreason/
> Summary: VoiceSessionEndReason: The reason a voice connection closed.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Abstractions.dll</code></div>

The reason a voice connection closed.

```csharp
[JsonConverter(typeof(JsonStringEnumConverter<VoiceSessionEndReason>))]
public enum VoiceSessionEndReason
```

## Fields

`Abandoned = 5` 

The session was created but nothing ever connected to it, and it timed out.

Deliberately not [VoiceSessionEndReason.Error](/api/tracon.voicesessionendreason/): an abandoned session is not a failure,
and folding the two together would hide how often callers create sessions they
never use.

`Client = 0` 

The client sent `stop` or closed the socket cleanly.

`DurationLimit = 2` 

The connection reached the maximum allowed duration.

`Error = 3` 

An error closed the connection.

`IdleTimeout = 1` 

The connection sat idle and timed out.

`Provider = 6` 

The provider closed the session.

`ServerShutdown = 4` 

The server is shutting down.

## Remarks

Written **as a name** in JSON; stored as `smallint` in
the database. The numeric values are **stable** and must not change.
