Skip to content
Start here

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 optionProduct typePackage
Real-Time Audio (Speaker & Listener)audio_roomvoxera_audio_room_kit
Live Video Streaming (Simulcast / SFU)live_streamvoxera_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 labelIn these docsWhere it goes
AppIDApp IDIn your app
AppSign (AppKey)App KeyIn your app. It's publishable.
ServerSecretServer SecretOn your server only. Never ship it.
CallbackSecretCallback SecretOn 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.2

Declare 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