Voice Chat SDK for Apps and Websites
Add real-time voice chat to your iOS, Android, React Native, or web app with Ethora's open-source voice SDK. 1:1 calls, group voice rooms, push-to-talk, and noise suppression — built on WebRTC, runs on our cloud or your own infrastructure.

Built for real-time voice across every vertical
Ethora's voice chat SDK ships with the same infrastructure that powers our chat, AI, and dedicated-server tiers — so the same SDK fits gaming, healthcare, social, customer support, and enterprise comms.
Gaming & social apps
In-game voice rooms, team channels, push-to-talk, spatial audio via WebRTC. Pair with our gaming chat SDK for a full voice + text stack.
Healthcare & telehealth
HIPAA-ready voice consultations on a self-hosted or dedicated-server deployment. Audit logs, BAA, and data residency controls. See our healthcare chat SDK.
Customer support
Drop-in voice support widget on your site, escalating from text chat to voice without context switching. See the chat widget SDK.
Marketplaces & community
Buyer–seller voice calls, community voice rooms, moderator tooling. Pair with our marketplace chat SDK.
What's in the voice chat SDK
1:1 voice calls with ringtone, accept/decline, in-call status, and reconnection.
Group voice rooms — Discord/Clubhouse style, with raise-hand, mute, kick, room admins.
Push-to-talk mode for gaming and high-noise environments.
WebRTC media transport — low-latency peer-to-peer when possible, TURN-relay fallback.
Noise suppression and echo cancellation via WebRTC's native APIs.
Cross-platform — iOS (Swift), Android (Kotlin / Java), React Native, JavaScript / Web.
Self-hosted or cloud — run on Ethora cloud, dedicated server, or fully self-hosted on AWS / Azure / GCP / on-prem.
Combines with text chat & AI — same SDK ships with text messaging, file transfer, and AI bots.
Open source — full source code on GitHub, AGPL with commercial licensing available.
Add voice chat in minutes
Install via npm / SPM / Gradle and start a 1:1 voice call with a few lines of code.
-
JavaScript / React
javascriptimport { EthoraClient } from '@ethora/sdk'; const client = new EthoraClient({ appId: process.env.ETHORA_APP_ID, appToken: process.env.ETHORA_APP_TOKEN, }); await client.connect(); // Start a 1:1 voice call const call = await client.voice.call('[email protected]'); // Or join a group voice room const room = await client.voice.joinRoom('general-voice'); room.on('participant-joined', (p) => console.log('joined', p.id)); -
iOS (Swift)
swiftimport EthoraSDK let client = EthoraClient(appId: appId, appToken: appToken) try await client.connect() // 1:1 voice call let call = try await client.voice.call(jid: "[email protected]") // Group voice room let room = try await client.voice.joinRoom(id: "general-voice") -
Android (Kotlin)
kotlinval client = EthoraClient(appId, appToken) client.connect() val call = client.voice.call("[email protected]") val room = client.voice.joinRoom("general-voice")