---
title: "Analyze a thread for insights"
method: POST
path: "/v1/users/{user_id}/threads/{conversation_id}/analyze"
tags: ["Threads"]
---

# Analyze a thread for insights

`POST /v1/users/{user_id}/threads/{conversation_id}/analyze`

## Request

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

Analyzes a conversation/thread and extracts structured insights.

Returns:
- **summary**: Detailed summary with specific facts, names, dates
- **short_summary**: One-sentence summary of the key outcome
- **sentiment**: Overall tone (positive, neutral, negative, mixed)
- **action_items**: Tasks identified with owners and deadlines
- **decisions**: Decisions made with who made them
- **blockers**: Issues or blockers with who owns them
- **participants**: List of people in the conversation

**Example response:**
```json
{
  "summary": "Discussion about PR #197 authentication fix...",
  "sentiment": "positive",
  "action_items": [
    {"description": "Review security implications", "owner": "Sarah", "deadline": "2025-01-27"}
  ],
  "decisions": [
    {"description": "Use JWT tokens instead of session cookies", "made_by": "Mike"}
  ]
}
```

## Path parameters

- `user_id` string, uuid, required
- `conversation_id` string, required

## Request body

- object: No request body required

## Response `200`

Default Response

- object
  - `success` true, required
  - `data` object, required
    - `summary` string, required: Detailed thread summary
    - `short_summary` string, required: One-sentence summary
    - `sentiment` 'positive' | 'neutral' | 'negative' | 'mixed', required: Overall sentiment of the conversation
    - `action_items` object[], required: Extracted action items
      - `description` string, required
      - `owner` string, nullable
      - `deadline` string, nullable
    - `decisions` object[], required: Decisions made in the thread
      - `description` string, required
      - `made_by` string, nullable
    - `blockers` object[], required: Blockers or issues identified
      - `description` string, required
      - `owner` string, nullable
    - `participants` string[], required: List of participant names
    - `message_count` integer, required: Number of messages analyzed
    - `date_range` object, required
      - `start` string, date-time, required
      - `end` string, date-time, required
    - `warnings` object[]: Data quality warnings - included when results may be degraded (e.g., participant names could not be resolved)
      - `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
- `404`: 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)
