Skip to content

Universal-3.5 Pro Realtime

assemblyai/universal-3.5-pro-realtime

Streaming version of Universal-3.5 Pro, released June 2026, that uses the voice agent's last question and earlier turns as context and offers min_latency, balanced and max_accuracy modes. Universal-3.6 Pro Realtime superseded it in September 2026.

API
import WebSocket from "ws";
import { readFile } from "node:fs/promises";

// Use mono, 16 kHz, signed 16-bit little-endian PCM.
const audio = await readFile("recording.pcm");
const url = new URL("/v1/audio/transcriptions/stream", process.env.AUDIOLAB_API_URL);
url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
const socket = new WebSocket(url, {
  headers: { Authorization: `Bearer ${process.env.AUDIOLAB_API_KEY}` },
});
socket.on("open", () => socket.send(JSON.stringify({
  type: "session.start", model: "assemblyai/universal-3.5-pro-realtime",
  encoding: "pcm_s16le", sample_rate: 16000, channels: 1,
})));
socket.on("message", (data) => {
  const event = JSON.parse(data.toString());
  console.log(event);
  if (event.type === "session.started") {
    for (let offset = 0; offset < audio.length; offset += 3200)
      socket.send(audio.subarray(offset, offset + 3200));
    socket.send(JSON.stringify({ type: "session.finish" }));
  }
});
Input Price
$0.0064 / minute
Output Price
—
Input
Audio
Output
Text

Capabilities

Explore what Universal-3.5 Pro Realtime supports, then use the API section for a request tailored to this model.

StreamDiarizationWord timestampsConfidence

Languages

Multilingual

Model Information

Provider
AssemblyAI
Product
Speech-to-Text
Release Date
Jun 23, 2026
Data Policy
Not specified
Region
Global
Input
Audio
Output
Text
Provider Documentation

Playground

Try Universal-3.5 Pro Realtime by AssemblyAI. Requests use the selected workspace’s credits and API pricing.

Universal-3.5 Pro RealtimeCredits —
Universal-3.5 Pro Realtime
This model uses a dedicated input format. Explore its API example or open the supported playground.

Providers

Compare available endpoints, pricing, and context limits for Universal-3.5 Pro Realtime.

ProviderContextOutputInput PriceOutput PriceEndpoint
AssemblyAINot specifiedText$0.0064 / minute—
assemblyai/universal-3.5-pro-realtime:assemblyai

Prices are catalog rates. Your workspace’s estimate and endpoint pricing determine the final charge.

Input and Output Limits

Formats and limits AudioLab enforces on each request.

LimitValue
Max bytesNot specified
Max secondsNot specified
Formats

Provider Notes

Universal 3.5 Pro, Universal 3 Pro, and Universal 2 are asynchronous batch products. assemblyai/universal-3.5-pro-realtime streams with AssemblyAI's Universal-3.5 Pro (speech_model universal-3-5-pro); Whisper Realtime and both Universal Streaming variants are also streaming-only products with separate prices and parameter sets. Realtime language is selected by the speech model or language_detection—language_code is a pre-recorded-only field. AudioLab rejects Universal-3.5 Pro prompting and voice-focus controls on the other realtime models.

Performance

Status

Current catalog availability. Your workspace’s access is checked separately before a request runs.

Getting Started

Use your workspace API key and the exact model identifier below. Set the API URL to the endpoint shown in your workspace and keep credentials on your server.

API
import WebSocket from "ws";
import { readFile } from "node:fs/promises";

// Use mono, 16 kHz, signed 16-bit little-endian PCM.
const audio = await readFile("recording.pcm");
const url = new URL("/v1/audio/transcriptions/stream", process.env.AUDIOLAB_API_URL);
url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
const socket = new WebSocket(url, {
  headers: { Authorization: `Bearer ${process.env.AUDIOLAB_API_KEY}` },
});
socket.on("open", () => socket.send(JSON.stringify({
  type: "session.start", model: "assemblyai/universal-3.5-pro-realtime",
  encoding: "pcm_s16le", sample_rate: 16000, channels: 1,
})));
socket.on("message", (data) => {
  const event = JSON.parse(data.toString());
  console.log(event);
  if (event.type === "session.started") {
    for (let offset = 0; offset < audio.length; offset += 3200)
      socket.send(audio.subarray(offset, offset + 3200));
    socket.send(JSON.stringify({ type: "session.finish" }));
  }
});
Read the Endpoint Reference

Request Parameters

Available parameters depend on the provider and request format. The endpoint reference explains accepted values and required fields.

ParameterDetails
modelassemblyai/universal-3.5-pro-realtime — Required model identifier.
audio_start_from / audio_end_atView Accepted Values
language_codes / language_detection / language_detection_optionsView Accepted Values
custom_spelling / auto_highlights / entity_detectionView Accepted Values
content_safety / iab_categories / sentiment_analysis / speech_understandingView Accepted Values
multichannel / speakers_expected / speaker_optionsView Accepted Values
redact_pii* / redact_static_entitiesView Accepted Values
punctuate / format_text / filter_profanity / disfluenciesView Accepted Values
webhook_url / webhook auth fields (batch)View Accepted Values
agent_context / voice_focus / prompt / mode (Universal-3.5 Pro Streaming)View Accepted Values
turn silence and confidence controls (realtime)View Accepted Values
language_detection / max_speakers (realtime)View Accepted Values

Input and Output Limits

Formats and limits AudioLab enforces on each request.

LimitValue
Max bytesNot specified
Max secondsNot specified
Formats

Similar Models

Explore more speech-to-text and compare their capabilities.

ModelContextInput PriceOutput Price
Universal-3.5 Pro SyncAssemblyAINot specified$0.0064 / minute—
Universal-3.5 ProAssemblyAINot specified$0.003 / minute—
Whisper RealtimeAssemblyAINot specified$0.0021 / minute—
Universal-3 ProAssemblyAINot specified$0.003 / minute—
Universal-Streaming (Multilingual)AssemblyAINot specified$0.0021 / minute—
Universal-Streaming (English)AssemblyAINot specified$0.0021 / minute—
View All Speech-to-Text