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)| Option | Type | Default |
|---|---|---|
apiKey | string | required |
baseUrl | string | https://api.prosodyai.app |
timeoutMs | number | 30000 |
retry | Partial<RetryConfig> | 2 retries, 500 ms initial delay |
headers | Record<string, string> | {} |
debug | boolean | false |
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.
| Option | Type | Default |
|---|---|---|
language | string | automatic |
sessionId | string | generated |
diarize | boolean | true |
prosody | boolean | true |
const result = await prosody.transcribe('./call.wav');realtime.session
realtime.session(options?: RealtimeSessionOptions): LiveSessionCreates 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,
): ProsodyRealtimeStreamCreates 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,
): ProsodySessionSubscribes 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 }>