Get started
Create a project, get your credentials and open your first voice room in a Flutter app.
This path takes you from a new account to a working voice room. It uses the audio room kit, which needs no backend. Everything except the widget in step 5 is the same for a live video room.
1. Create an account
Register with your email and verify it. Registering creates your organization, and you're its owner.
2. Create a project
In the console, choose Create Project. Under Modular Services Selection, turn on what you'll build:
| Console option | Product type | Package |
|---|---|---|
| Real-Time Audio (Speaker & Listener) | audio_room | voxera_audio_room_kit |
| Live Video Streaming (Simulcast / SFU) | live_stream | voxera_live_room_kit |
A project can have both. You can change this later under Service Management.
For video, also set Maximum Video Quality Tier (Budget Ceiling), the highest quality the project may use.
3. Copy your credentials
Open the project. Project Information lists its credentials:
| Console label | In these docs | Where it goes |
|---|---|---|
| AppID | App ID | In your app |
| AppSign (AppKey) | App Key | In your app. It's publishable. |
| ServerSecret | Server Secret | On your server only. Never ship it. |
| CallbackSecret | Callback Secret | On your server. You won't need it to get started. |
The kits only need the App ID and App Key. Credentials and auth explains the rest.
4. Add funds
Rooms are charged by the minute from your organization's balance. Deposits are USDT on TRC-20: send the funds, then submit the transaction hash in the console. The funds post once the transaction is verified.
See pricing for rates and How billing works for how minutes are counted.
5. Add the kit and join a room
Add the package to pubspec.yaml:
dependencies:
voxera_audio_room_kit: ^2.2.2Declare the microphone permission.
<!-- iOS: ios/Runner/Info.plist -->
<key>NSMicrophoneUsageDescription</key>
<string>Required for audio room participation</string>
<!-- Android: android/app/src/main/AndroidManifest.xml -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />On Android, set minSdkVersion to at least 21.
Then open a room. This is a complete app:
import 'package:flutter/material.dart';
import 'package:voxera_audio_room_kit/voxera_audio_room_kit.dart';
void main() => runApp(const MaterialApp(home: RoomPage()));
class RoomPage extends StatelessWidget {
const RoomPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: VoxeraAudioRoom(
appId: '<voxera-app-id>',
appKey: '<voxera-app-key>',
userId: 'user123',
userName: 'John Doe',
roomId: 'room456',
roomOwnerId: 'user123', // userId == roomOwnerId makes this user the host
),
);
}
}roomId is any name you choose. The first person to join creates the room. Run the app on two devices with different userId values, and they'll hear each other once the second user takes a seat and turns on their microphone.
6. Confirm it worked
Open the project's First-Success Journey tab in the console. It only advances when real connection events are recorded, so it's a reliable check that your app reached a room.
If the join fails, the kit shows the error with a retry button. The most common cause is a type that isn't enabled on the project: 403 Type 'audio_room' is not enabled for this project. Turn it on under Service Management. For other failures, see Error codes.
Next steps
- Live Audio Room overview: what the kit does for you.
- Live Streaming quickstart: the same steps for a video room.
- Production checklist: what to check before you ship.