Realtime · Socket.IO

Client → server emits

Quick reference for every emit the server accepts.

EventPayloadTypical response / broadcast
subscribe:projectprojectId (string)(none) — joins project:*
subscribe:collectionstring or { projectId, collectionId }subscribed if object form
unsubscribe:collection{ collectionId }unsubscribed
subscribe:document{ projectId, collectionId, documentId }subscribed
subscribe:query{ projectId, collectionId, queryId, query? }subscribed
custom:event{ projectId, ... }Others in project get custom:event
integration:join{ projectId, integrationId }integration:joined / integration:error
integration:leave{ integrationId }integration:left
integration:execute{ projectId, integrationId, endpoint, params?, requestData? }see Integrations page
integration:test{ projectId, integrationId, endpoint }see Integrations page
integration:status{ projectId, integrationId }integration:status:response
integration:webhook:subscribe{ projectId, integrationId }integration:webhook:subscribed
integration:webhook:unsubscribe{ integrationId }integration:webhook:unsubscribed
wallet:subscribe:address{ addressId }wallet:subscribed
wallet:subscribe:project{ projectId }wallet:subscribed
wallet:subscribe:chain{ chain }wallet:subscribed
wallet:subscribe:currency{ currency }wallet:subscribed
wallet:unsubscribe:address{ addressId }wallet:unsubscribed
wallet:unsubscribe:project{ projectId }wallet:unsubscribed
presence:online{ projectId? }broadcasts presence:user:online
presence:offlinebroadcasts presence:user:offline
presence:updateupdates internal lastSeen
presence:get:online{ projectId }presence:online:list
auth:login{ projectId }others: user:online
auth:logout{ projectId }others: user:offline
auth:session:update{ projectId, sessionData }other tabs same user: session:updated
chat:join{ chatId, projectId }chat:joined; room: user:online
chat:leave{ chatId }chat:left; room: user:offline
chat:typing:start{ chatId }room: user:typing:start
chat:typing:stop{ chatId }room: user:typing:stop
message:send{ chatId, projectId, type, content, replyTo?, mentions? }message:sent; room: message:new
message:react{ chatId, projectId, messageId, emoji }room: message:reaction
message:edit{ chatId, projectId, messageId, content }room: message:edited
message:delete{ chatId, projectId, messageId }room: message:deleted
messages:mark:read{ chatId, projectId, messageIds }room: messages:read
call:initiate{ chatId, type, participants[] }targets: call:incoming
call:accept{ chatId, callerId }call:accepted
call:reject{ chatId, callerId }call:rejected
call:end{ chatId, participants[] }call:ended
custom:broadcast{ projectId, event, payload?, room? }custom:<event>
custom:join{ room }custom:joined
custom:leave{ room }custom:left
custom:message{ targetUserId, message, type? }target: custom:message
custom:presence{ projectId, status, metadata? }room: custom:presence
custom:typing{ projectId, isTyping, context? }room: custom:typing
custom:file:share{ projectId, fileId, fileName, recipients? }custom:file:shared