WebSocket events

Events are delivered over a single WebSocket (wss://ws.veroagents.com/ws) authenticated with a messaging token fetched from GET /v1/messaging/token. The @veroai/chat client handles the token exchange and reconnection for you. Each event is a JSON object with a type and a nested payload.

Envelope

{
  "type": "event",
  "conversation_id": "<optional>",
  "payload": {
    "type": "message.created",
    "payload": { ... event-specific shape ... }
  }
}

Catalog

EventFires whenPayload
message.createdSent every time a new message is persisted.{ message_id, seq_num, is_internal? }
message.editedSender edits a message via PATCH /messages/:id.{ id, conversation_id, content_text, edit_count, edited_at }
typing.startClient posts { state: 'start' } to /conversations/:id/typing.{ conversation_id, user_id, at }
typing.stopClient posts { state: 'stop' } to /conversations/:id/typing.{ conversation_id, user_id, at }
reaction.updatedAny toggle on /messages/:id/reactions.{ message_id, user_id, emoji, action: 'added' | 'removed' }
presence.updatedUser or agent presence changes (online/away/offline).{ user_id?, agent_id?, status, status_detail? }
conversation.createdA new conversation containing the user is created.{ conversation_id, contact_name?, contact_id?, group_name? }
conversation.deletedConversation is deleted (for_everyone mode).{ conversation_id }
conversation.mutedUser mutes a conversation on any device.{ conversation_id, muted_until }
conversation.unmutedUser unmutes a conversation.{ conversation_id }
conversation.archivedUser archives a conversation.{ conversation_id, archived_at }
conversation.unarchivedUser unarchives a conversation.{ conversation_id }
user.blockedUser blocks another user.{ user_id }
user.unblockedUser unblocks another user.{ user_id }
task.status_updatedAgent reports a task state transition (e.g. running → completed).{ task_id, status, current_step?, progress_narrative?, agent_id? }
task_stream_deltaStreaming token from a running agent task.{ delta, agent_id, session_id }
call.startedLiveKit call initiated inside the conversation.{ call_id, room_name, call_type, conversation_id, initiator_id }
call.answeredCall is answered by a participant.{ call_id, conversation_id, answered_by }
call.endedCall is ended. Includes total duration in seconds.{ call_id, conversation_id, duration_seconds }