Camb.AI exposes public WebSocket channels for real-time voice AI in addition to its REST API. Three streaming surfaces are documented: live text-to-speech (stream text in, receive synthesized audio and optional word-level timestamps), live transcription (stream raw audio in, receive cumulative interim transcripts and typed events), and realtime speech-to-speech translation (stream audio in, receive transcripts, translated text, and translated audio). Connections are persistent and bidirectional over secure WebSocket (wss). Channels are authenticated with the same x-api-key credential used by the REST API. The exact WebSocket host and channel paths should be confirmed against the current documentation at https://docs.camb.ai; they are modeled here from the public endpoint listing.
View SpecView on GitHubArtificial IntelligenceText-to-SpeechDubbingTranslationTranscriptionVoice CloningSpeechAsyncAPIEventsWebSockets
Channels
live-tts
publishsendTtsText
Send text to synthesize.
Real-time streaming text-to-speech. The client streams text; the server returns synthesized audio chunks and optional word-level timestamps.
listen
publishsendAudioForTranscription
Stream raw audio frames.
Live transcription. The client streams raw audio; the server returns cumulative interim transcripts, word-level timing, and typed events.
realtime
publishsendAudioForTranslation
Stream source-language audio frames.
Realtime speech-to-speech translation. The client streams audio in one language; the server returns transcripts, translated text, and translated synthesized audio.
Messages
✉
TtsInput
TTS text input
✉
TtsOutput
TTS audio output
✉
AudioInput
Raw audio input
✉
TranscriptEvent
Transcript event
✉
TranslationEvent
Translation event
Servers
wss
productionclient.camb.ai/apis
Camb.AI production WebSocket. Secure WebSocket (wss) only.
asyncapi: 2.6.0
info:
title: Camb.AI Realtime WebSocket API
version: '1.0'
description: >-
Camb.AI exposes public WebSocket channels for real-time voice AI in addition
to its REST API. Three streaming surfaces are documented: live text-to-speech
(stream text in, receive synthesized audio and optional word-level timestamps),
live transcription (stream raw audio in, receive cumulative interim transcripts
and typed events), and realtime speech-to-speech translation (stream audio in,
receive transcripts, translated text, and translated audio). Connections are
persistent and bidirectional over secure WebSocket (wss). Channels are
authenticated with the same x-api-key credential used by the REST API. The
exact WebSocket host and channel paths should be confirmed against the current
documentation at https://docs.camb.ai; they are modeled here from the public
endpoint listing.
servers:
production:
url: client.camb.ai/apis
protocol: wss
description: Camb.AI production WebSocket. Secure WebSocket (wss) only.
security:
- apiKey: []
defaultContentType: application/json
channels:
live-tts:
description: >-
Real-time streaming text-to-speech. The client streams text; the server
returns synthesized audio chunks and optional word-level timestamps.
publish:
operationId: sendTtsText
summary: Send text to synthesize.
message:
$ref: '#/components/messages/TtsInput'
subscribe:
operationId: receiveTtsAudio
summary: Receive synthesized audio and timing events.
message:
$ref: '#/components/messages/TtsOutput'
listen:
description: >-
Live transcription. The client streams raw audio; the server returns
cumulative interim transcripts, word-level timing, and typed events.
publish:
operationId: sendAudioForTranscription
summary: Stream raw audio frames.
message:
$ref: '#/components/messages/AudioInput'
subscribe:
operationId: receiveTranscript
summary: Receive interim and final transcripts and events.
message:
$ref: '#/components/messages/TranscriptEvent'
realtime:
description: >-
Realtime speech-to-speech translation. The client streams audio in one
language; the server returns transcripts, translated text, and translated
synthesized audio.
publish:
operationId: sendAudioForTranslation
summary: Stream source-language audio frames.
message:
$ref: '#/components/messages/AudioInput'
subscribe:
operationId: receiveTranslatedAudio
summary: Receive transcripts, translated text, and translated audio.
message:
$ref: '#/components/messages/TranslationEvent'
components:
securitySchemes:
apiKey:
type: httpApiKey
in: header
name: x-api-key
description: The same API key used for the REST API.
messages:
TtsInput:
name: ttsInput
title: TTS text input
contentType: application/json
payload:
type: object
properties:
text:
type: string
description: A chunk of text to synthesize.
voice_id:
type: integer
language:
type: string
flush:
type: boolean
description: Signal that buffered text should be synthesized now.
TtsOutput:
name: ttsOutput
title: TTS audio output
contentType: application/json
payload:
type: object
properties:
type:
type: string
description: Event type, for example audio or timestamps.
audio:
type: string
description: Base64-encoded audio chunk.
timestamps:
type: array
description: Optional word-level timing information.
items:
type: object
AudioInput:
name: audioInput
title: Raw audio input
contentType: application/octet-stream
payload:
type: string
format: binary
description: A raw audio frame (for example PCM) streamed to the server.
TranscriptEvent:
name: transcriptEvent
title: Transcript event
contentType: application/json
payload:
type: object
properties:
type:
type: string
description: Event type, for example interim, final, or error.
transcript:
type: string
words:
type: array
items:
type: object
TranslationEvent:
name: translationEvent
title: Translation event
contentType: application/json
payload:
type: object
properties:
type:
type: string
description: Event type, for example transcript, translation, or audio.
transcript:
type: string
translated_text:
type: string
audio:
type: string
description: Base64-encoded translated audio chunk.
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.