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

# Reliability

> Fallbacks, per-turn timeouts, and failure audio that keep a call graceful when a model step fails.

Any of Listen, Think, and Speak can fail on a single turn: a provider returns an
error, or a response arrives too late for a real-time call. The agent's `models`
object carries three controls that handle this, and they work the same way for
all three steps. The API sets them together in the `models` block; the dashboard
exposes them on each section (Listen, Think, Speak), with failure audio under
Agent behavior.

## Prerequisites

Before you begin:

* An agent already exists. If not, see
  [Create an agent](/guides/get-started/create-a-project/create-agent).
* These controls live in the `models` object. A `PATCH` replaces it as a unit
  rather than merging fields, so send the whole block; see
  [Update an agent](/guides/get-started/create-a-project/create-agent#update-an-agent).

## Fallbacks

`models.fallbacks` lists the models to try, in order, when the primary model for
a step fails. Each step has its own list: `stt`, `llm`, and `tts`. A list can mix
`slng/` and BYOK routes, so a hosted model can fall back to your own provider or
the other way around.

<Tabs>
  <Tab title="Dashboard" icon="monitor">
    Open a section (Listen, Think, or Speak) and find **Fallback routing**. Click
    **Add** to append a backup model. The rows are an ordered list, tried top to
    bottom, and each row has controls to reorder or remove it. On Speak, each row
    also picks a voice for the fallback model.

    <Frame caption="Fallback routing on the Speak section: an ordered list of backup models, each with its own voice.">
      <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/reliability-fallback-routing.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=1229ceda49a4221ea04461859662439b" alt="The Fallback routing card on the Speak section with a fallback row: a model picker, a voice picker, and reorder and remove controls" width="1376" height="592" data-path="heroshots/reliability-fallback-routing.png" />
    </Frame>
  </Tab>

  <Tab title="API" icon="code">
    Send the whole `models` object; a `PATCH` replaces it as a unit.

    ```json highlight={7-11} theme={null}
    {
      "models": {
        "stt": "deepgram/nova:3",
        "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
        "tts": "slng/fish/tts:s2.1-pro",
        "tts_voice": "16cabdb7f8d240569aff36c9e480d783",
        "fallbacks": {
          "stt": ["soniox/speech-ai:rt-v5"],
          "llm": ["groq/openai/gpt-oss-120b:latest"],
          "tts": []
        }
      }
    }
    ```
  </Tab>
</Tabs>

For how a route resolves to a hosted or BYOK model, see
[Choose a model route](/guides/integrate/pipecat#choose-a-model-route).

## Per-turn timeouts

Each step has a timeout that bounds how long the agent waits before it gives up
on the primary model and moves to a fallback:

* `models.stt_final_timeout_s`: the wait for a final transcript.
* `models.llm_first_token_timeout_s`: the wait for the model's first token.
* `models.tts_first_audio_timeout_s`: the wait for the first audio chunk.

A `null` value uses the provider default. Set a number to fail faster on a slow
step.

<Tabs>
  <Tab title="Dashboard" icon="monitor">
    Each section's **Advanced settings** card has a timeout field ("STT timeout
    (seconds)" on Listen, "LLM timeout (seconds)" on Think, "TTS timeout
    (seconds)" on Speak). Leave it empty to use the provider default.

    <Frame caption="The per-turn timeout in a section's Advanced settings.">
      <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/reliability-timeout.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=50f5e449e69abea58293691b5767e0d6" alt="The Advanced settings card on the Listen section with the STT timeout field highlighted" width="1376" height="1116" data-path="heroshots/reliability-timeout.png" />
    </Frame>
  </Tab>

  <Tab title="API" icon="code">
    ```json highlight={7} theme={null}
    {
      "models": {
        "stt": "deepgram/nova:3",
        "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
        "tts": "slng/fish/tts:s2.1-pro",
        "tts_voice": "16cabdb7f8d240569aff36c9e480d783",
        "llm_first_token_timeout_s": 5
      }
    }
    ```
  </Tab>
</Tabs>

## Failure audio

`models.failure_audio_enabled` is `true` by default. When a turn cannot be
completed, even after fallbacks, the agent plays a short clip instead of going
silent, so the caller hears that something went wrong. In the dashboard this
toggle lives under **Agent behavior**, not the Listen, Think, or Speak sections.

<Frame caption="The Failure audio toggle under Agent behavior.">
  <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/reliability-failure-audio.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=48b06a28e8058ef4ee4038cdccf3c2d2" alt="The Failure audio toggle under Agent behavior, set to Enabled" width="1026" height="328" data-path="heroshots/reliability-failure-audio.png" />
</Frame>

## Next steps

* [Listen](/guides/agents/configure/listen), [Think](/guides/agents/configure/think),
  and [Speak](/guides/agents/configure/speak): the model and voice for each step.
