---
title: "Search Conversations"
method: POST
path: "/v3/account/conversations/search"
tags: ["Conversations"]
---

# Search Conversations

`POST /v3/account/conversations/search`

Search the sales conversations recorded by Lusha Conversations for your account. Returns each conversation's metadata, AI summary, action items, risks, objections, competitor mentions, coaching analysis, and chapters. Transcripts are not included — fetch those from [Get Conversation Transcript](#operation/getConversationTranscript).

**Two modes on the same contract:**
- **Keyword mode** — supply `query` to rank conversations by transcript content. All other filters are ignored.
- **Filter mode** — omit `query` and supply the structural filters.

Both modes return the same response shape. An empty body is valid and returns the first page of the account's conversations.

**Validation notes:**
- `companyDomains` matches on domain, not display name. Resolve a company name to a domain first (e.g. via [Search Companies](#operation/searchCompanies)).
- `dateFrom` / `dateTo` accept date-only `YYYY-MM-DD` values. Datetimes, reduced precision (`2026`, `2026-01`), basic format (`20260101`), and impossible dates (`2026-02-31`) are rejected with `400`.
- `pageSize` above 100 is rejected with `400` — it is not silently clamped.
- `conversationIds` that don't exist, are still processing, or belong to another account are omitted from the response rather than erroring.

> **Billing:** 1 credit per block of up to 25 conversations returned (1–25 = 1, 26–50 = 2, 51–75 = 3, 76–100 = 4), via `ci_meeting_data_export`. Charged on results returned, not the page size requested. A request that returns nothing is free. While `ci_meeting_data_export` isn't seeded on your account's pricebook, the endpoint stays free (`billing.creditsCharged` is `0`).

> **Note:** `summary`, `coaching`, and `chapters` come from an asynchronous post-call pipeline. A `null` summary on a recent conversation means analysis isn't ready yet, not "nothing found". A `null` `severity` on a risk or objection means the pipeline didn't assess it — do not read it as "low".

## Request body

- V3ConversationsSearchRequest — All properties are optional. Supply `query` for keyword mode (structural filters are then ignored), or omit `query` and supply structural filters for filter mode. An empty body returns the first page of the account's conversations.
  - `query` string — Free-text search over transcript content. When present, the structural filters below are ignored.
  - `conversationIds` string[] — Return only these conversations. IDs that don't exist, are still processing, or belong to another account are omitted from the response rather than erroring.
  - `dateFrom` string, date — Earliest meeting date, inclusive (YYYY-MM-DD).
  - `dateTo` string, date — Latest meeting date, inclusive (YYYY-MM-DD).
  - `contactNames` string[] — Partial, case-insensitive match on participant names. Multiple values are ORed.
  - `companyDomains` string[] — Company domains of the external participants (e.g. acme.com). Matches on domain, not display name. Multiple values are ORed.
  - `meetingTitles` string[] — Partial, case-insensitive match on the meeting title. Multiple values are ORed.
  - `page` integer — Page number, starting at 1.
  - `pageSize` integer — Conversations per page. Values above 100 are rejected with 400 (not silently clamped).

## Response `200`

Successful response

- V3ConversationsSearchResponse
  - `requestId` string, uuid — Correlation / request id for support and tracing.
  - `conversations` Conversation[] — Matching conversations. In keyword mode they are ordered by content relevance.
    - `id` string — Conversation identifier. Pass this to Get Conversation Transcript.
    - `title` string — Meeting title.
    - `date` string, date — Meeting date (YYYY-MM-DD).
    - `startTime` string, date-time — Meeting start time (ISO 8601).
    - `durationSeconds` number — Meeting length in seconds.
    - `durationFormatted` string — Human readable length, e.g. 30m 30s.
    - `meetingType` string, nullable — Meeting type as classified by the analysis pipeline.
    - `isExternal` boolean, nullable — true when at least one participant is outside your account.
    - `company` ConversationCompany — External participants' company. Either field may be null.
      - `name` string, nullable
      - `domain` string, nullable
    - `participants` ConversationParticipant[]
      - `name` string
      - `email` string
      - `role` string
      - `isInternal` boolean
    - `topicLabels` string[] — Topics detected in the conversation.
    - `summary` ConversationSummary, nullable — Post-call analysis, or null while it is still being produced.
      - `text` string — Narrative summary.
      - `keyHighlights` string[] — Notable moments.
      - `actionItems` ConversationActionItem[]
        - `text` string
        - `owner` string
        - `dueDate` string, date, nullable — May be null.
      - `nextSteps` string[]
      - `risks` ConversationSeverityItem[]
        - `text` string
        - `severity` string, nullable — Null means the pipeline did not assess severity. Do not read it as "low".
      - `objections` ConversationSeverityItem[]
        - `text` string
        - `severity` string, nullable — Null means the pipeline did not assess severity. Do not read it as "low".
      - `competition` ConversationCompetitor[]
        - `name` string
        - `context` string
        - `sentiment` string, nullable — May be null.
    - `coaching` ConversationCoaching, nullable — Coaching analysis, or null while it is still being produced.
      - `overallScore` number — Overall coaching score, 0–100.
      - `likelihoodOfSale` number, nullable — Predicted likelihood of closing, 0–100. May be null.
      - `sections` ConversationCoachingSection[]
        - `section` string
        - `score` number, nullable — May be null.
        - `whatHappened` string
        - `whatToKeep` string[]
        - `whatToImprove` string[]
      - `notes` string — Free-text coaching notes.
    - `chapters` ConversationChapter[] — Timestamped chapters. Empty until the analysis pipeline has run.
      - `index` integer
      - `title` string
      - `startTime` string — Offset from the start of the recording.
      - `endTime` string — Offset from the start of the recording.
      - `summary` string
  - `page` ConversationPage — Paging envelope for Search Conversations.
    - `page` integer
    - `pageSize` integer
    - `totalItems` integer
    - `totalPages` integer
  - `billing` V3Billing — Credit usage summary for a V3 API request
    - `creditsCharged` integer — Total credits charged for this request
    - `resultsReturned` integer — Number of successful results returned

## Other responses

- `400` — Bad request - invalid input data
- `401` — Unauthorized - invalid or missing API key
- `402` — Payment required - insufficient credits
- `403` — Forbidden - account inactive, V3 access not enabled, or plan does not include this feature
- `429` — Too many requests - rate limit exceeded

---

[API](https://skmtc.net/lusha/apis/lusha-api-documentation.md) · [All operations](https://skmtc.net/lusha/apis/lusha-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lusha/lusha-api-documentation/revisions/8e62fb5a9414/schema)
