Skip to main content
Quick Reference for AI Agents & Developers
// Send text message
const textMessage = new CometChat.TextMessage(
  "receiver_uid",
  "Hello!",
  CometChat.RECEIVER_TYPE.USER  // or GROUP
);
await CometChat.sendMessage(textMessage);

// Send media message
const mediaMessage = new CometChat.MediaMessage(
  "receiver_uid",
  file,
  CometChat.MESSAGE_TYPE.IMAGE,  // IMAGE, VIDEO, AUDIO, FILE
  CometChat.RECEIVER_TYPE.USER
);
await CometChat.sendMediaMessage(mediaMessage);

// Fetch message history
const messagesRequest = new CometChat.MessagesRequestBuilder()
  .setUID("user_uid")  // or .setGUID("group_guid")
  .setLimit(30)
  .build();
const messages = await messagesRequest.fetchPrevious();

// Listen for messages
CometChat.addMessageListener("LISTENER_ID", new CometChat.MessageListener({
  onTextMessageReceived: (msg) => console.log("Text:", msg.getText()),
  onMediaMessageReceived: (msg) => console.log("Media:", msg.getAttachment()),
  onTypingStarted: (indicator) => console.log("Typing..."),
  onMessagesRead: (receipt) => console.log("Read:", receipt.getMessageId())
}));

// Edit/Delete
await CometChat.editMessage(editedMessage);
await CometChat.deleteMessage(messageId);
Messaging is the core of CometChat. This section covers everything you need to build a complete messaging experience—from sending your first message to implementing advanced features like reactions and threaded conversations.
Available via: SDK | REST API | UI Kits

Getting Started

At minimum, implement these two features:

Message Types

CometChat supports multiple message types:
TypeDescriptionUse Case
TextPlain text messagesStandard chat messages
MediaImages, videos, audio, filesSharing photos, documents, voice notes
CustomDeveloper-defined JSON payloadLocation sharing, polls, custom cards
InteractiveForms, cards, buttonsSurveys, bookings, actionable messages
// Quick example: Send a text message
const textMessage = new CometChat.TextMessage(
  receiverID,
  "Hello!",
  CometChat.RECEIVER_TYPE.USER
);

CometChat.sendMessage(textMessage).then(
  (message) => console.log("Sent:", message),
  (error) => console.log("Error:", error)
);

Core Features


Real-Time Features

Keep your chat experience live and engaging:

Advanced Features


Conversation Management


Message Listener

To receive real-time messages, register a MessageListener:
const listenerID = "UNIQUE_LISTENER_ID";

CometChat.addMessageListener(
  listenerID,
  new CometChat.MessageListener({
    onTextMessageReceived: (textMessage) => {
      console.log("Text message received:", textMessage);
    },
    onMediaMessageReceived: (mediaMessage) => {
      console.log("Media message received:", mediaMessage);
    },
    onCustomMessageReceived: (customMessage) => {
      console.log("Custom message received:", customMessage);
    },
    onTypingStarted: (typingIndicator) => {
      console.log("Typing started:", typingIndicator);
    },
    onTypingEnded: (typingIndicator) => {
      console.log("Typing ended:", typingIndicator);
    },
    onMessagesDelivered: (messageReceipt) => {
      console.log("Message delivered:", messageReceipt);
    },
    onMessagesRead: (messageReceipt) => {
      console.log("Message read:", messageReceipt);
    },
    onMessageEdited: (message) => {
      console.log("Message edited:", message);
    },
    onMessageDeleted: (message) => {
      console.log("Message deleted:", message);
    },
    onInteractiveMessageReceived: (message) => {
      console.log("Interactive message received:", message);
    },
  })
);

// Remove listener when done
CometChat.removeMessageListener(listenerID);
See All Real-Time Listeners for the complete reference.

Quick Reference

TaskMethod
Send text messageCometChat.sendMessage(textMessage)
Send media messageCometChat.sendMediaMessage(mediaMessage)
Send custom messageCometChat.sendCustomMessage(customMessage)
Fetch messagesmessagesRequest.fetchPrevious()
Edit messageCometChat.editMessage(message)
Delete messageCometChat.deleteMessage(messageId)
Mark as readCometChat.markAsRead(message)
Start typingCometChat.startTyping(typingIndicator)
Get conversationsconversationsRequest.fetchNext()

Next Steps

1

Send Your First Message

3

Build Conversation List

Retrieve conversations for your chat UI
4

Add Engagement Features