TypeScript SDK
Streaming
Chunked batch PCM and WebSocket streaming
Two modes. Same psk_* key. See Integration.
Chunked batch (createStream)
Buffers PCM locally and posts to /v1/analyze/audio every chunkDuration seconds (default 3). Use for offline or non-WebSocket pipelines — not for live agent sidecars.
const client = new ProsodyClient({
apiKey: process.env.PROSODY_API_KEY!,
});
const stream = client.createStream({
sampleRate: 16000,
chunkDuration: 3,
onResult: (result) => console.log(result.valence, result.signals),
onError: console.error,
});
stream.push(pcmSamples);
await stream.flush();| Method | Description |
|---|---|
push(samples) | Append Float32 / Int16 PCM |
flush() | Analyze the remainder |
clear() | Drop the buffer |
WebSocket (createRealtimeStream)
Connects to wss://api.prosodyai.app/v1/stream/realtime. Use for live calls and agent steering.
const client = new ProsodyClient({
apiKey: process.env.PROSODY_API_KEY!,
});
const stream = client.createRealtimeStream({
sessionId: 'call-123',
sampleRate: 16000,
onResult: (result) => console.log(result.valence, result.signals, result.text),
onTranscript: (t) => console.log(t.turns),
onEscalationAlert: (a) => console.warn(a.recommended_tone),
onError: console.error,
});
await stream.connect();
stream.send(pcmInt16);
await stream.end();
stream.close();With sessionId set, the stream can return a session transcript at end and persist history for your org.
The local demo uses this WebSocket path with PROSODY_API_KEY alongside OpenAI Realtime.
PCM format
Both paths expect 16 kHz mono PCM (Int16Array or Float32Array). Convert browser WebM / Opus before sending.