Force End Turn
Flux detects the end of a turn natively. The ForceEndTurn message lets you override that detection and end the current turn immediately, on your own signal. Flux ends the turn on the audio transcribed so far and emits a standard EndOfTurn message.
Turn-taking modes
ForceEndTurn and eot_threshold together give you a spectrum of control over how turns end, and you can move between these modes mid-stream with a Configure message:
- Automatic — Flux’s native end-of-turn detection decides (the default).
EndOfTurncarries"trigger": "model". - Semi-manual — keep native detection running and override it with
ForceEndTurnwhenever you have a definitive signal. The model handles the ambiguous endings; you handle the unambiguous ones. - Fully manual — set
eot_threshold=1.0to suppress native detection entirely and drive every turn ending withForceEndTurn. See Bring Your Own Turn Detection.
Because eot_threshold can be changed on the fly with Configure, you can switch modes for a single turn — for example, raise it to 1.0 while a caller reads a fixed-length account ID so Flux won’t end the turn early, then lower it again for natural conversation.
Purpose
Some turn endings are unambiguous and don’t require the model to infer them. ForceEndTurn gives you an explicit override for these cases:
- Push-to-talk release — the user holds a button to speak and releases when done. The release is a definitive turn-end signal.
- 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.
- Application timeouts — your own logic decides the turn is over.
- External turn detection — you already run a VAD or endpointing stack and want to keep it while adopting Flux for transcription. See Bring Your Own Turn Detection.
Send a ForceEndTurn message
Send the following JSON as a WebSocket text frame. The message has no additional fields — it operates on the turn currently in progress.
Response
When a turn is active, the server responds with a standard EndOfTurn message. The trigger field is set to manual, and the transcript reflects all audio received before the ForceEndTurn message arrived.
The response behaves exactly like a natural EndOfTurn, with two things to note:
transcriptreflects the audio transcribed so far.ForceEndTurnends the turn on the latest transcription rather than triggering an additional decode pass, so the transcript matches the most recentUpdate. Audio received afterForceEndTurnbelongs to the next turn.end_of_turn_confidenceis the model’s actual confidence at the moment you forced the end — it is not inflated to1.0. In the example above,0.35shows the model was well short of ending the turn on its own. Use it as diagnostic data.
After the EndOfTurn, turn_index increments and Flux is ready for the next StartOfTurn — the same post-turn state as a natural end-of-turn.
The trigger field
trigger is present on every EndOfTurn event and only there. It states what caused the turn to end.
trigger is an open set — new values may be added, so handle unrecognized ones gracefully.
Behavior and edge cases
Related Resources
- Bring Your Own Turn Detection - Keep your existing turn detection and drive Flux turns with
ForceEndTurn - End-of-Turn Detection Parameters - Tune
eot_threshold,eager_eot_threshold, andeot_timeout_ms - Configure - Update stream configuration mid-stream
- Close Stream - Close the WebSocket stream
- Understanding the Flux State Machine - Turn events and state transitions
- Getting Started with Flux - Quickstart guide with basic configuration