---
title: "List Text Threads"
method: GET
path: "/texts/threads"
tags: ["Texts"]
---

# List Text Threads

`GET /texts/threads`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/texts/threads`
- Auth: none declared

The customer's text conversations, newest activity first by default.

## Query parameters

- `page` integer: Page number
- `page_size` integer: Number of items per page
- `sort_column` string: Column to sort by
- `sort_direction` string: Sort direction
- `search` string, nullable: Search by phone number, contact name, or last message
- `status` string: open, archived, or all
- `unread` boolean, nullable: true = only threads with an unread inbound message, false = only read ones
- `last_direction` string, nullable: Reply status: inbound = needs reply (the contact wrote last, or the SMS agent handed them to staff), outbound = waiting on the contact
- `has_outbound_lead` boolean, nullable: Filter by whether the thread is linked to an outbound lead
- `start_datetime` string, date-time, nullable: Last activity >= this UTC datetime (inclusive)
- `end_datetime` string, date-time, nullable: Last activity < this UTC datetime (exclusive)
- `include_test` boolean: Include test threads

## Response `200`

Successful Response

- PaginatedTextThreadsResponse
  - `threads` TextThreadListItem[], required
    - `text_thread_id` string, uuid, required
    - `contact_phone` string, required
    - `business_phone` string, required
    - `contact_name` string, nullable: The linked outbound lead's name, else the thread's display name
    - `outbound_lead_id` string, uuid, nullable
    - `lead_id` string, uuid, nullable
    - `status` string, required
    - `last_message_at` string, date-time, nullable
    - `last_message_preview` string, nullable
    - `last_message_direction` string, nullable
    - `last_inbound_at` string, date-time, nullable
    - `is_unread` boolean, required
    - `needs_staff` boolean: The SMS agent handed this person to staff and no one at the firm has texted them or marked it handled since
    - `needs_staff_since` string, date-time, nullable: When the SMS agent handed the thread to staff, while it still needs them
    - `needs_staff_reason` string, nullable: Why the SMS agent handed the thread to staff, in the firm's words
    - `message_count` integer, required
    - `is_test` boolean, required
    - `created_at` string, date-time, required
  - `total` integer, required
  - `page` integer, required
  - `page_size` integer, required
  - `total_pages` integer, required
  - `needs_reply_count` integer, required: Open threads that need a reply (the contact wrote last, or the SMS agent handed them to staff), ignoring the other filters

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-27** `4d3da2f87786`: 3 info
  - added the optional property `threads/items/needs_staff` to the response with the `200` status
  - added the optional property `threads/items/needs_staff_reason` to the response with the `200` status
  - added the optional property `threads/items/needs_staff_since` to the response with the `200` status
- **2026-10-21** `1839412f9c61`: 1 info
  - added the required property `needs_reply_count` to the response with the `200` status
- **2026-09-25** `2874401d2b40`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openintake/apis/openintake-api/changes/texts/threads/get.md)

---

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