Two delivery models: run the full stack as a cloud service, or deploy it on your own servers so accounts, messages and recordings stay inside your network Run the full stack on your own servers and keep data inside your network Explore Private Deployment

IM (Instant Messaging)

A persistent-connection gateway, Open API and callback delivery cover one-to-one chat, group chat, chat rooms, super groups and system notifications. Messages are neither lost nor duplicated on poor networks, and operations teams get the management and audit tools they need.

FeiyanCloud IM chat interface across platforms

Four Building Blocks, One IM System

Messaging channels, conversation features, relationships and groups, and multi-platform SDKs each do their part. Put together, they form an IM system you can deliver as is.

Messaging Channels

A persistent-connection gateway, Open API, admin API and callback delivery work as four connected paths, so messages flow in both directions without polling.

  • A persistent connection over a private protocol, with automatic reconnects
  • The Open API covers every message type
  • Callback delivery syncs message status and business events

Conversations

Five conversation types: one-to-one chat, group chat, chat rooms, super groups and system notifications, with message types that run from text to fully custom payloads.

  • Text, image, file, voice, location and custom messages
  • Read receipts, message recall, @mentions and quoted replies
  • Drafts, pinned conversations, history sync across devices and message search

Relationships and Groups

Friend relationships and group management APIs are included, so your service does not need to build its own relationship and group-permission model.

  • Friend lists, friend requests, blocklists and presence
  • Rename, admins, mute, removal, ownership transfer and group announcements

Multi-Platform SDKs and IMKit

Covers Web, Android, iOS, macOS, Flutter, React Native and mini programs, with IMKit UI components you can reuse directly.

  • One account system, online on several platforms at once
  • IMKit provides conversation, message and contact-list UI
  • The console and admin backend support management and audit

Reliable Messaging, with Governance to Match

Not just the ability to send a message: message reliability, the conversation experience and content governance are handled together.

FeiyanCloud IM desktop chat interface

Messages Survive a Poor Network, without Duplicates

The persistent-connection gateway handles both directions, and a send is acknowledged only after the message is written to three replicas. The client de-duplicates and backfills by per-conversation sequence number, so nothing is lost or shown twice after a reconnect.

  • Automatic reconnects; messages received while offline are stored for delivery
  • Three-replica message storage stays consistent in write-heavy, read-light workloads
  • An offline push channel reaches users even when the app is not running
  • Callback delivery syncs message status into your own business systems
FeiyanCloud IM conversation list on mobile

The Details Everyday Chat Actually Needs

From read receipts to quoted replies, the features people really use in daily chat are built in, so a complete conversation experience ships with the integration.

  • Group read receipts roll up as n/m and can drill down to who has read
  • Message recall, @mentions, quoted replies, drafts and pinned conversations
  • History sync across devices and search across all stored messages
  • Chat rooms handle high-concurrency joins and departures, with message rate limiting
FeiyanCloud IM group management and announcements

Friends and Groups, Visible and Manageable in the Console

Friend requests, blocklists, group member moderation and sensitive-word review sit behind one set of APIs, managed visually in the admin backend.

  • Friend request approval flows, blocklists and presence sync
  • Group owners can rename the group, appoint admins, mute, remove and transfer ownership
  • Group announcements reach every member; system notifications are high priority
  • Sensitive-word review and content moderation can block or replace a match

Architecture

Clients hold a single persistent connection, the server is layered by responsibility, and storage is separated from push so each part scales on its own.

Access Layer Client SDKs and UI components
WebAndroidiOSmacOSFlutterReact NativeMini ProgramIMKit Components
Service Layer Messaging and relationships
Persistent-Connection GatewayMessage ServiceRelationshipsGroup ServiceContent ModerationOpen APIAdmin APICallback Delivery
Storage and Push Persistence and delivery
Message Storage (3 Replicas)History Sync Across DevicesOffline Push ChannelSensitive-Word Dictionary

Both the persistent-connection gateway and the message service scale horizontally. In a private deployment, all three layers can run inside your own data center network.

Send One Message, Then Add Capabilities

Create an app in the console to get an AppID, add the SDK to establish a persistent connection, and you can send and receive your first message.

  • Create an app in the console, get the AppID and secret, and configure the callback URL
  • Add the SDK or IMKit UI components per platform and replace the conversation UI
  • Call the Open API from your server to send system notifications and manage groups and relationships

See the Documentation for the full integration guide, and SDK Downloads for per-platform SDKs.

im-quick-start.ts TypeScript
import FeiyanIM from '@feiyan/im-sdk';

// 1. Init: get the AppID from the app details in the console
const im = FeiyanIM.init({ appId: 'YOUR_APP_ID' });

// 2. Connect (auto-reconnect after a drop, offline messages are re-delivered)
await im.connect({ userId: 'user_1001', token });

// 3. Send a message: one API for direct chats, groups and chat rooms
await im.sendMessage({
  target: 'group_2001',
  type: 'text',
  content: 'Hello, FeiyanCloud',
});

// 4. Listen for messages and read receipts
im.on('message', (msg) => console.log(msg));
im.on('readReceipt', (r) => {
  console.log(`${r.readCount}/${r.totalCount}`, r.readUserIds);
});

Common Questions Before You Integrate

For more technical detail, see the Documentation, or open a support ticket.

How are messages kept from being lost or duplicated?
A send is acknowledged only after the message passes through the persistent-connection gateway, reaches the message service and is written to three replicas. The client keeps an incrementing sequence number per conversation, so after a reconnect it backfills missing messages by sequence number and de-duplicates them. Switching networks or having the process killed does not lead to lost messages or duplicate items in the UI.
Which message types are supported, and can I define my own?
Text, image, file, voice, location and system notifications are built in, and custom message types are available: your service defines the message body and how it renders, while the server only passes it through and stores it. This suits order cards, rich-text cards and similar payloads.
How are group read receipts counted?
Group receipts show read and total counts as n/m, and an API returns the list of members who have read. One-to-one receipts simply mark when the other side read the message. Receipt status is also pushed to your backend through callback delivery.
How long is message history retained?
On the cloud service, the retention window follows your plan and is adjusted in the console; history can be paged through the Open API. With private deployment, message storage and history policy run on your own database, so retention is up to you.
How do messages sync when one account signs in on several platforms?
One account can be online on Web, mobile and desktop at the same time. When any of them sends or reads a message, the others receive a sync event over the online channel, and offline clients backfill by sequence number on their next connection, so conversation state stays consistent everywhere.
Can IM be used on its own, or does it require RTC?
IM and real-time video are separate products and can be integrated independently. To start an audio or video call from a conversation, combine them with the RTC calling capability; both share the same account and authentication system.

Product Screenshots

The App and the Console Are the Same Product

Group chat: @mentions, group announcements and read counts Read by 2 of 7 members in an 8-person group, plus a recalled-message placeholder, all produced inside a real conversation
Conversation list on mobile Unread badges, pinned chats, drafts and system notifications
A meeting on mobile One-to-one call: remote video full screen, local preview in a small window
Screen sharing Sharing a console dashboard, with participant video kept on the right

Send Your First Message in 30 Minutes

The free plan covers development and integration testing; upgrade by usage when you go live.

Leave Your Details, Get a Plan and a Quote

A pre-sales engineer will go over your use case, concurrency and deployment environment with you, usually within one business day.

Fields marked * are required; we use your details only for this pre-sales conversation.