Skip to content

SSE Events

Subscribe to real-time daemon events via GET /events.

curl -N http://127.0.0.1:7200/events

Each event is a JSON object in the data: field of an SSE message.


Core events

type Key fields When
IncomingMsg account_id, chat_id, msg_id New message arrives
MsgDelivered account_id, chat_id, msg_id Delivered to recipient's server
MsgRead account_id, chat_id, msg_id Recipient opened the message
MsgFailed account_id, chat_id, msg_id Delivery failed
ConnectivityChanged account_id Network state changed — call get_connectivity
ChatModified account_id, chat_id Chat metadata updated
ContactsChanged account_id, contact_id Contact list updated
Warning account_id, msg Non-fatal warning
Error account_id, msg Core error

Secure join events

type Key fields When
SecurejoinInviterProgress account_id, contact_id, progress Peer completing join (inviter side)
SecurejoinJoinerProgress account_id, contact_id, progress Join steps progressing (joiner side)

progress: 0 = failed, 1–999 = in progress, 1000 = complete.


Privitty events

type Key fields When
PrivittyChatEncryptionChanged chat_id, is_encrypted Handshake completed or removed
PrivittyFileEncrypted chat_id, msg_id File encrypted after send
PrivittyFileDecrypted chat_id, msg_id File decrypted for viewing
PrivittyPeerHandshakeComplete chat_id, contact_id Key exchange finished
PrivittyFileAccessRevoked chat_id, contact_id, file_id Access revoked
PrivittyFileAccessChanged chat_id, file_id Access state changed
PrivittyAccessRenewRequested chat_id, file_id, requester_contact_id Peer requested renewal

Setup / transfer events

type Key fields When
ConfigureProgress account_id, progress Account setup (0–1000)
ImexProgress account_id, progress Import/export progress (0–1000)

Keepalive and backpressure

: ping

Sent every 15 seconds. If your client cannot keep up:

event: lag
data: {"dropped":5}

See Example D · SSE Streaming for Python and shell examples.