> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Search the archived conversation timeline for sales/support handover

> Search your workspace's complete archived conversation history from the Support → Timeline surface — free text over every message and contact on every channel, filtered the way a sales or support team actually looks for a thread — then export the result as a handover pack or a signed vCon.

# Search the archived conversation timeline for sales/support handover

Handovers fail in the same place everywhere: support solved the problem months ago, sales can't find the thread, and the customer has to retell their story on the next call. Devotel Orbit's searchable archive closes that gap on **Support → Timeline** — a free-text search over your workspace's **archived conversations**, the permanent historical record, across every connected channel. Support finds the closed thread; sales walks in already oriented.

Use this surface when a question reaches past the live queue:

* "What did we promise this account during the outage in March?" — a message-body search over archived threads, not a contact-name lookup.
* "Pull everything this customer ever told us before the renewal call." — a filtered, archived-only slice, ready to export.
* "Has anyone handled this case before, on any channel?" — archive search answers from the whole history, even threads closed or archived a year ago.

Open it from **Support → Timeline** in the dashboard sidebar. The same lookup is exposed over the API at `GET /conversations/archive/search`, so the exact search your team runs on-screen can be run by your own tooling.

For the per-file exports this page leads into, see [Export conversations as signed IETF vCon containers](/guides/conversation-export-vcon) (the signed handover artifact) and [Conversation archive](/guides/conversation-archive) (the CSV/JSON bulk export).

## What the unified timeline shows

The archive timeline reads one consistent flow of conversation history: every thread your workspace has moved out of the live queue into the archive, on every channel — SMS, WhatsApp, email, RCS, Viber, Instagram, Messenger, LINE, Telegram, web chat, voice, video, and the AI-agent surfaces. Each result row carries the contact, the channel, the status, the last message snippet, and the timestamps your team uses to place the thread in time.

Two properties make it the handover surface, not just a history viewer:

* **Archived only, enforced server-side.** The search is confined to archived conversations no matter what non-archived status filter a client sends, so an open or merely closed thread can never masquerade as settled history on this surface.
* **Archive rows deep-link into the canonical inbox thread.** The timeline is a reader. Select a result and the deep link opens the same conversation in the inbox (`/inbox?id=<conversation id>`), where the full transcript loads and the normal conversation tools apply. That is the orientation step in a handover: find it here, hand the link to the owner.

## Searching archived conversations

Type the words you remember — no field prefixes, no quoting syntax, no case sensitivity to manage. Archive search matches two ways at once:

* **Message bodies** — server-side full-text search over the complete message history, with per-term prefix matching. `refund` surfaces threads where any message on any channel used the word; a punctuated identifier such as a case id or an email address matches the tokens that were actually stored. Adding more words narrows the match.
* **Contact identity** — the same text is matched as a substring against the contact's name, phone number, and email address, so a phone prefix or an email domain finds their threads even when the messages themselves never mention it.

The accepted query is a natural-language term up to 200 characters. Send it as `q`; the legacy `search` alias does the same thing for older integrations, and `q` wins when both are present.

On top of the free text, every filter axis the unified inbox list accepts narrows the archived slice — channel, date range, assignee, tags, segment, unread state, direction of the last message — applied on top of the archived confinement, never instead of it. A contradictory `status=open` on the request does not pierce the archive; the endpoint replaces it and still returns only archived threads.

### Result shape

The response is cursor-paginated (`limit` 1–100, default 25). Follow `pagination.cursor` while `has_more` is true. Each item is one archived conversation row — contact, channel, status, timestamps, last message snippet — and pagination survives an archived thread whose last-message timestamp is empty, so a page boundary can never stall with `has_more: true` and a null cursor.

## Handover workflow: support finds it, sales owns it

The repeatable loop between a support agent and a sales owner:

1. **Search.** The support agent opens **Support → Timeline** and searches the archive with plain words: the customer's company name, an order id, or a phrase from the original complaint. Result: the closed/archived thread, with its channel and timestamps.
2. **Verify.** Select the result row — the deep link opens the same thread in the inbox with the full transcript, oldest first. Confirm this is the thread the handover is about; quote its reference when handing over.
3. **Orient.** Share the deep link with the sales owner. The owner opens the identical thread directly — no re-searching, no screenshots, no "which ticket was it again."
4. **Hand over.** Decide the handover shape: drop the deep link into the CRM note for a quick orientation, or export the slice when the owner needs an artifact (below).

Because the same `archive/search` endpoint powers tooling, a step 2–3 that's repeated often can be scripted: the CRM calls `GET /conversations/archive/search?q=<account>` itself and stores the conversation links against the account record.

## Export interaction: when a search result becomes a signed vCon

A timeline search result and a handover export answer different questions — search finds the thread; export packages it. Reach for the artifact when the handover has to be proven, not just read:

* **CSV or JSON slice** — when the owner needs the filtered result set as a file (CRM import, compliance summary, transcript pack), the archive export takes the same filters you're looking at and downloads exactly that slice from `GET /conversations/export`. See [Conversation archive](/guides/conversation-archive).
* **Signed vCon** — when one conversation must leave the workspace as a tamper-evident artifact — an external AI system, a carrier, a compliance archive — export it from `GET /conversations/:id/vcon`. The signed container binds the parties, dialog, attachments, and analysis, and any change to the bytes breaks verification. The decision guide is [Export conversations as signed IETF vCon containers](/guides/conversation-export-vcon).

Rule of thumb: orient a colleague with a deep link; hand an external party a file; hand a party who must *verify* the file a signed vCon.

## Example queries

Each request carries an `X-API-Key` header; live keys are prefixed `dv_live_sk_`. The endpoint is `GET https://api.orbit.devotel.io/api/v1/conversations/archive/search`.

**Find an account's archived threads by a remembered phrase:**

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/conversations/archive/search?q=outage%20credit&limit=25" \
  -H "X-API-Key: $ORBIT_API_KEY"
```

**Everything archived from one contact, narrowed by channel and date:**

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/conversations/archive/search?q=acme-corp.example&channel=whatsapp&date_from=2026-01-01T00:00:00Z&date_to=2026-03-31T23:59:59Z" \
  -H "X-API-Key: $ORBIT_API_KEY"
```

**Page through a longer history:**

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/conversations/archive/search?q=renewal&limit=100&cursor=<cursor-from-previous-response>" \
  -H "X-API-Key: $ORBIT_API_KEY"
```

**Same search, delivered as an export slice (CSV or JSON):**

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/conversations/export?format=json&include_messages=true&q=renewal%20terms" \
  -H "X-API-Key: $ORBIT_API_KEY" \
  -o handover.json
```

A search that returns nothing usually means the thread is still live — the archive only holds archived conversations. Re-run the same term against the unified inbox list, and the thread appears as soon as it's archived.

## Permissions and page states

* **Permissions:** the archive search reads through the dashboard's own conversation access, so any member who can read the inbox can search the archive — the page and the endpoint carry the same `conversations:read` gate the inbox and the export already use. Archive rows are restricted in exactly the way your inbox rows are; no extra role is introduced by this surface.
* **Empty result:** a search over archived conversations returns an empty list when nothing in the archive matches — not an error. Clear the filter bar to reset, or widen the date range.
* **Further history:** the archive is append-mostly — archived rows don't change out from under a search, so cursor pages stay stable while you page through the older history.

## See also

* [Support history (Support → Timeline)](/guides/support-timeline) — your organization's own conversations *with* Devotel Orbit support; the inverse surface of this page
* [Conversation archive](/guides/conversation-archive) — the CSV/JSON bulk export for a filtered result set
* [Export conversations as signed IETF vCon containers](/guides/conversation-export-vcon) — the signed, tamper-evident single-conversation handover artifact
* [Search message history](/guides/search-message-history) — the fielded `q=` DSL on the Messages list for single-message lookups
* [Interactions](/guides/interactions) — cross-channel interaction rows, with the same export shape
