Get Started
Before we begin, make sure you have an AssemblyAI account and an API key. You can sign up for a free account and get your API key from your dashboard.Quick upgrade
If you’re already using Universal Streaming, you can quickly test Universal-3.5 Pro Streaming by switching thespeech_model parameter to "universal-3-5-pro" and removing format_turns (formatting is always on in U3.5 Pro). Just update the connection params and start streaming.
That’s it for a quick test. But there are important behavioral differences
in turn detection, partials, and formatting that may require updates to your
message handling logic. Read on for the full migration details.
Why upgrade
Universal-3.5 Pro Streaming delivers:- Exceptional entity accuracy — credit card numbers, phone numbers, email addresses, physical addresses, and names captured correctly at streaming speed
- Promptable model — contextual prompting via
prompt(describe what the audio is about), plus domain-term boosting viakeyterms_prompt(up to 100 terms) - Better turn detection — punctuation-based system that waits when speakers pause mid-thought and responds when they’re done
- Native multilingual code-switching — English, Spanish, German, French, Portuguese, Italian in a single model
- Sub-300ms latency — fast time to complete transcript
- Mid-stream configuration — update keyterms, prompts, and silence parameters without dropping the connection
What changes
This table covers the key parameter, behavior, and response field differences. Use it as a migration checklist.
Sources: U3.5 Pro docs, Universal docs, Turn detection docs, API Reference
Side-by-side code
Full working Python examples side by side using rawwebsocket-client.
- Universal Streaming
- Universal-3.5 Pro Streaming
Turn detection
This is the most significant behavioral difference between the two models. Universal Streaming uses a confidence-based system combining semantic and acoustic detection (source):
The model evaluates
end_of_turn_confidence during silence. If the score exceeds end_of_turn_confidence_threshold after min_turn_silence, the turn ends. Otherwise, the turn is forced to end after max_turn_silence.
Universal-3.5 Pro uses a punctuation-based system (source):
When silence reaches
min_turn_silence, the model transcribes the audio and checks for terminal punctuation (. ? !):
- Terminal punctuation found — the turn ends (
end_of_turn: true) - No terminal punctuation — a partial is emitted (
end_of_turn: false) and the turn continues - Silence reaches
max_turn_silence— the turn is forced to end regardless of punctuation
New capabilities
These features are new or enhanced in Universal-3.5 Pro. For full details, see Universal-3.5 Pro Streaming.Prompting
Universal-3.5 Pro supports aprompt parameter for contextual prompting — a natural-language description of what the audio is about (domain, scenario, or full details). Transcription behavior itself is built in and optimized for streaming and turn detection. See the Prompting Guide for details.
Keyterms prompting
Boost recognition of specific names, brands, or domain terms. Maximum 100 keyterms, each 50 characters or less. See Keyterms Prompting for details.Mid-stream configuration updates
Updateprompt, keyterms_prompt, min_turn_silence, and max_turn_silence during an active session without reconnecting. See Updating configuration mid-stream for details.
Force turn end
ForceEndpoint is supported on both Universal Streaming and Universal-3.5 Pro — no migration changes needed. Force the current turn to end immediately based on external signals. See Forcing a turn endpoint for details.
Language support
Universal Streaming transcribes English by default. For multilingual support, usespeech_model: "universal-streaming-multilingual". (Source)
Universal-3.5 Pro natively code-switches between 18 languages in a single model — no separate multilingual model needed: English, Spanish, German, French, Portuguese, Italian, Turkish, Dutch, Swedish, Norwegian, Danish, Finnish, Hindi, Vietnamese, Arabic, Hebrew, Japanese, and Mandarin. It also supports automatic language detection, returning language_code and language_confidence fields in Turn messages. To bias toward the languages you expect, pass the language_codes connection parameter with a list of codes (a single-element list for one language) (Language selection). See Supported languages for the full list.
Language Detection: Universal Streaming supports the language_detection connection parameter (true/false, default false) with the multilingual model. When enabled, Turn messages include language_code and language_confidence fields. Universal-3.5 Pro also supports language detection with code-switching — see Supported languages for details.