Get the power of in-app messaging & calling – without building it yourself

Save hours of development work in adding voice, video calling & messaging to your mobile & web apps by using our robust SDK & APIs. We have written the code for you, so you don’t have to.

Build exactly what you imagine

With our detailed documentation and hundreds of simplified libraries, you imagine it & we will help you build it.

Take control of your chat experience

Control your chat UI with your code. Code in the language you know and leave the rest to us.

private String appId = "APP_ID";

CometChat.init(this, appId, new CometChat.CallbackListener() {
  public void onSuccess(String successMessage) {
    Log.d(TAG, "Initialization completed successfully");
  public void onError(CometChatException e) {
    Log.d(TAG, "Initialization failed with exception: " + e.getMessage());


Create an App

Sign up with CometChat & login to your dashboard to create an app.

Get our Sample app from GitHub

Download our sample app from GitHub to start exploring.

Add your API key

Leave the infrastructure and scalability to us.

Start Chatting

And just like that, your chat is up and running.

Your tech stack. Your language. CometChat Pro offers seamless integrations for wide range of frameworks, languages & SDKs.

Don’t build it yourself, do it with CometChat Pro & save months of efforts in building chat from scratch.

Easily customize different elements of your chat app by writing your own code or choosing one from our many pre built rules and extensions.

Your use case + your tech stack + your custom needs = a seamless chat application adjusted for the dynamic future.

Deploy your ideas with a few lines of code

Our well-documented SDKs will help you add CometChat Pro easily to your existing app, and will give you time to focus on what you do best – build great apps.

var GUID = "GUID";
var password = "";
var groupType = CometChat.GROUP_TYPE.PUBLIC;

CometChat.joinGroup(GUID, groupType, password).then(
 group => {
  console.log("Group joined successfully:", group);
 error => {
  console.log("Group joining failed with exception:", error);

private String GUID = "GUID";
private String groupType = CometChatConstants.GROUP_TYPE_PUBLIC;
private String password = "";

CometChat.joinGroup(GUID, groupType, password, new CometChat.CallbackListener() {
  public void onSuccess(String successMessage) {
    Log.d(TAG, "Group joined successfully");
  public void onError(CometChatException e) {
    Log.d(TAG, "Group joining failed with exception: " + e.getMessage());

let guid = "SUPERGROUP1";
let password = ""; // mandatory in case of protected group

CometChat.joinGroup(GUID: guid, groupType: .public, password: nil, onSuccess: { (Group) in

  // Success
  print("Group joined successfully: " + Group!.stringValue())

}) { (error) in

  // Failure
  print("Group joining failed with exception:" + error!.ErrorDescription);

var listenerID = "UNIQUE_LISTENER_ID";

 new CometChat.MessageListener({
  onTextMessageReceived: textMessage => {
   console.log("Text message successfully", textMessage);
   // Handle text message
  onMediaMessageReceived: mediaMessage => {
   console.log("Media message received successfully",  mediaMessage);
   // Handle media message

private String listenerID = "UNIQUE_LISTENER_ID";

CometChat.addMessageListener(listenerID, new CometChat.MessageListener() {
  public void onTextMessageReceived(TextMessage textMessage) {
    Log.d(TAG, "Text message received successfully: " + textMessage.toString());
  public void onMediaMessageReceived(MediaMessage mediaMessage) {
    Log.d(TAG, "Media message received successfully: " + mediaMessage.toString());

extension ViewController: CometChatMessageDelegate {

  func onTextMessageReceived(textMessage: TextMessage ? , error : CometChatException ? ) {

    // received a new messsage of type text
    let receivedMessage = (textMessage as ? TextMessage);
    print("Message received successfully: " + receivedMessage!.stringValue())


  func onMediaMessageReceived(mediaMessage: MediaMessage ? , error : CometChatException ? ) {

    // received a new message of type media
    let receivedMessage = (mediaMessage as ? MediaMessage);
    print("Message received successfully: " + receivedMessage!.stringValue())


var receiverID = "UID";
var messageText = "Hello world!";
var messageType = CometChat.MESSAGE_TYPE.TEXT;
var receiverType = CometChat.RECEIVER_TYPE.USER;

var textMessage = new CometChat.TextMessage(receiverID, messageText, messageType, receiverType);

  message => {
    console.log("Message sent successfully:", message);
    // Text Message Sent Successfully
  error => {
    console.log("Message sending failed with error:", error);

private String receiverID = "UID";
private String messageText = "Hello world!";
private String messageType = CometChatConstants.MESSAGE_TYPE_TEXT;
private String receiverType = CometChatConstants.RECEIVER_TYPE_USER;

TextMessage textMessage = new TextMessage(receiverID, messageText, messageType, receiverType);

CometChat.sendMessage(textMessage, new CometChat.CallbackListener() {
  public void onSuccess(TextMessage textMessage) {
    Log.d(TAG, "Message sent successfully: " + textMessage.toString());
  public void onError(CometChatException e) {
    Log.d(TAG, "Message sending failed with exception: " + e.getMessage());

let receiverID = "SUPERHERO2"
let text = "Hello"

let textMessage = TextMessage(receiverUid: receiverID, text: text, messageType: .text, receiverType: .user)

CometChat.sendTextMessage(message: textMessage, onSuccess: { (message) in

  // success
  let sentMessage = (message as ? TextMessage);
  print("Message sent successfully: " + sentMessage!.stringValue())

}) { (error) in

  // error
  print("Message sending failed with exception:  " + error!.ErrorDescription);

var limit = 30;
var usersRequest = new CometChat.UsersRequestBuilder().setLimit(limit).build();

  userList => {
    /* userList will be the list of User class. */
    console.log("User list received:", userList);
    /* retrived list can be used to display contact list. */
  error => {
    console.log("User list fetching failed with error:", error);

private UsersRequest usersRequest = null;
private int limit = 30;

usersRequest = new UsersRequest.UsersRequestBuilder().setLimit(limit).build();

usersRequest.fetchNext(new CometChat.CallbackListener>() {
  public void onSuccess(List  list) {
    Log.d(TAG, "User list received: " + list.size());
  public void onError(CometChatException e) {
    Log.d(TAG, "User list fetching failed with exception: " + e.getMessage());

let limit = 20;

let usersRequest = UsersRequest.UsersRequestBuilder(limit: limit).build();

usersRequest.fetchNext(onSuccess: { (users) in

  // Received user list success
  for user in users {

    // user
     print("User : " + user.stringValue())

}) { (error) in

  // Error
  print("User list fetching failed with exception: " + error.ErrorDescription);


Easiest way to add & customize chat in your app

Built & battle tested

CometChat Pro deploys over 50K+ automated tests across multiple platforms to ensure our chat works across every browser & updates.

Don’t build it from scratch

Our SDKs help save time by focussing on code that matters without having to reinvent the wheel. Quickstarts, developer documentation & open source sample code to get you up & running quickly.

Scale with confidence

We help you build a chat app that can be scaled from a startup to an enterprise within minutes without having to outsource your dev team. Our SDKs support every use case right out of the box with minimum latency, unparalleled uptime & flexibility.

Control your UI

CometChat Pro SDKs helps you make & manage your chat UI exactly the way you need. Start from our chat layout & build on top of it. Personalise chat experience for your users by customizing chat bubbles, calling profiles and so much more.

Rich In-App Messaging Features

CometChat Pro has all the features you’ll need to get your chat to production & scale. We have done the hard work for you so you don’t have to.

Text chat

CometChat Pro gives you the platform to experiment and innovate messaging interfaces that best suit your vision.

Voice & video calling

Initiate WebRTC enabled voice & video calling and conference experiences, using your preferred programming language.

File sharing

With CometChat Pro you can implement cloud-based file syncing & sharing features to elevate the functionality of your apps and website.

Custom payload

Send custom payloads in your messages and improve your in-app chat functionality as per your use-case and user convenience.

Why CometChat Pro?

  • Customized chat experience

    Control how you chat looks with your own code. Change elements as per your liking and requirements.

  • Deployment in all developer preferred tech stack

    Build a seamless chat application with your preferred tech stack & our robust chat infrastructure.

  • Sample UIs or Develop your own

    Use our ready UIs or choose to build your own. Experience complete flexibility & control.

  • All essential compliance & security encryptions

    Advanced encryption & security standards. We handle your data protection so that you can focus on your business.

Unparalleled reliability

Our dedicated engineering team & cloud operations ensure that your chat is always running while maintaining 99.99% uptime.

Flexible infrastructure

Start with 2 users & scale upto 2 million. CometChat Pro offers guaranteed SLA so you don’t have to worry no matter how large your user base gets.

Support by developers to developers

Start building right away with our quickstarts & support services. When things go wrong, we’ll have our developers back you up by fixing your problems in no time.

Enterprise grade security & compliance

CometChat Pro comes with data protection, encryption & compliances to keep your users safe & your business protected.

Cross-platform SDKs

With our native iOS, Android, React, web SDKs & REST APIs, we offer deep integration with your prefered language & stack

Zero downtime

No scheduled downtime. We deploy old and new code in parallel to test for errors and update with code fixes in service.