# Force End Turn

Voice Agent

The `ForceEndTurn` message is a JSON message that ends the current turn immediately.

:::callout{intent="warning"}
`ForceEndTurn` requires a Deepgram V2 (Flux) listen provider — set `agent.listen.provider.version` to `v2` in the [`Settings`](/guides/self-hosted-deployments-3-voice-agent-settings) message. With any other listen provider the server replies with a [`FORCE_END_TURN_UNSUPPORTED`](/guides/self-hosted-deployments-3-voice-agent-errors-warnings#warning-codes) warning and the turn does not end.
:::

## Purpose

Some turn endings are unambiguous and don't require the model to infer them. `ForceEndTurn` gives your application an explicit override:

- **Push-to-talk release** — the user holds a button to speak and releases when done.
- **DTMF tones and IVR events** — a keypad press or menu selection ends the turn.
- **UI actions** — a "send" button or other application event marks the utterance complete.
- **Your own turn detection** — you run a VAD or endpointing stack and want to own turn taking entirely. Pair `ForceEndTurn` with `eot_threshold: 1.0` to suppress natural end-of-turn detection. See [Bring Your Own Turn Detection](/guides/streaming-audio-flux-own-turn-detection).

## Example Payloads

To send the `ForceEndTurn` message, send the following JSON message to the server. The message has no additional fields — it applies to the turn currently in progress.

**`JSON`**

```json JSON
{
  "type": "ForceEndTurn"
}
```

The agent ends the turn as if end-of-turn had been detected naturally: the [`ConversationText`](/guides/self-hosted-deployments-3-voice-agent-conversation-text) message for the user turn is sent, followed by [`AgentThinking`](/guides/self-hosted-deployments-3-voice-agent-agent-thinking) and the agent's spoken response.

## Behavior

- No turn in progress — the message is ignored. No turn ends and no warning is sent.
- Listen provider is not Deepgram V2 (Flux) — the server sends a `FORCE_END_TURN_UNSUPPORTED` warning and the turn does not end.
- Repeated messages — the first ends the turn; later messages arrive with no turn in progress and are ignored.

## Related Resources

- [Flux Force End Turn](/guides/streaming-audio-flux-force-end-turn) - The underlying Flux `ForceEndTurn` control message
- [Bring Your Own Turn Detection](/guides/streaming-audio-flux-own-turn-detection) - Own turn taking with `eot_threshold: 1.0` and `ForceEndTurn`
- [Update Listen](/guides/self-hosted-deployments-3-voice-agent-update-listen) - Adjust end-of-turn thresholds mid-session
- [Errors & Warnings](/guides/self-hosted-deployments-3-voice-agent-errors-warnings) - `FORCE_END_TURN_UNSUPPORTED` and other warning codes

## Related pages

- [Inputs: Client Messages](./self-hosted-deployments-3-voice-agent-inputs.md)
- [Settings](./self-hosted-deployments-3-voice-agent-settings.md)
- [Update Listen](./self-hosted-deployments-3-voice-agent-update-listen.md)
- [Update Think](./self-hosted-deployments-3-voice-agent-update-think.md)
- [Update Speak](./self-hosted-deployments-3-voice-agent-update-speak.md)
- [Update Prompt](./self-hosted-deployments-3-voice-agent-update-prompt.md)
- [Inject Agent](./self-hosted-deployments-3-voice-agent-inject-agent-message.md)
- [Inject User](./self-hosted-deployments-3-voice-agent-inject-user-message.md)
- [Agent Keep Alive](./self-hosted-deployments-3-agent-keep-alive.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
