OmniTalk is an SDK that enables easy and convenient real-time communication within apps using webRTC standard technology.

Feature Overview

feature implemented ios android
Audio Call ✔️ ✔️ ✔️
Video Call ✔️ ✔️ ✔️
Sip Call ✔️ ✔️ ✔️
Chatting ✔️ ✔️ ✔️
Audio Conference ✔️ ✔️ ✔️
Video Conference ✔️ ✔️ ✔️
AudioMute ✔️ ✔️ ✔️
VideoMute ✔️ ✔️ ✔️
Video Switch ✔️ ✔️ ✔️


  • OmniTalk Service ID & Service Key

  • To use OmniTalk, you need to obtain a service ID and service key by visiting the OmniTalk website.

  • Alternatively, you can obtain a test ID and key for free usage for one hour from here.

  • Minimum System Requirements

    - Flutter >= 3.1.0
    - Dart >= 2.19
    - Android API >= 21
    - iOS >= 11

Getting Started

For detailed usage instructions, please refer to this documentation.

  1. Installation

    import 'package:omnitalk_sdk_test/omnitalk_sdk.dart';
  2. Create OmniTalk Object

    Create an OmniTalk object using the service ID and service key obtained.

        serviceId: 'Service Id', serviceKey: 'Service Key');
    Omnitalk omnitalk = Omnitalk.getInstance();
  3. Create Session

    await omnitalk.createSession(userId: userId);
  4. Create Room

    Create a room of the specified room type.

    await omnitalk.createRoom(roomType: RoomType.videoroom);
  5. Join Room

    Upon joining a room, you will automatically start an audio broadcast and be able to send and receive chat messages.

    await omnitalk.joinRoom(roomId: roomId);
  6. Start Broadcasting (Video)

    Audio broadcasting starts by simply joining a room. For video broadcasting, you need to pass an object to be able to contain your video stream.

    await omnitalk.publish(localRenderer: localVideo);
  7. Receive Event Messages

    To receive event messages from the OmniTalk SDK, use the following:

    omnitalk.on('event', eventListener);
  8. Subscribe to Broadcasting

    To subscribe to a broadcast, provide the session ID of the desired broadcast.

    await omnitalk.subscribe(
          publisherSession: publisherSession!, remoteRenderer: remoteVideo);
  9. Voice Call (1:1)

    To implement a 1:1 voice call, you can easily use the offerCall and answerCall APIs. For detailed implementation guide, refer to the documentation.

    await omnitalk.offerCall(
       callType: CallType.audiocall,callee: callee);
    await omnitalk.answerCall();
  10. Video Call (1:1)

    To implement a 1:1 video call, use the offerCall and answerCall APIs. For detailed implementation guide, refer to the documentation.

    await omnitalk.offerCall(
       callType: CallType.videocall,callee: callee!,record: false, localRenderer: localVideo, remoteRenderer: remoteVideo);
    await omnitalk.answerCall(
      callType:  CallType.videocall,caller: caller,localRenderer: localVideo,remoteRenderer: remoteVideo);
  11. Chat Messages

    Upon joining a room (regardless of type), you can send and receive chat messages.

    await omnitalk.sendMessage(action: MessageAction.send, message: message!);
  12. End Broadcasting

    await omnitalk.leave();


Comprehensive and easy-to-follow documentation is available.


For any issues or questions while using OmniTalk, please refer to the issue page.

Example Projects

Demo projects showcasing simple functionality implemented using the OmniTalk SDK are available.