Skip to content

Inbox

TelegramOS unified inbox: every conversation from all your Telegram accounts in one queue, with assignment and replies.

The inbox aggregates DM, group, channel, and bot conversations across every account in your workspace into a single real-time feed.

Figure 5. How a message reaches the unified inbox: account, ingest, store, stream, inbox.

Unified inbox concepts

Each account keeps its own MTProto connection through its own proxy. Private chats, basic groups and supergroups are always ingested. Broadcast channel posts are ingested only if the channel is in your tracked groups (opt-in; the list is refreshed every 5 minutes).

Messages are deduplicated per account, chat ID and Telegram message ID.

FeatureDescription
Real-time updatesSocket.IO connection pushes new messages as they arrive. No polling.
Per-account filterFilter the inbox to show messages from a single account only.
Per-chat filterFilter to a specific chat, group, or channel.
Unread countsPer-account and per-chat unread counters.
SearchFull-text search across all messages (indexed at ingestion).
ReplyReply to any DM or group message from the inbox.

Ownership, tags and status

Every conversation carries an owner, a list of tags and a status. Everyone in the workspace who can read the inbox sees all three.

FieldHow it works
OwnerAssign to me in the conversation header claims the thread and Unassign releases it. Claiming takes a 300-second lock; a teammate who tries to claim the thread during that time gets "Locked by another agent". The dashboard assigns a thread only to the person clicking; PATCH /api/conversations/{id} accepts any assignee_id.
TagsFree-text labels of up to 40 characters. Add or remove them in the conversation header, add one to many threads with bulk select, and filter the list by tags (a thread must carry every selected tag).
Statusopen, pending or resolved. Set it from the conversation header, or resolve and reopen threads in bulk. The list has a tab for each status. Resolving records the resolution time and reopening clears it.

Real-time updates

The inbox streams new messages over Socket.IO 4 at path /ws on the site host (wss://telegramos.net/ws). Authenticate with your session JWT in the handshake (auth.token), the access_token cookie, or an API key. An area-scoped API key needs read and inbox.

Events arrive as named Socket.IO messages rather than a single envelope: system.connected when the socket is ready, then inbox.message for a new message, notification.new, account.power_changed and the rest. Subscribe to one account's stream with subscribe:account; the server refuses accounts your workspace does not own.

Events are pushed live over Redis pub/sub and are not replayed. A client that was offline misses them. To catch up, use webhooks (inbox.new_message, inbox.message_failed, inbox.read; signed and retried) or fetch newer messages with GET /api/conversations/{id}/messages?after_msg_id=….

Edit and delete handling

When a message is edited on Telegram, the stored text is overwritten. Edit history is not retained.

Deletions are not propagated. A message deleted on Telegram stays in the inbox.

Attachments

Files you upload through the inbox are stored in S3-compatible object storage (MinIO).

PropertyValue
Storage backendMinIO (S3-compatible)
Max upload size20 MB per file
DownloadStreamed through the API. No presigned links.
Inbound mediaNot downloaded automatically. Fetched on demand.

Message storage

Message text is stored as plain text in the database. It is not encrypted at rest.

Login-code chat for rentals

Messages from Telegram's service chat (peer ID 777000) carry login codes, 2FA recovery codes and session confirmations. They are stored like any other message, but for rented accounts they are hidden at query time: the inbox does not return them. 777000 is on the hidden-peers list by default.

Why this matters: The 777000 chat is where Telegram sends one-time login codes. If a rental holder could view these, they could authenticate as the underlying phone number's owner from another Telegram client, breaking the rental isolation model. Hiding these messages is a core privacy and security boundary.

Inbox retention

Messages in the unified inbox are retained for the lifetime of the associated account. When an account is released (subscription end + grace period), all messages for that account are permanently deleted. There is no separate inbox-only retention period.

Report an issue with this page