WebSocket Events
Real-time events over Socket.IO on the /v1 namespace.
Connection Configuration
| Property | Value |
|---|---|
| Transport | WebSocket (Socket.IO protocol) |
| Namespace | /v1 |
| URL | {baseUrl}/v1 |
| Auth | Same Firebase JWT headers as REST |
| Query params | workspaceId=<id> |
| Auto-reconnect | Enabled |
Server-to-Client Events
message.new
New message in any conversation within the connected workspace.
{
"event": "message.new",
"data": {
"id": "string",
"conversationId": "string",
"role": "user | agent | system",
"content": "MessageContent",
"status": "pending | delivered | failed",
"createdAt": "ISO8601",
"updatedAt": "ISO8601",
"localId": "string | null",
"agent": "AgentData | null",
"attachments": ["AttachmentData"],
"mentions": ["MentionData"]
}
}
message.updated
Message modified (e.g., action card resolved, status changed).
{
"event": "message.updated",
"data": {
"id": "string",
"conversationId": "string",
"role": "user | agent | system",
"content": "MessageContent",
"status": "pending | delivered | failed",
"createdAt": "ISO8601",
"updatedAt": "ISO8601",
"localId": "string | null",
"agent": "AgentData | null",
"attachments": ["AttachmentData"],
"mentions": ["MentionData"]
}
}
agent.typing
Agent typing state changed.
{
"event": "agent.typing",
"data": {
"conversationId": "string",
"agentId": "string",
"isTyping": true
}
}
agent.status
Agent availability changed.
{
"event": "agent.status",
"data": {
"agentId": "string",
"status": "online | busy | offline"
}
}