Docs / InMail

list_inmail

List your InMail conversations, or every conversation with one person.

This action only reads. It changes nothing, so it is safe to try.

What you give it

InputWhat it isWhere to get it
connectionId
optional
A connection id. Only this sender account (its linkedinConnections _id). Omit to read every live sender on the active setup.Run list_linkedin_accounts and use accounts[].id from its answer.
15 more places to get it
profileUrl
optional
A profile link or a Sales Navigator lead link. The person's LinkedIn profile URL (linkedin.com/in/…) or Sales Navigator lead URL. Returns every conversation with that one person — InMail and classic, each tagged by inbox — instead of scanning the inbox.Open the person's profile on LinkedIn and copy the address from your browser. It looks like https://www.linkedin.com/in/their-name
Or run search_people and use people[].profileUrl from its answer.
31 more places to get it
unreadOnly
optional
True or false. Only threads with unread messages.You write it.
awaitingReplyOnly
optional
True or false. Only threads where the other person wrote last (they are waiting on you).You write it.
search
optional
Text. Filter by participant name, headline or latest message text. Ranked: name/headline matches first, then latest-message matches, each newest first; every row says matchedBy. To find one known person, prefer profileUrl.You write it.
limit
optional
A number, 1 to 100. Max threads to return (default 25, max 100).You write it.
syncInbox
optional
True or false. true = first pull the ACTIVE Sales Navigator contract's InMail inbox from LinkedIn (after a contract switch, or when threads seem missing), then read. Slower (~25s).You write it.

Call it

curl -X POST https://api.heyreagent.com/v1/actions/list_inmail \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{}'
The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/list_inmail", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_KEY",
    "content-type": "application/json",
  },
  body: JSON.stringify({}),
});
const answer = await response.json();
console.log(answer);
The same call in Python
import requests

response = requests.post(
    "https://api.heyreagent.com/v1/actions/list_inmail",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={},
)
print(response.json())
The same call in n8n

Add an HTTP Request node and fill it in like this:

MethodPOST
URLhttps://api.heyreagent.com/v1/actions/list_inmail
Send HeadersOn. Name Authorization, Value Bearer YOUR_KEY
Send BodyOn. Body Content Type JSON, Specify Body Using JSON, then paste the body below
{}

Put your own key where it says YOUR_KEY. New here? Start with your first call.

What you get back

When it worked, the answer is { "ok": true, "result": { … } }. Inside result:

total
inmail
note

A field that does not apply to an answer is left out, or is null.

When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.

Good to know

In Claude or ChatGPT

Once connected, ask in your own words. The assistant sees this action as a tool with the same name, list_inmail, and the same inputs.