# Silence and call length

> Use `silence` to check in on and hang up on a quiet caller, and `max_duration_seconds` to cap call length below the 3-hour limit.

Two settings end a call nobody hung up: `config.silence` for a caller who goes quiet, and
`config.max_duration_seconds` for a call that runs too long. Without them an off-hook
handset or an IVR talking to your agent keeps running your models until the three-hour
platform cap.

Voice and video only; a text agent ignores both (they stay stored). Both are read from
**the agent that answered** — a handoff does not change them.

```json
{
  "silence": { "enabled": true, "timeout": 10, "max_check_ins": 2 },
  "max_duration_seconds": 1800
}
```

## Silence

After `silence.timeout` seconds of quiet, counted from when the agent stops talking, the
agent checks whether the caller is still there, in its own words (written by its model,
in the conversation's language). It waits `timeout` again after each check-in. After
`max_check_ins` unanswered check-ins it says goodbye and hangs up with
`close_reason: silence_timeout`. Anything the caller says resets the count.
`max_check_ins: 0` hangs up at the first silence.

Each check-in is a `caller.check_in` event on the call, with `attempt` and `of`. Silence is
not checked while a [transfer](https://docs.talqing.com/tools/transfer.md) holds the call.

If callers legitimately go quiet (reading a long number, holding for their bank), raise
`timeout` rather than disabling silence handling.

## Call length

`max_duration_seconds` counts from when the agent starts speaking. At the limit the agent
says a brief goodbye and hangs up with `close_reason: max_duration`. `null` means the
platform cap of 10800 seconds (three hours), which applies to every voice and video call —
phone, web and media stream. A limit reached while a transfer is dialling waits for the
transfer to finish.

## Reference

| Field | Type | Default | Range |
| --- | --- | --- | --- |
| `silence.enabled` | boolean | `true` | |
| `silence.timeout` | number (seconds) | `10` | 5–600 |
| `silence.max_check_ins` | integer | `2` | 0–5 |
| `max_duration_seconds` | integer \| null | `1800` | 30–10800; `null` = 10800 |

## Next

- [Turn handling](https://docs.talqing.com/agents/turn-handling.md): Interruptions and endpointing.
- [Close reasons](https://docs.talqing.com/observability/close-reasons.md): Every way a call can end.
