Facebook Pixel
APILinkedIn Messaging

List conversations

List recent LinkedIn conversations using DB-first approach with LinkedIn API fallback. Supports multi-account batch queries, label/unread filtering. Auto-detects Sales Navigator accounts and merges Sales Nav threads with standard conversations.

GET/conversations
Authentication requiredConversations

Code Examples

curl -X GET 'https://api.connectsafely.ai/linkedin/conversations' \
-H 'Authorization: Bearer <your_api_key>'

List recent LinkedIn conversations using DB-first approach with LinkedIn API fallback. Supports multi-account batch queries, label/unread filtering. Auto-detects Sales Navigator accounts and merges Sales Nav threads with standard conversations.

Parameters

NameInRequiredTypeDescription
accountIdqueryNostringSingle LinkedIn account ID
linkedinAccountIdsqueryNostringComma-separated account IDs for multi-account batch
countqueryNonumberNumber of conversations. Served from our cache, so up to 100 is honoured. Pages that fall through to LinkedIn are capped at 25 by LinkedIn itself (a higher count is silently clamped there), so a deep page may return fewer rows than a shallow one for the same count.
nextCursorqueryNostringPagination cursor — pass back the nextCursor from the previous response verbatim; never construct one. A plain timestamp pages our cache, a linkedin:-prefixed one continues the walk on LinkedIn. Drive the walk by nextCursor (or hasMore, which now always agrees with it) and stop when it is null. On a FILTERED listing (unreadOnly, labeledOnly, labelId, archived, snoozed, source=sales_navigator) the walk ends at the edge of our cache and returns nextCursor: null — LinkedIn cannot continue a filtered walk, so ending is deliberate rather than returning rows that do not match your filter.
labelIdqueryNostringFilter by label ID
labeledOnlyqueryNobooleanOnly labeled conversations

Request Body

No request body.

Responses

StatusDescription
200Conversations list
401Unauthorized
404Account not found
500Server error

200 Response Parameters

NameTypeDescription
successboolean
conversationsarray
accountsarray
nextCursorstring
hasMoreboolean
fromCachebooleantrue when this response was served from our cache without contacting LinkedIn during the request. false when the request refreshed from LinkedIn first. The rows always come from our store either way — this reports how fresh they are, not where they were read from.

200 Example

{
  "success": true,
  "conversations": [
    {
      "conversationUrn": "urn:li:example:123456",
      "conversationId": "conv_abcdef123456",
      "lastActivityAt": "example_value",
      "unreadCount": 25,
      "participants": [],
      "latestMessage": {},
      "source": "example_value",
      "salesNavThreadId": "12345"
    }
  ],
  "accounts": [
    {
      "id": "12345",
      "name": "example_value"
    }
  ],
  "nextCursor": "example_value",
  "hasMore": true,
  "fromCache": true
}

401 Response Parameters

NameTypeDescription
errorstring

401 Example

{
  "error": "example_value"
}

404 Response Parameters

NameTypeDescription
errorstring

404 Example

{
  "error": "example_value"
}

500 Response Parameters

NameTypeDescription
errorstring

500 Example

{
  "error": "example_value"
}

On this page