---
title: "List Threads"
method: GET
path: "/v1/threads"
tags: ["threads"]
---

# List Threads

`GET /v1/threads`

List conversation threads newest first.

Requires the `messages:read` scope on the API key.

## Query parameters

- `page` integer
- `size` integer
- `query` string, nullable — Free text search matched against subject, participant emails, and names.
- `lead_status` 'ACTIVE' | 'SUCCEEDED' | 'FAILED' | 'COMPLETED' | 'WAITING_FOR_LEAD' | 'WAITING_FOR_USER' | 'STOPPED_EARLY' | 'FOUND' | 'REFUSED'
- `last_message_direction` 'INBOUND' | 'OUTBOUND'
- `contact_id` string, uuid, nullable — Filter by contact linked to the thread.

## Response `200`

Successful Response

- PublicPaginationEnvelopeThreadSummaryPublicOutput
  - `items` ThreadSummaryPublicOutput[], required — Records on this page.
    - `thread_id` string, required — Unique thread identifier.
    - `channel` 'EMAIL' | 'LINKEDIN' | 'CALENDAR' | 'MANUAL', required
    - `snippet` string, required — Preview of the latest message in the thread.
    - `contact_id` string, uuid, nullable — Contact associated with the thread.
    - `contact_name` string, required — Name of the contact.
    - `last_message_at` string, date-time, required — When the latest message was sent.
    - `last_message_direction` 'INBOUND' | 'OUTBOUND', required
    - `unread` boolean, required — Whether the thread contains unread messages.
    - `lead_status` 'ACTIVE' | 'SUCCEEDED' | 'FAILED' | 'COMPLETED' | 'WAITING_FOR_LEAD' | 'WAITING_FOR_USER' | 'STOPPED_EARLY' | 'FOUND' | 'REFUSED', required
  - `total_count` integer, required — Total number of records matching the query.
  - `total_pages` integer, required — Total number of pages.
  - `has_more` boolean, required — Whether more pages remain after the current one.

---

[API](https://skmtc.net/topo/apis/topo-public-api.md) · [All operations](https://skmtc.net/topo/apis/topo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/topo/topo-public-api/revisions/80f4fd40b75e/schema)
