Skip to content
Developers

Built to be understood, not just consumed

A small, honest API you can trace end to end. No black boxes between your backend token and media flowing through your own SFU.

Step 1 · install

Add the client

One package for the browser and React Native; a pub package for Flutter. Everything else — signalling, chat, media — comes through it.

TypeScript types included Zero config to start
terminal
1# Web / React Native2npm i @suryacloud/client livekit-client socket.io-client34# Flutter5flutter pub add suryacloud
Developer experience

From npm install to a ringing phone in minutes

An API small enough to hold in your head. The same calls work in Flutter, Web and React Native — no rewrites between platforms.

app.js
1import { SuryaCloud } from '@suryacloud/client'23const sc = new SuryaCloud('https://cloud.yourco.com')45// your backend mints the token from an API key6await sc.connect({7  sessionEndpoint: '/api/sc-session',8  userId: 'alice',9})1011sc.onIncomingCall = (call) => ring(call) // show your UI
SDKs

Pick your platform

Same API surface everywhere. Learn calling once, ship it on mobile and web.

Stable

Flutter

suryacloud

iOS + Android, with CallKit & FCM ringing built in.

Stable

Web / JS

@suryacloud/client

Browser + React Native. Same API, TypeScript types included.

Stable

React Native

@suryacloud/client

Ships with the JS SDK — register the WebRTC globals and go.

Soon

iOS (Swift)

SuryaCloudKit

Native Swift package. On the roadmap.

How it works

From zero to a connected call in four steps

No black boxes. You can trace a call from your backend token all the way to media flowing through your own SFU.

01

Deploy the stack

One Docker Compose file brings up the SFU, signalling and control plane on a VM you own. Point a subdomain at it and you're live.

02

Mint a session token

Your backend calls /v1/session with an API key and gets back a short-lived user token. Secrets never touch the client.

03

Connect & ring

The SDK opens one socket for calls and chat. invite() rings the other user — on a real, locked phone if they're offline.

04

Media flows peer-to-SFU

Accepted calls join a LiveKit room. Tracks are simulcast to the SFU and fanned out, adapting to each viewer's bandwidth.

System status

All operational
  • Signalling APIOperational
  • Media (SFU)Operational
  • ChatOperational
  • Recording egressOperational
  • Push / offline ringingOperational

Ship it

Your first call is one npm install away

Grab a key, mint a token from your backend, and ring a phone before your coffee's cold.