Messages

message send

Send a message to a LinkedIn connection.

bash
linkedin message send <person-url> <text>
ArgRequiredDescription
person-urlconditionalLinkedIn profile URL of the recipient. Optional when --thread-id is provided
textyesMessage text (up to 1900 characters)
FlagTypeDescription
--thread-idstringReply into an existing conversation thread instead of passing person-url
--managestringManage 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. Prefer linkedin inbox get --person <url> to read messages; use message get when you need a person's earlier history.

bash
linkedin message get <person-url> [flags]
ArgRequiredDescription
person-urlyesLinkedIn profile URL
FlagTypeDescription
--sincestringOnly retrieve messages since this ISO timestamp
--daysintegerSyncing period for the first call, 1-90 (default 30): how many days new messages keep being added to the loaded history, not how far back it is read
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 loads its history, which may take longer. Subsequent calls use cached data and are faster. Call it once per person – not to check for new messages: new messages reach you through inbox get.

message manage

Archive, star, or mute a conversation thread.

bash
linkedin message manage <thread-id> <operation>
ArgRequiredDescription
thread-idyesConversation thread identifier, as returned by inbox get / message get, or the <id> in linkedin.com/messaging/thread/<id> of an open conversation
operationyesOne 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. This is the recommended first step for reading messages. 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
FlagTypeDescription
--nvboolEnable monitoring for the Sales Navigator inbox instead of the standard one

Only messages that arrive after this runs are captured. To get a person's earlier history, run message get <person-url> once, then read the whole conversation with inbox get --person <person-url>.

inbox get

Get messages from the monitored inbox; use --person for one person's whole conversation.

bash
linkedin inbox get [flags]
FlagTypeDescription
--sincestringOnly retrieve messages after this ISO timestamp
--typestringFilter by inbox type: st or nv (default: both)
--thread-idstringRestrict to a single conversation thread
--personstringLinkedIn profile URL. Return the whole known conversation with this person, including history loaded by message get, instead of the whole inbox
bash
linkedin inbox get --json
linkedin inbox get --since 2024-01-15T10:30:00Z --type nv
linkedin inbox get --person https://www.linkedin.com/in/vprudnikoff --json

Requires inbox monitoring to be enabled once with inbox sync. With --person, history loaded by message get is returned even without inbox monitoring.

With --person, the --json output carries threads next to messages, and each message carries inboxMessageId:

  • inboxMessageId – id of the same message in inbox get output without --person, or null if the inbox did not capture it.
  • threads – every thread with the person, each with threadId (may be null), type, personUrn, historyFrom (the earliest message Linked API has) and historyComplete (true only when the thread was read back to its first message). If historyComplete is false and you need earlier messages, run message get <person-url> once.

See Monitoring inbox for the full field reference.