---
title: "Sales Navigator proxy: list messaging threads (paged)"
method: GET
path: "/api/linkedin/{account_id}/salesnav/messaging/threads"
tags: ["LinkedIn – Sales Navigator"]
---

# Sales Navigator proxy: list messaging threads (paged)

`GET /api/linkedin/{account_id}/salesnav/messaging/threads`

## Request

- Base URL: `https://api.reachmcp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.reachmcp.com/api/linkedin/{account_id}/salesnav/messaging/threads`
- Auth: API key in header `X-API-Key`

Calls the Sales Navigator ``salesApiMessagingThreads`` endpoint and returns normalised threads.

Requires the account to have a Sales Navigator subscription (``has_sales_nav``).

**Pagination**: pass ``page_starts_at`` from the previous response's ``next_page_starts_at`` to fetch the next (older) page of threads.

## Path parameters

- `account_id` integer, required

## Query parameters

- `filter` string: Conversation folder: INBOX, ARCHIVE, UNREAD, INMAIL_PENDING, INMAIL_ACCEPTED, or INMAIL_DECLINED.
- `count` integer: Number of threads per page (default 20, max 50).
- `page_starts_at` integer, nullable: Cursor for pagination — value of next_page_starts_at from the previous response.

## Response `200`

Successful Response

- SalesNavThreadsPageOut
  - `filter` string, required: Filter used: INBOX or ARCHIVE.
  - `count` integer, required
  - `total` integer, nullable: Total number of threads matching the filter.
  - `page_starts_at` integer, nullable: Cursor passed in the request (None for first page).
  - `next_page_starts_at` integer, nullable: Pass as page_starts_at to fetch the next (older) page. None when there are no more results.
  - `items` SalesNavThreadOut[], required
    - `id` string, required: Sales Navigator thread ID.
    - `archived` boolean, required
    - `unread_count` integer, required
    - `total_message_count` integer, required
    - `restrictions` string[]
    - `next_page_starts_at` integer, nullable: Unix ms timestamp — value from the oldest thread, used as page_starts_at cursor.
    - `messages` SalesNavThreadMessageOut[], required
      - `id` string, required
      - `type` string, required: Message type: INMAIL, MESSAGE, INMAIL_ACCEPT, INMAIL_REPLY, etc.
      - `body` string, nullable
      - `subject` string, nullable
      - `delivered_at` string, date-time, nullable
      - `author_urn` string, nullable: Full fs_salesProfile URN of the author.
      - `author_salesnav_id` string, nullable: Sales Navigator ID extracted from author URN.
      - `attachments` SalesNavAttachmentOut[]
        - `name` string, nullable
        - `download_url` string, nullable
        - `media_type` string, nullable
        - `size` integer, nullable
        - `asset_urn` string, nullable
    - `participants` SalesNavProfileOut[], required
      - `entity_urn` string, required: Full fs_salesProfile URN.
      - `salesnav_id` string, nullable: Sales Navigator ID (first segment of the URN).
      - `linkedin_id` string, nullable: LinkedIn member ID (from objectUrn).
      - `firstname` string, nullable
      - `lastname` string, nullable
      - `fullname` string, nullable
      - `degree` integer, nullable
      - `profile_picture_url` string, nullable
      - `inmail_restriction` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/reachmcp/apis/mcp-reach.md) · [All operations](https://skmtc.dev/reachmcp/apis/mcp-reach/llms.txt) · [OpenAPI document](https://skmtc.dev/reachmcp/apis/mcp-reach/revisions/1a85fdaf3f7c?raw)
