Reference

ProsodyClient

Constructor and method reference

Constructor

import { ProsodyClient } from '@prosodyai/sdk';

const prosody = new ProsodyClient({
  apiKey: process.env.PROSODY_API_KEY!,
});
new ProsodyClient(config: ProsodyClientConfig | string)
OptionTypeDefault
apiKeystringrequired
baseUrlstringhttps://api.prosodyai.app
timeoutMsnumber30000
retryPartial<RetryConfig>2 retries, 500 ms initial delay
headersRecord<string, string>{}
debugbooleanfalse
onRequest(url, init) => void—
onResponse(url, response) => void—

A string config is shorthand for the API key:

const prosody = new ProsodyClient(process.env.PROSODY_API_KEY!);

transcribe

transcribe(
  audio: string | Buffer,
  options?: TranscribeOptions,
  signal?: AbortSignal,
): Promise<Transcription>

audio accepts a local path, an HTTPS URL, or a Node.js Buffer.

OptionTypeDefault
languagestringautomatic
sessionIdstringgenerated
diarizebooleantrue
prosodybooleantrue
const result = await prosody.transcribe('./call.wav');

realtime.session

realtime.session(options?: RealtimeSessionOptions): LiveSession

Creates a stateful realtime session that owns the WebSocket and maintains a Conversation.

const session = prosody.stream.session({
  encoding: 'pcm16',
  sampleRate: 16_000,
  onUpdate: (current) => render(current.snapshot()),
});

realtime.connect

realtime.connect(
  handlers?: ProsodyRealtimeHandlers,
  options?: RealtimeConnectOptions,
): ProsodyRealtimeStream

Creates the low-level realtime transport. Handlers receive parsed wire events and AcousticWindow objects.

livekit.createSession

The livekit transport carries audio over a LiveKit room instead of the Prosody WebSocket. The agent worker side runs the livekit-plugins-prosodyai Python plugin.

livekit.createSession(
  options?: RealtimeSessionCreateOptions,
  signal?: AbortSignal,
): Promise<RealtimeSessionCredentials>

Creates a LiveKit room and participant token. Call it from a trusted server.

livekit.attach

livekit.attach(
  room: LiveKitRoomLike,
  options: ProsodySessionOptions,
): ProsodySession

Subscribes to prosody.events.v1 on a connected LiveKit room.

speakers

speakers.list(
  limit?: number,
  signal?: AbortSignal,
): Promise<SpeakerDirectoryResult>

speakers.previewEnrollment(
  audio: string | Buffer,
  signal?: AbortSignal,
): Promise<VoiceEnrollmentPreview>

speakers.confirmEnrollment(
  audio: string | Buffer,
  previewSha256: string,
  mappings: VoiceEnrollmentMapping[],
  signal?: AbortSignal,
): Promise<VoiceEnrollmentResult>

previewEnrollment returns diarized lanes without writing identity. confirmEnrollment persists the supplied lane-to-speaker mappings.

feedback

submitCorrection(
  options: FeedbackCorrectionOptions,
  signal?: AbortSignal,
): Promise<{ status: string }>

submitSessionOutcome(
  options: SessionOutcomeOptions,
  signal?: AbortSignal,
): Promise<{ status: string }>

On this page