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

# Conversation flow

> Configure first-message interruptions and soft timeouts, then review the saved turn settings on an agent version.

Conversation-flow settings describe when an agent should wait, respond, or allow an interruption. This guide updates the first-message and soft-timeout controls that the dashboard saves, then shows where the remaining turn settings belong in the API.

<Note>
  This guide ends with a reviewed configuration. Conversation execution is currently gated, so saving these values does not demonstrate timing or interruption behavior in a live session. See [current availability](/agents-platform/overview#current-availability).
</Note>

## Before you begin

Open an agent you can edit in the intended workspace and select its branch. Preserve voice or custom-model changes in a complete server draft; those publication paths are unavailable. Managed text-only publication has model, resource, and workflow validation. See [versions and drafts](/agents-platform/deploy/versioning) for the appropriate workflow.

## Configure the saved dashboard controls

<Steps>
  <Step title="Review the opening message" id="flow-opening-message">
    Open the agent's **Agent Configuration** page. Write a short **First message** that matches the task, or leave it empty to express that the user should speak first.

    Review **Interruptible** beside the first-message editor. When enabled, the stored `conversation_config.agent.disable_first_message_interruptions` value is `false`. Turning it off stores `true`. This control applies to the opening message, not every agent response. Use a wider desktop window if the control is hidden.
  </Step>

  <Step title="Open the soft-timeout settings" id="flow-soft-timeout">
    In the **LLM** section, open the selected model's settings, then select **Soft timeout**. Turn on **Enable soft timeout** to configure a filler message for a delayed model response.

    When no earlier duration is available, enabling the setting starts at 2 seconds. **Timeout duration** accepts 0.5–8 seconds. Turning the setting off stores `timeout_seconds: -1`.

    <Frame caption="Screenshot pending: the saved Soft timeout controls. Follow the written steps above.">
      <img src="https://mintcdn.com/threetonelabs-c2efc9c8/-FnvNeuT_PFanG1t/images/placeholders/screenshot-pending.svg?fit=max&auto=format&n=-FnvNeuT_PFanG1t&q=85&s=b29809bcbd6979cc43ace35853669b46" alt="Screenshot pending for the Soft timeout settings. This is a placeholder, not a dashboard screenshot." width="1600" height="1000" loading="lazy" noZoom data-path="images/placeholders/screenshot-pending.svg" />
    </Frame>
  </Step>

  <Step title="Choose filler copy" id="flow-filler-copy">
    For static copy, edit **First message** inside the Soft timeout sheet and optionally add more messages. This is the first filler message, separate from the agent's opening message. **Randomize filler order** becomes available when you add another filler.

    Alternatively, enable **Use LLM-generated message**. Review **Maximum filler messages**, **Override soft timeout prompt**, and **Fallback message**. Enable **Wait for first user message** if the saved configuration should defer fillers until the user has spoken.

    Keep the copy brief and avoid implying that an external action has completed. These controls save the requested behavior; runtime delivery still requires a supported execution path.
  </Step>

  <Step title="Save and read back" id="flow-read-back">
    Review the first-message interruption value and `conversation_config.turn.soft_timeout_config` in the complete snapshot, then save a server draft. For eligible managed text-only publication, inspect **Review Changes** and confirm the branch before submitting a **Commit message**.

    Inspect the saved draft or eligible published version and confirm the values. For an API check, use [Get agent](/api-reference/agents-platform/get-agent) with the selected branch and the appropriate read options. Retain the configuration identifiers for later runtime testing.
  </Step>
</Steps>

## Soft-timeout fields

The following paths are relative to `conversation_config.turn.soft_timeout_config`.

| Field | Default and accepted configuration |
| - | - |
| `timeout_seconds` | `-1` disables the setting. The dashboard accepts 0.5–8 seconds when enabled. |
| `message` | `"Hhmmmm...yeah."`; 1–200 characters. Used for static first-filler copy or the generated mode's fallback. |
| `additional_soft_timeout_messages` | Empty list; at most 7 additional static messages. |
| `use_llm_generated_message` | `false`; selects static or generated filler intent. |
| `randomize_fillers` | `false`; applies to static fillers. |
| `max_soft_timeouts_per_generation` | `1`; integer from 1 to 8. |
| `llm_generated_message_prompt_override` | `null`; an override must contain 1–1000 characters. |
| `disable_until_first_user_message` | `false`. |

The dashboard's duration range is an editor constraint. Use the generated [Update agent schema](/api-reference/agents-platform/update-agent) for the complete API contract.

## Other turn settings through the API

The main **Agent behavior** presets are labelled as previews and do not save changes. The **Advanced** tab on the Security page also displays disabled example settings. Use the API to author the following base-agent fields, and read the resulting values back.

These paths are relative to `conversation_config.turn`.

| Field | Default | Configuration purpose |
| - | - | - |
| `turn_timeout` | `7` | Requested wait, in seconds, before re-engaging a silent user. |
| `initial_wait_time` | `null` | Opening wait when the first message is empty; unset uses the regular turn timeout. |
| `silence_end_call_timeout` | `-1` | Requested silence limit before ending a call. |
| `turn_eagerness` | `normal` | Choose `patient`, `normal`, or `eager`. |
| `spelling_patience` | `auto` | Choose `auto` or `off`. |
| `speculative_turn` | `false` | Request earlier response generation while a turn is being detected. |
| `interruption_ignore_terms` | `[]` | Terms configured not to trigger interruptions. |
| `interruption_ignore_term_languages` | `[]` | Languages associated with configured ignore-term presets. |
| `merge_with_default_ignore_terms` | `false` | Request preset terms alongside custom terms. |
| `transcribe_on_disabled_interruptions` | `false` | Request transcription while interruptions are disabled. |

The schema also includes `mode` (`silence` or `turn`, default `turn`), `turn_model` (`turn_v2` or `turn_v3`, default `turn_v3`), and `retranscribe_on_turn_timeout` (default `false`). Their presence in a saved document does not establish runtime support.

The total-duration setting is separate: `conversation_config.conversation.max_duration_seconds` defaults to `600`. Its optional closing copy is `conversation_config.agent.max_conversation_duration_message`, which defaults to an empty string.

Use [Update agent](/api-reference/agents-platform/update-agent) with an explicit `branch_id` when changing conversation configuration. For a complete server draft, preserve the selected version's other fields and follow [versions and drafts](/agents-platform/deploy/versioning).

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Why did the Agent behavior preset disappear after reopening?" id="faq-flow-preview-preset">
    That picker is a local preview. Use the saved controls described above or the corresponding API fields, then inspect the published version. Preview selections are not evidence of a configuration change.
  </Accordion>

  <Accordion title="Does Interruptible control every response?" id="faq-flow-first-message-interruption">
    No. The switch beside First message updates only `disable_first_message_interruptions`. Review other turn fields separately; do not infer a conversation-wide interruption setting from that switch.
  </Accordion>

  <Accordion title="Does a soft timeout end the conversation?" id="faq-flow-timeout-types">
    The soft-timeout configuration describes filler feedback while waiting for a model response. Turn silence and total conversation duration use separate fields. Saving any of them does not verify live timing behavior.
  </Accordion>

  <Accordion title="How do I verify the change today?" id="faq-flow-verification">
    Compare the published configuration with the intended values and record its version ID. Keep timing and interruption scenarios for a later execution test when the runtime path is available.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.