# Messages

Send messages and retrieve conversations with LinkedIn connections.

## message send

Send a message to a LinkedIn connection.

```bash
linkedin message send <person-url> <text>
```

| Arg | Required | Description |
| --- | --- | --- |
| `person-url` | conditional | LinkedIn profile URL of the recipient. Optional when `--thread-id` is provided |
| `text` | yes | Message text (up to 1900 characters) |

| Flag | Type | Description |
| --- | --- | --- |
| `--thread-id` | string | Reply into an existing conversation thread instead of passing `person-url` |
| `--manage` | string | Manage the conversation right after sending, acting on the same thread. One of `archive`, `unarchive`, `star`, `unstar`, `mute`, `unmute` |

```bash
linkedin message send https://www.linkedin.com/in/vprudnikoff "Hey, loved your latest post!"
linkedin message send --thread-id 2-abc123... "Sounds good, talk soon!"
linkedin message send https://www.linkedin.com/in/vprudnikoff "Hey, loved your latest post!" --manage archive
```

## message get

Get conversation messages with a LinkedIn person.

```bash
linkedin message get <person-url> [flags]
```

| Arg | Required | Description |
| --- | --- | --- |
| `person-url` | yes | LinkedIn profile URL |

| Flag | Type | Description |
| --- | --- | --- |
| `--since` | string | Only retrieve messages since this ISO timestamp |

```bash
linkedin message get https://www.linkedin.com/in/vprudnikoff --json
linkedin message get https://www.linkedin.com/in/vprudnikoff --since 2024-01-15T10:30:00Z
```

> The first call for a conversation triggers a background sync, which may take longer. Subsequent calls use cached data and are faster.

## message manage

Archive, star, or mute a conversation thread.

```bash
linkedin message manage <thread-id> <operation>
```

| Arg | Required | Description |
| --- | --- | --- |
| `thread-id` | yes | Conversation thread identifier, as returned by `inbox get` / `message get`, or the `<id>` in `linkedin.com/messaging/thread/<id>` of an open conversation |
| `operation` | yes | One of `archive`, `unarchive`, `star`, `unstar`, `mute`, `unmute` |

```bash
linkedin message manage 2-abc123... archive
linkedin message manage 2-abc123... unmute
```

## inbox sync

Enable whole-inbox monitoring for the account. Run once — afterwards new messages across every conversation become available via `inbox get`.

```bash
linkedin inbox sync         # standard inbox
linkedin inbox sync --nv    # Sales Navigator inbox
```

| Flag | Type | Description |
| --- | --- | --- |
| `--nv` | bool | Enable monitoring for the Sales Navigator inbox instead of the standard one |

> Only messages that arrive after this runs are captured.

## inbox get

Get messages from the monitored inbox across all conversations.

```bash
linkedin inbox get [flags]
```

| Flag | Type | Description |
| --- | --- | --- |
| `--since` | string | Only retrieve messages after this ISO timestamp |
| `--type` | string | Filter by inbox type: `st` or `nv` (default: both) |
| `--thread-id` | string | Restrict to a single conversation thread |

```bash
linkedin inbox get --json
linkedin inbox get --since 2024-01-15T10:30:00Z --type nv
```

> Requires inbox monitoring to be enabled once with `inbox sync`.
