Real-time Communication SDK

Make and answer calls in your app, on every phone and computer.

Voice and video calls, system incoming-call screens, push wake-up and call states are already integrated for iOS, Android, Web, React Native and Expo. Calls run with zero latency, and international calls stay just as immediate across more than 130 countries and territories. Your team builds the product; dialing, ringing, answering and the media connection are ours.

From dialing to connected

The caller sees each stage as it happens: contacting the other device, ringing, connected. The person called gets an incoming call to answer or decline.

  • Caller: the other device is ringing
  • Person called: answer or decline
  • Connected: two-way audio and video

Integrated on every OS

Web uses the browser's own WebRTC; iOS and Android ship a pinned open-source media runtime. Call screens, ringtones and audio routing are implemented on every platform.

iOS (Swift Package · iOS 16+)

CallKit incoming calls, PushKit wake-up and AVAudioSession routing: answer from the lock screen like any phone call.

Android (AAR modules)

Telecom full-screen incoming calls, FCM wake-up, and earpiece, speaker and Bluetooth routing through AudioManager.

Web (ESM / UMD · TypeScript)

Modern browsers on Windows, macOS, Linux and phones: place and answer calls with nothing to install.

React Native · Expo (Native call layer included)

One codebase for iOS and Android with the native call layer (system incoming calls, ringtones, audio routing) built in; Expo gets a config plugin.

Everything a phone call needs, built in

System incoming calls

Incoming calls use CallKit on iOS and a full-screen notification on Android: the same answer experience as an ordinary call.

Wake-up in the background

When your app is not in the foreground, APNs or FCM wakes it and the phone rings on the lock screen.

Clear call states

Contacting, ringing, connected: every step raises an event, and a call nobody answers is closed as missed on its own.

Multi-device ringing

One person signed in on several devices rings on all of them; the first to answer takes the call and the rest stop ringing.

Tones and audio routing

Ringback for the caller and a ringtone for the person called, with silent and vibrate modes honoured; switch between earpiece, speaker and Bluetooth.

Call quality you can see

Every participant reports network samples; the console charts round-trip time, jitter, packet loss and a call quality score.

From calls to meetings

The same platform grows into group meetings with captions, recording and post-meeting summaries.

Server API in seven languages

Start calls, read their state and receive webhooks from your backend, with examples in cURL, Node.js, PHP, Python, Go, C# and Java.

Take only what you need

Already have dialing or push? Keep it. Each layer can be used on its own.

  1. Media core only: Your app already dials, pushes and has its UI; you need dependable audio and video.
  2. Add signaling: You have the UI and need online presence and call signaling.
  3. Add system calls: You have push and need CallKit or Android Telecom incoming screens.
  4. Fully managed: Signaling, push wake-up, the incoming screen and media, all from the SDK.

Frequently asked questions

Which platforms does the calling SDK support?

iOS, Android, Web, React Native and Expo. React Native shares one codebase for iOS and Android with the native call layer built in, and Expo gets a config plugin.

Does the phone ring when the app is closed or the screen is locked?

Yes. On iOS a VoIP push (PushKit) wakes the app and CallKit shows the system incoming-call screen; on Android FCM wakes the app and Telecom shows a full-screen incoming call. The person answers from the lock screen like any phone call.

Can I keep my own signaling, push or call UI?

Yes. Take only the media core, add signaling, add the system incoming-call screens, or use the fully managed path where the SDK handles signaling, push wake-up, the incoming screen and media.

What happens if nobody answers, or the person has several devices?

A call nobody answers is closed as missed on its own. A person signed in on several devices rings on all of them; the first to answer takes the call and the rest stop ringing.

How does my backend start calls?

Through the server API: start calls, read their state and receive webhooks, with examples in cURL, Node.js, PHP, Python, Go, C# and Java.

Tell us what you are building.

We reply with the integration path, a test account and pricing for your volume.

Contact us

The Streaming CDN family

Live streaming, calls, meetings and the applications built on them, all on one platform.

  • Interactive live streaming: Zero-latency WebRTC live streaming for streamers, live commerce and events: real-time chat and votes over data channels, picture-in-picture, adaptive quality, recording and playback protection.
  • Sports & esports events: Zero-latency live coverage for sports and esports: in-play interaction in step with the picture, multi-angle picture-in-picture, real-time score data, anti-piracy protection and replays.
  • Meeting rooms: Branded video meeting rooms with live captions, recording, transcripts and AI summaries, managed from the console or the Server API.
  • Telehealth: One-to-one video visits for clinics and health platforms: browser links that expire, camera liveness checks before the visit, optional recording and webhooks.
  • Remote education: Ultra-low-latency live lectures, interactive video classes, real-time quizzes, lecture summaries and AI checks that only one person is on camera during an exam.
  • Robotaxi monitoring: Bring cameras inside and outside every autonomous vehicle to the operations center with low latency, watch the fleet on a monitor wall and talk to passengers with one tap.
  • AI-Gambling: AI-Gambling reads every card at casino and VIP tables from overhead IP cameras. The venue publishes every table camera to Streaming CDN.
  • elite: elite is EWIN GAMING's self-service live game platform. Streaming CDN delivers its table video to players' computers and phones over WebRTC and measures usage for each of elite's customers.

Developer guides