Skip to content

VoltKit RTC

Free account required

Voice chat rooms and audio rooms SDK: speakers, listeners and a stage

Standard voice from ₹39 (≈ $0.41) per 1,000 participant-minutes; listeners receive audio only.

An audio room is a room where a few people speak and everyone else listens: a voice chat room, a talk, a 9-seater party room, or a radio-style show that some apps call an audio broadcasting room. Speakers publish their microphone; listeners only receive. A listener raises a hand, the host brings them on stage, and they speak.

Every room comes with chat, seats, moderation, speaking indicators and in-app music, behind one API with SDKs for web, mobile and your backend.

Your first project starts with 2,500 free participant-minutes, once per account, at any quality.

  • Stage, seats, raise hand
  • Chat included
  • HD music, included free
  • Billed per second

Audio rooms

Speakers on a stage, listeners in the room

Your backend chooses each person's role when it mints their token, and the service enforces it, so a modified app cannot put itself on stage. Roles change during the room without your backend: the host promotes a listener to co-host to bring them on stage, and back to viewer to send them back. Details: group audio rooms.

Roles in an audio room: who speaks, who moderates, and the typical use
RoleOn stage (speaks)ModeratesTypical use
hostYesYesThe room's owner
cohostYesNoA speaker on stage
moderatorNoYesSomeone who keeps order
viewerNoNoA listener

What VoltKit does

  • Rooms where speakers publish their microphone and listeners receive audio only
  • Roles from your backend's token, enforced by the service
  • Raise hand, promote to the stage and send back, with the reconnect handled by the SDK
  • Seats: named slots one person holds at a time, kept through a dropped connection
  • Forced mute, kick, chat moderation, speaking indicators
  • Chat in every room, in-app music and signed webhooks

What your app builds

  • The seat layout, and how many seats a room shows
  • Room discovery, feeds and profiles
  • Coins, gifts, payouts and the gift animations
  • Reporting, blocking and review
  • Ringing and push notifications for 1:1 calls

5-seater, 9-seater, 12-seater or 20-seater: the seat count is your app's layout. The service sets no limit on how many people publish in a room, so your app decides how many seats it shows.

Code

The stage in Flutter, JavaScript and Kotlin

The same names in every SDK. A listener asks for a seat, the host accepts, and the listener's app publishes its microphone once the new role arrives; your server mints listeners a viewer token.

$ flutter pub add voltkit_rtc
await client.raiseHand(metadata: {'slot': 'seat-3'});      // anyone; metadata says what for
await client.lowerHand();                                  // withdraw your own
await client.promote('user-42', Role.cohost);              // on stage; host only

await client.claim('seat-3');                     // slot-taken or slot-blocked if not
client.onClaimChanged.listen((c) => drawSeat(c.key, c.state, c.identity));   // held, away, free, blocked

await client.publish(constraints: {'audio': true, 'video': false});  // microphone only
The API secret stays on your server; apps only get short-lived tokens.Issue tokens from your backend
Android (Kotlin)StageActivity.kt
implementation("in.voltkit:voltkit-rtc:0.9.10")
// A listener asks to speak, saying for which seat:
client.raiseHand(mapOf("slot" to "seat-3"))
client.lowerHand()                                   // changed their mind

// The host sees the requests:
scope.launch {
    client.onHandRaised.collect { hand ->
        if (hand.raised) showRequest(hand.identity, hand.slot) else removeRequest(hand.identity)
    }
}
client.promote("user-42", Role.cohost)               // accept: on stage
client.lowerHand("user-42")                          // decline (reason "declined")
client.promote("user-42", Role.viewer)               // back to the audience

A promotion arrives as onRoleChanged for the listener's own identity, and publish() is then allowed; the SDK handles any move to the speakers' media server. More in the Android SDK guide, the Flutter SDK guide and the JavaScript SDK guide.

Seats

5-seater, 9-seater, 12-seater or 20-seater rooms

Seats are named slots that one person holds at a time, kept by the server. Claim one, release it, seat someone (moderators), or block an empty seat; every change arrives as an event with the seat's state: held, away, free or blocked.

A holder whose connection drops keeps the seat for a grace window, shown as away. Draw it as taken, greyed, never as free.

Room-wide settings such as a title, the seat layout or a pinned message go in room metadata, kept for everyone who joins later.

A claim is refused with slot-taken while someone holds the seat and slot-blocked while it is locked. One claim per identity: claiming a second seat releases the first.

Moderation

Enforced by the service, not by the app

A modified app cannot unmute itself or ignore a removal. The host manages everyone else in the room; moderators mute and remove listeners, handle raised hands and moderate chat.

  • forceMute(identity, "audio")Their microphone stops at the server, and they cannot switch it back on themselves.
  • forceMute(identity, "audio", false)Released: they may switch it on again. It stays off until they do, so nobody is put on air without knowing.
  • kick(identity, reason)Removed from the room at once; the room refuses that identity from then on.
  • muteChat(identity)Silenced in the chat only. A mute is held for the channel, so reconnecting does not undo it.
  • deleteMessage(id)Hosts and moderators delete any message; anyone may delete their own.
  • endRoom()The room ends for everyone. Host only.

Every role and call: Rooms.

Included

Chat and music come with every room

Chat

Every room has a chat channel from the moment it exists, on the connection people already hold: messages, direct messages, reactions, typing, history and moderation. People who only read along can open a chat-only connection, which is not metered as a participant. Chat is counted, not charged, within a daily allowance that grows with your live minutes.

Chat docs

In-app music

A host plays a song from inside the app with publishMusic, never through the microphone, so listeners hear it clean and it does not echo. In the browser it is its own 128 kbps stereo track with separate music and microphone switches; the Android SDK mixes it into the microphone before encoding. Music is never billed. Flutter apps receive it on Android and iOS; publishing it there needs a native audio source in your app today.

Music docs

Pricing

What a voice room costs

Each participant is billed per second at the rate of the media they send or receive. Standard audio is the default and right for voice; HD audio is for music, and is billed only when a microphone asks for it or is measured above 72 kbps.

  • Standard VoiceUp to 64 kbps₹39 (≈ $0.41) per 1,000 participant-minutes
  • HD VoiceUp to 128 kbps₹49 (≈ $0.52) per 1,000 participant-minutes
A voice room: a host and nine listeners for an hour

10 people × 60 minutes = 600 participant-minutes

600 participant-minutes × 39 ÷ 1,000 = 23.4 credits, ₹23.40 (≈ $0.25) at today's rate

Standard Voice: 39 credits per 1,000 participant-minutes. Billed per second, so a 7½-minute call costs 7½ minutes.

Prices are in Indian rupees; dollar figures are approximate, at ₹95 per US dollar on 24 October 2026, for orientation only. You are billed in rupees.

Group voice calls use the same room: everyone who speaks publishes, at the same rates. A one-to-one call is a room with two people, with ringing through your own push channel and earpiece or speaker routing on Android: one-to-one voice calls. Work out your own sessions with the participant-minute calculator, or see every rate on the pricing page.

Gifts

Gifts in voice rooms, run by your app

Your server checks a gift and debits your own coins, then posts a gift event to the room's chat, and every app plays the artwork. The SDKs have no gift-sending API or gift player; coins and payouts are your app's.

VoltKit's gift store sells gift artwork (SVGA, animated WebP and still images) under a licence for your own app: browse the gifts or read how gifts fit an RTC app.

SDKs

Build it for web, Android, iOS and your backend

Flutter covers Android and iOS apps; the Android SDK is voice first and runs the call audio for you. The native iOS (Swift) SDK is in preview.

  • JavaScript (browser)

    $ npm install @voltkit-rtc/client
    JavaScript SDK guide
  • React (browser)

    $ npm install @voltkit-rtc/react @voltkit-rtc/client
    React SDK guide
  • Node.js (server)

    $ npm install @voltkit-rtc/server
    Node.js SDK guide
  • Python (server)

    $ pip install voltkit-rtc-server
    Python SDK guide
  • Go (server)

    $ go get github.com/voltkit-rtc/voltkit-rtc-server-go
    Go SDK guide
  • PHP (server)

    $ composer require voltkit/rtc-server
    PHP SDK guide
  • Java (server, Spring Boot)

    implementation("in.voltkit:voltkit-rtc-server:0.1.0")
    Java SDK guide
  • Flutter (iOS and Android apps)

    $ flutter pub add voltkit_rtc
    Flutter SDK guide
  • Android (Kotlin apps)

    implementation("in.voltkit:voltkit-rtc:0.9.10")
    Android SDK guide
  • Native iOS (Swift)

    In preview, not released yet. The Flutter SDK covers iOS apps today; for early access, email contact@voltkit.in.

    iOS preview notes

Category

The audio-room shape people already know

In Clubhouse, launched in March 2020, listeners cannot speak until they raise a hand and a moderator invites them to the stage (Wikipedia, read 2026-10-24). The same parts are here for your own app: a viewer role, raise hand, promote and the stage, plus seats for a 9-seater or 12-seater party-room layout.

App names identify a category of app; their trademarks belong to their owners, and VoltKit is not affiliated with them.

More

Related use cases

Voice chat rooms: questions

How much does a voice chat room cost to run?

A host and nine listeners for an hour is 600 participant-minutes. At standard voice that is 23.4 credits, ₹23.40 (≈ $0.25) at today's rate. Billed per second, so a 7½-minute call costs 7½ minutes.

How many listeners can an audio room hold?

Each project has a limit on viewers per room, shown on the project's Settings tab; past it, a new token is refused with viewer-quota, and support can raise the limit. During the testing trial, a room holds up to 25 people across all roles. Listeners receive audio only, which keeps rooms with many listeners light.

How many speakers can be on stage at once?

The service sets no limit on how many people publish in a room: a room with three seats and a room with twenty are the same room to it. Your app decides how many seats it shows and enforces them with roles and seats. Only VoltKit's public demo room is capped, at six people and three co-hosts.

Can the host play music without echo?

Yes. publishMusic takes the music from inside your app, not through the microphone. In the browser it goes out as its own 128 kbps stereo track that each listener can turn down; the Android SDK mixes it into the microphone before encoding, so it never echoes. In-app music is never billed and never changes anyone's rate. A Flutter app receives music on Android and iOS, and publishing it there needs a native audio source in your app today.

Is chat included?

Yes. Every room has a chat channel from the moment it exists, on the connection people already hold. People who only read along can use a chat-only connection, which is not metered as a participant. Chat is counted, not charged, within a daily allowance that grows with your live minutes.

Which SDKs can I use for a voice room?

Client SDKs for the browser, React, Flutter and Android, and server SDKs for Node.js, Python, Go, PHP and Java to create rooms, mint tokens, read usage and verify webhooks. Flutter covers Android and iOS apps.

Is there an iOS SDK?

Flutter apps run on iOS with voltkit_rtc today. The native iOS (Swift) SDK is a preview and not released yet; for early access, email contact@voltkit.in.

Can listeners send gifts?

Yes, as a feature of your app: your server checks the gift and debits your own coins, then posts a gift event in the room's chat, and every app plays the artwork. VoltKit's gift store sells the artwork and the room carries the messages; there is no gift-sending API or gift player in the SDKs, and coins and payouts stay with your app.

Build your voice rooms

Create a free account, make an RTC project, and follow the audio rooms guide to put a host, a speaker and a listener in one room.

Talk to us:contact@voltkit.inWhatsApp