oqimDocs
API referenceConsole

Start here

  • Introduction
  • Getting started

Guides

  • Telegram accounts
  • Recipients
  • Campaigns
  • Scheduling
  • Webhooks
  • AI writing assistant

AI Seller

  • AI Seller
  • Channels
  • Live inbox
  • Past conversations and privacy
  • Business insights

API

  • Authentication
  • API reference
  • SDK
  • Errors
  • Rate limits

Trust and operations

  • Security
  • Compliance
  • Administration
Docs / Past conversations and privacy

Start here

  • Introduction
  • Getting started

Guides

  • Telegram accounts
  • Recipients
  • Campaigns
  • Scheduling
  • Webhooks
  • AI writing assistant

AI Seller

  • AI Seller
  • Channels
  • Live inbox
  • Past conversations and privacy
  • Business insights

API

  • Authentication
  • API reference
  • SDK
  • Errors
  • Rate limits

Trust and operations

  • Security
  • Compliance
  • Administration

Past conversations and privacy

Owners want their insight boards to explain the business from day one, including chats from before Oqim or before the AI was switched on. Oqim can analyse those past conversations — and does it without ever letting an imported message cause a reply. This page covers what is imported, what is deliberately left out, and what leaves the platform.

Where past conversations come from#

  • Conversations Oqim already stored — an account that has been sending campaigns for a year, with the AI switched on only now.
  • History imported from the platform — messages from before the account was connected. Telegram through the account's own session, Instagram and Facebook through Meta's Conversations API.

Both are analysed the same way as live ones, and both are inert: reading them changes nothing about whether a reply may be sent. The analysis itself is described under Business insights.

Importing history#

ChannelWhat can be importedLimits
TelegramPrivate dialogs, from a date you choose or everything. Started with POST /accounts/{id}/history/import and {since: "YYYY-MM-DD", include_contacts?: false}, up to 365 days back (90 by default); a full-history run sends {since: "all", per_chat_limit: 10000}.Resumable per chat, flood-wait aware, and bounded by a per-chat message cap (500 by default, 10,000 for a full-history run). It can take hours, because Telegram's rate limits apply.
Instagram and FacebookRecent threads, started on connect and on demand with POST /channels/accounts/{id}/history/import {since?}, back at most 365 days (90 by default).Meta's own limit: the last 20 messages of each conversation, and nothing older. Oqim asks for exactly that many per thread, and reports the number as history_messages_per_thread on GET /channels/providers. Every message that arrives afterwards is stored in full from the moment the account is connected.

The two channels cannot be equal

Telegram can hand over the whole history of a private dialog, and Oqim will read as far back as you ask. Meta never exposes more than the last 20 messages of a thread, so a Facebook or Instagram conversation imported today can never explain what happened a year ago. That is the platform's limit, not a setting in Oqim.

An import never touches a chat's read state on the platform — importing is not reading. Progress lives in one shape on every channel: status (IDLE, RUNNING, DONE, FAILED, CANCELLED), since, chats_found, chats_imported, chats_skipped_personal, messages_imported, start and finish times, and the error when there is one. On Instagram and Facebook chats_skipped_personal is always zero — those channels have no contact list to exclude.

The console has an “Import past chats” section on a Telegram account, and a history import on a connected account's page, with progress and a cancel.

Imported history stays inert#

An imported message is stored with the platform's own timestamps and marked as imported. It is never live again: it is history Oqim can analyse, and nothing more.

An imported message never…Because
Starts a Seller turn, a draft, a handoff trigger or an analysis windowThe AI acts on live messages only. A reply to something the customer wrote last year is not a reply, it is an ambush.
Opens a reply windowThe window runs from the person's last live message. Importing does not make an old thread answerable.
Raises the unread counterThe inbox badge counts messages that arrived while you were away, not a year of history.
Fires per-message webhooksOne summary event is emitted per import instead: channels.history.imported.
  • Opt-outs found in history still count. This is the one deliberate exception, and it is conservative: an opt-out request found in imported messages marks the conversation opted out, because honouring a stop request late is better than ignoring it.
  • Duplicates are dropped. Messages are matched by the platform's own message id, so importing the same period twice only adds what was missing.
  • A finished import is a signal, not a send. channels.history.imported carries the account, the channel and the counts of chats and messages imported, and it is what starts the analysis of those past conversations.

Personal chats#

A business's Telegram account is also somebody's phone. Personal chats — family, friends, suppliers — are never imported, never answered and never analysed, and they are never sent to a model.

Left out of an importNote
Groups, channels, bots, Saved Messages and service chatsOqim handles private conversations only.
The account's contacts, mutual or savedMarked personal automatically. include_contacts: true imports them anyway, and the console warns you before it does.
Chats the owner marked personalYour own decision always wins over the automatic one.

PUT /ai/conversations/{id}/personal takes {personal: true|false} and marks a single conversation. A personal conversation is hidden from the AI, the analysis and the boards, is excluded from the Seller entirely, and loses the analyses it already had. Its messages stay unless somebody deletes them. The inbox still shows it — to owners and admins only, never to other roles, and never to the AI.

Turning a chat personal is not a delete

Marking a conversation personal strips its analyses and keeps it away from the AI, but the message history remains in Oqim. If you need the data gone, delete the conversation's messages explicitly, or disconnect the account and use Meta's data-deletion callback for its channel.

What the AI is allowed to see#

Analysis covers the private chats of accounts that have analysis switched on. It never covers groups, and never a conversation marked personal. The same scope governs the Seller, the conversation intelligence and the case analysis — they read one flag, so they cannot disagree about which chats are in play.

At rest

  • Message bodies are sealed with the application key and bound to their conversation, so a copied row is useless in another organization or another thread. Only the API and the worker hold the keys.
  • Board narratives and conversation explanations — the text written from message content — are sealed the same way.
  • Metadata (direction, timestamps, platform ids, lengths) stays in the clear, because the boards count and group by it and it says nothing about what was written.

To JEV

  • Sharing data with TypeSafe is an opt-in per organization, disclosed on the JEV settings screen. Without it, Oqim does not call JEV at all.
  • What JEV receives is masked text and a minimal structured state: the current message, a short summary, the current stage and the known needs — never the whole history. Names, phone numbers and handles are masked by the JEV package before the request leaves.
  • Case analysis and comment classification follow the same rule: JEV is given masked text, never an archive.

To your own model

  • The reply is written by the provider you connect, under your provider's terms. What reaches it is the material the reply needs: the recent messages, the summary, the retrieved knowledge, the identity and profile settings, and the offer catalog.
  • Analytics, scores, flags, other conversations and other organizations are never part of that request. Nothing about a personal chat is either.
  • The companion feature, the AI writing assistant, is stricter still: it sends only the brief or the message text you are editing, and never recipient data.

Disconnecting and deleting#

  • Disconnecting an account unsubscribes its webhooks, drops its tokens and marks it disconnected. Conversations and imported history stay, and remain subject to the rules above.
  • Meta's callbacks are honoured. A deauthorize request, or a data-deletion request that Meta signs, disconnects the account; a data-deletion request also deletes that person's messages and profile data and answers Meta with a confirmation code and a status URL.
  • Nothing is re-routed. A restricted account stops everything, the Seller included; Oqim does not move a conversation to another account to keep it going.

The short version#

  • Imported history is analysed and never answered.
  • Opt-outs found in it are honoured anyway.
  • Personal chats are never imported, answered or analysed.
  • Reading in Oqim never marks anything read on the platform.
  • Message text is sealed at rest, masked before it reaches JEV, and sent to your model only as much as a reply needs.
  • No account ever writes to somebody who did not write first — see Channels.
PreviousLive inboxNext Business insights