Docs

Python: Realtime

Publish to channels, replay missed messages, see presence and channels, open WebSockets with tickets and manage end-to-end encryption keys with the Python SDK.

Updated Oct 16, 2026
await sovaria.stream_publish("room:42", {"text": "Hello!"})
missed = await sovaria.stream_replay("room:42", after=last_seen, limit=100)

Methods

sovaria.e2ee_bootstrap_key

Create (or fetch) the active e2ee channel key.

await sovaria.e2ee_bootstrap_key(
    channel: str,
    *, ttl_seconds: int = 86400,
    force_new: bool = False,
) -> dict[str, Any]

Parameters

channelstrrequired
ttl_secondsintoptionaldefault 86400
force_newbooloptionaldefault False
Returns
dict[str, Any]

sovaria.e2ee_get_active_key

Get the active e2ee key for a channel, wrapped for client_public_key. Pass an RSA-OAEP (SHA-256) public key as PEM or base64 SPKI; the response's wrapped_key_b64 decrypts with the matching private key.

await sovaria.e2ee_get_active_key(
    channel: str,
    client_public_key: str | None = None,
) -> dict[str, Any]

Parameters

channelstrrequired
client_public_keystr | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.e2ee_get_key

Get key material by channel/key_id, wrapped for client_public_key.

await sovaria.e2ee_get_key(
    channel: str,
    key_id: str,
    client_public_key: str | None = None,
) -> dict[str, Any]

Parameters

channelstrrequired
key_idstrrequired
client_public_keystr | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.e2ee_list_keys

List key metadata for a channel.

await sovaria.e2ee_list_keys(channel: str) -> dict[str, Any]

Parameters

channelstrrequired
Returns
dict[str, Any]

sovaria.e2ee_revoke_key

Revoke an active or historical channel key.

await sovaria.e2ee_revoke_key(
    channel: str,
    *, key_id: str | None = None,
    reason: str | None = None,
) -> dict[str, Any]

Parameters

channelstrrequired
key_idstr | Noneoptionaldefault None
reasonstr | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.e2ee_rotate_key

Rotate e2ee key material for a channel.

await sovaria.e2ee_rotate_key(
    channel: str,
    *, ttl_seconds: int = 86400,
) -> dict[str, Any]

Parameters

channelstrrequired
ttl_secondsintoptionaldefault 86400
Returns
dict[str, Any]

sovaria.issue_realtime_ws_ticket

Issue a short-lived ticket for opening a Pulse websocket on one channel.

await sovaria.issue_realtime_ws_ticket(channel: str) -> str

Parameters

channelstrrequired
Returns
str

sovaria.realtime_ws_url

Build the gateway websocket URL for a channel with scope query.

sovaria.realtime_ws_url(
    channel: str,
    *, ticket: str | None = None,
) -> str

Parameters

channelstrrequired
ticketstr | Noneoptionaldefault None
Returns
str

sovaria.realtime_ws_url_with_ticket

Issue a ticket and build the gateway websocket URL for a channel.

await sovaria.realtime_ws_url_with_ticket(channel: str) -> str

Parameters

channelstrrequired
Returns
str

sovaria.stream_channels

List active realtime channels.

await sovaria.stream_channels() -> dict[str, Any]
Returns
dict[str, Any]

sovaria.stream_presence

Fetch presence for a realtime channel.

await sovaria.stream_presence(channel: str) -> dict[str, Any]

Parameters

channelstrrequired
Returns
dict[str, Any]

sovaria.stream_publish

Publish a realtime event through Pulse REST API.

await sovaria.stream_publish(
    channel: str,
    payload: dict[str, Any],
    *, clock: dict[str, int] | None = None,
    clock_delta: dict[str, int] | None = None,
) -> dict[str, Any]

Parameters

channelstrrequired
payloaddict[str, Any]required
clockdict[str, int] | Noneoptionaldefault None
clock_deltadict[str, int] | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.stream_replay

Replay events for a realtime channel.

await sovaria.stream_replay(
    channel: str,
    *, after: int = 0,
    limit: int = 200,
) -> dict[str, Any]

Parameters

channelstrrequired
afterintoptionaldefault 0
limitintoptionaldefault 200
Returns
dict[str, Any]

sovaria.stream_subscribe

Subscribe a client ID to a realtime channel.

await sovaria.stream_subscribe(
    channel: str,
    client_id: str,
) -> dict[str, Any]

Parameters

channelstrrequired
client_idstrrequired
Returns
dict[str, Any]

sovaria.stream_unsubscribe

Unsubscribe a client ID from a realtime channel.

await sovaria.stream_unsubscribe(
    channel: str,
    client_id: str,
) -> dict[str, Any]

Parameters

channelstrrequired
client_idstrrequired
Returns
dict[str, Any]
Something unclear or missing on this page?Tell us