config.stt is one {provider, model} pair from the catalog’s stt array, plus an optional fallback. It decides how the caller is transcribed and what ends their turn: there is no turn-detection setting, it follows from the model and config.language. Voice and video cascade agents; a text agent’s optional stt only transcribes voice notes. There is no language on stt.

Streaming or batch

The catalog entry’s streaming flag decides it. A fallback must have the same streaming value as the primary. OpenRouter speech-to-text models are all batch.

What ends a turn

GET /v1/catalog returns turn_detector_languages (14 languages, including English, Hindi, Spanish, Chinese and Arabic). Matching uses the primary subtag, so en-IN and pt-BR qualify. A batch model with one of those languages is the only pipeline that judges meaning rather than silence. A realtime model detects turns inside the provider; see realtime models.

Endpointing per model

turn_handling.endpointing has two fields (defaults and limits in turn handling):
  • max_silence_duration is used only by the end-of-turn model, so only on a batch model with a covered language. Elsewhere it is ignored.
  • min_silence_duration always applies, but what it controls depends on the model:
The same value tunes the local voice detector for the whole call.

Fixing mistimed turns

Next

Language

How Auto behaves per model.

Turn handling

Interruptions, endpointing defaults and preemptive generation.