ProsodyAI Docs
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();
MethodDescription
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.

On this page