Skip to Content
Browse the Docs▾

Look up a LinkedIn person

GET/api/v1/linkedin/person

One person's LinkedIn relationship with each connected account, read live from LinkedIn: connected or not, any pending invite and when it was sent, and the conversation.

This route only reads. It never invites, messages or withdraws, and it keeps working when Settings → Agent → LinkedIn Sending is set to read-only, so you can watch LinkedIn relationships while Revnu sends nothing. Each call spends one of your LinkedIn account's 50 profile lookups a day. How Revnu paces LinkedIn to keep accounts safe is in LinkedIn Limits.

curl -G -H "Authorization: Bearer $REVNU_API_TOKEN" https://revnu.com/api/v1/linkedin/person \
  --data-urlencode "profile=https://www.linkedin.com/in/tom-park/"

Query

Param Meaning
profile Required. A linkedin.com/in/ URL, a public id such as tom-park, or a member id (ACoAA…).
account The name of one connected LinkedIn account in your workspace. Without it, every connected account is checked.

Response

{ "person": { providerId, publicIdentifier, name, headline } | null, "accounts": [account, …] }, one entry per connected LinkedIn account.

An account read in full is { account, connectedAs, state: "ok", connected, invite, revnuInvite, messages, messagesTruncated, lastReplyAt }:

  • connected is true when this account and the person are first-degree connections.

  • invite is the request LinkedIn reports between them, or null: { direction: "sent" | "received" | null, status: "pending" | "ignored" | "withdrawn", at }, where at is when it was sent (epoch milliseconds) if LinkedIn says.

  • revnuInvite is Revnu's own record when Revnu sent the invite from this account: { sentAt, acceptedAt, withdrawnAt }. acceptedAt is when Revnu first saw the person connected, not LinkedIn's exact time.

  • messages are the newest 50 in the conversation, oldest first: { at, from: "you" | "them", sentBy, kind, text }. sentBy is "agent" when Revnu sent it, "person" when someone replied from Revnu's inbox, and null when it was typed in LinkedIn. messagesTruncated says older messages exist.

  • lastReplyAt is the time of their newest message, or null.

An account that could not be read has a state instead: not_connected, needs_reauth (reconnect it in the dashboard), paced with message and retryAt (the account's daily profile-lookup budget is spent), or error with message, including when no profile matches.

Code Meaning
400 profile is missing or is not a LinkedIn profile URL or id.
404 No connected LinkedIn account has the name in account.

With LinkedIn sending set to read-only

This route keeps working when Settings → Agent → LinkedIn Sending is switched to read-only. Read-only stops every invite, message and InMail across the workspace, but profile lookups and conversations are reads, so connection state and the last 50 messages still come back. That makes read-only plus this route a safe way to watch LinkedIn relationships without Revnu sending anything.

Watching for changes

For people in one of your Revnu sequences, read linkedin on GET /leads instead. It carries when each invite was sent and accepted and when they replied, from Revnu's own records, and costs no lookups. This route is for people Revnu did not contact.

There is no route that lists all your connections, pending invites or conversations. Every lookup needs a profile, one person at a time. There are no LinkedIn events or webhooks either. To notice an accepted invite or a new reply, call this route for the people you care about on a schedule, such as once a day each, and compare connected, invite and lastReplyAt with what you stored last time. Every call spends lookups, so watch a short list, not your whole pipeline. For counts across the account, GET /results has linkedin.data.replies and invites for any window.

Frequently Asked Questions

Can I list all my pending invites or LinkedIn conversations?

This route answers for one person you name. For totals over a window, read invites, replies and accepts in the LinkedIn section of GET /results. To browse conversations, open the LinkedIn tab in Inbox in the dashboard.

Can this send anything on LinkedIn?

This route only reads. Nothing on it invites, messages or withdraws.

Does each call count against my LinkedIn account?

Yes. Each account checked is one profile lookup on LinkedIn, from a budget of 50 a day per account that Revnu shares, and it also counts toward the account's 90 LinkedIn actions a day, so the account never looks like a scraper. When the budget is spent, that account comes back paced with retryAt. Looking up the same person again within ten minutes is not charged twice. Lookups work at any hour. Look people up when you need them rather than polling a whole list.

Why is there no exact acceptance time?

revnuInvite.acceptedAt is when Revnu noticed the acceptance, for invites Revnu sent. LinkedIn doesn't report the exact moment.

Does this work when LinkedIn is set to read-only?

Yes. Read-only blocks sends, not lookups. You get connection state, any pending invite and the last 50 messages.

Which scope does this need?

leads:read. A token without it gets 403 with requiredScope in the body. GET /me shows a token's scopes.

Are responses cached?

No. Every response is Cache-Control: no-store, so what you read is current.