---
title: "Discover threads via semantic search"
method: POST
path: "/v1/users/{user_id}/threads/discover"
tags: ["Threads"]
---

# Discover threads via semantic search

`POST /v1/users/{user_id}/threads/discover`

## Request

- Base URL: `http://0.0.0.0:3000`
- URL: `http://0.0.0.0:3000/v1/users/{user_id}/threads/discover`
- Auth: none declared

Finds threads/conversations matching a semantic query.

Uses AI-powered semantic search to find relevant threads across all integrations.
Results are ranked by relevance score.

**Filtering options:**
- `integration_ids`: Limit search to specific integrations
- `integration_types`: Limit by integration type (e.g., "slack", "gmail")
- `after_date` / `before_date`: Filter by time range

**Example:**
```json
{
  "query": "discussions about PR #197 authentication fix",
  "integration_types": ["slack"],
  "limit": 5
}
```

## Path parameters

- `user_id` string, uuid, required

## Request body

- object
  - `query` string, required: Semantic search query
  - `integration_ids` string[]: Filter by integration IDs (int_xxx format)
  - `integration_types` string[]: Filter by integration type (slack, gmail, etc.)
  - `after_date` string, date: Filter threads with activity after this date (YYYY-MM-DD format)
  - `before_date` string, date: Filter threads with activity before this date (YYYY-MM-DD format)
  - `limit` integer: Maximum number of threads to return

## Response `200`

Default Response

- object
  - `success` true, required
  - `data` object, required
    - `threads` object[], required
      - `conversation_id` string, required: Opaque conversation ID (conv_xxx format)
      - `integration_type` string, required: Integration type (slack, gmail, outlook, etc.)
      - `title` string, required: Thread/conversation title
      - `relevance_score` number, required: Semantic relevance score (0-1)
      - `message_count` integer, required: Number of messages in the thread
      - `last_activity` string, date-time, required: Timestamp of last activity (ISO8601)
      - `preview` string, required: Preview snippet from most relevant message
    - `warnings` object[]: Data quality warnings - included when results may be degraded
      - `code` 'UNKNOWN_INTEGRATION_TYPE' | 'ENTITY_RESOLUTION_PARTIAL' | 'ENTITY_RESOLUTION_FAILED' | 'INVALID_MESSAGES_SKIPPED' | 'INVALID_CONVERSATION_DATA', required: Warning code identifying the type of data quality issue
      - `message` string, required: Human-readable description of the warning
      - `count` integer: Number of affected items (optional)

## Other responses

- `400`: Default Response
- `403`: Default Response
- `500`: Default Response

---

[API](https://skmtc.dev/attrove/apis/attrove-api.md) · [All operations](https://skmtc.dev/attrove/apis/attrove-api/llms.txt) · [OpenAPI document](https://skmtc.dev/attrove/apis/attrove-api/revisions/fcdc818b45cb?raw)
