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
| Event | Fires when | Payload |
|---|---|---|
message.created | Sent every time a new message is persisted. | { message_id, seq_num, is_internal? } |
message.edited | Sender edits a message via PATCH /messages/:id. | { id, conversation_id, content_text, edit_count, edited_at } |
typing.start | Client posts { state: 'start' } to /conversations/:id/typing. | { conversation_id, user_id, at } |
typing.stop | Client posts { state: 'stop' } to /conversations/:id/typing. | { conversation_id, user_id, at } |
reaction.updated | Any toggle on /messages/:id/reactions. | { message_id, user_id, emoji, action: 'added' | 'removed' } |
presence.updated | User or agent presence changes (online/away/offline). | { user_id?, agent_id?, status, status_detail? } |
conversation.created | A new conversation containing the user is created. | { conversation_id, contact_name?, contact_id?, group_name? } |
conversation.deleted | Conversation is deleted (for_everyone mode). | { conversation_id } |
conversation.muted | User mutes a conversation on any device. | { conversation_id, muted_until } |
conversation.unmuted | User unmutes a conversation. | { conversation_id } |
conversation.archived | User archives a conversation. | { conversation_id, archived_at } |
conversation.unarchived | User unarchives a conversation. | { conversation_id } |
user.blocked | User blocks another user. | { user_id } |
user.unblocked | User unblocks another user. | { user_id } |
task.status_updated | Agent reports a task state transition (e.g. running → completed). | { task_id, status, current_step?, progress_narrative?, agent_id? } |
task_stream_delta | Streaming token from a running agent task. | { delta, agent_id, session_id } |
call.started | LiveKit call initiated inside the conversation. | { call_id, room_name, call_type, conversation_id, initiator_id } |
call.answered | Call is answered by a participant. | { call_id, conversation_id, answered_by } |
call.ended | Call is ended. Includes total duration in seconds. | { call_id, conversation_id, duration_seconds } |