---
title: "List Outbound Threads"
method: GET
path: "/gtm-internal/outbound/threads"
tags: ["gtm-internal"]
---

# List Outbound Threads

`GET /gtm-internal/outbound/threads`

## Request

- Base URL: `https://api-v1.unusual.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api-v1.unusual.ai/gtm-internal/outbound/threads`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

List outbound threads — EVERY reply is a row (record vs. attention:
the lanes are attention routes, not storage routes). Filters compose:

- ``status``: one board-parity status.
- ``priority_only``: P0 rows (priority flag + reason + Slack-ping ref).
- ``aging``: >24h since the prospect's last message and the ball is still
  in our court (new_reply / draft_ready / approved).
- ``needs_review``: reply required — the prospect spoke last on an open
  thread (not answered, not no_action / call_booked, not Not Interested).
- ``follow_up``: we spoke last on an open thread and it's been quiet 3+
  days (the row's ``follow_up`` says 3d / 7d / 1mo).
- ``seat`` / ``campaign``: exact match.
- ``q``: free-text contact search (name / email / company / campaign /
  profile URL, case-insensitive substring) — composes with the rest;
  the tab sends it alone to search ALL statuses and lanes.
- ``lane``: ``gtm`` | ``recruiting`` — the EFFECTIVE lane (stored pin
  from triage/operator, else the recruiting_campaigns derivation);
  omitted = both lanes.
- ``owed``: threads with an OPEN deliverable commitment ("Waiting on
  us", WO-F) — any lifecycle status, most-overdue first.

Default sort is the needs-review order: newest prospect activity first.
Each row carries its latest draft, lead context, tag, and slack_ping_ref.

## Query parameters

- `status` string, nullable
- `priority_only` boolean
- `aging` boolean
- `needs_review` boolean
- `follow_up` boolean
- `seat` string, nullable
- `campaign` string, nullable
- `q` string, nullable
- `lane` string, nullable
- `owed` boolean
- `page` integer
- `page_size` integer

## Response `200`

Successful Response

- OutboundThreadListResponse
  - `threads` OutboundThreadRow[], required
    - `id` string, required
    - `channel` string, required
    - `external_id` string, required
    - `seat` string, required
    - `campaign` string, nullable
    - `lane` string
    - `lane_pinned` boolean
    - `status` string, required
    - `priority` boolean
    - `priority_reason` string, nullable
    - `tag` string, nullable
    - `nudge_skipped_forever` boolean
    - `last_prospect_message_at` string, nullable
    - `last_our_message_at` string, nullable
    - `reply_required` boolean
    - `follow_up` string, nullable
    - `tag_by` string, nullable
    - `slack_ping_ref` object, nullable
    - `lead_name` string, nullable
    - `lead_title` string, nullable
    - `lead_company` string, nullable
    - `lead_profile_url` string, nullable
    - `lead_email` string, nullable
    - `lead_enrichment` object, nullable
    - `commitment` object, nullable
    - `sending_mailbox` string, nullable
    - `account_id` string, nullable
    - `latest_prospect_excerpt` string, nullable
    - `latest_draft` OutboundDraftOut
      - `id` string, required
      - `thread_id` string, required
      - `body` string, required
      - `kind` string, required
      - `recipient_email` string, nullable
      - `subject` string, nullable
      - `cc` string, nullable
      - `basis_message_ref` string, nullable
      - `proposed_by` string, required
      - `supersedes_draft_id` string, nullable
      - `revision_instruction` string, nullable
      - `status` string, required
      - `approved_by` string, nullable
      - `approval_surface` string, nullable
      - `approved_body` string, nullable
      - `as_sent_text` string, nullable
      - `error` string, nullable
      - `created_at` string, nullable
      - `updated_at` string, nullable
    - `created_at` string, nullable
    - `updated_at` string, nullable
  - `total` integer, required
  - `page` integer
  - `page_size` integer

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/unusual/apis/dashboard-server.md) - [All operations](https://skmtc.dev/unusual/apis/dashboard-server/llms.txt) - [OpenAPI document](https://skmtc.dev/unusual/apis/dashboard-server/revisions/89f716930ead?raw)
