in LinkedIn API Live in production. Email, messengers & calendars next
Pricing Blog
Get API key Sign in

LinkedIn Messaging API

LinkedIn Messaging API

Everyone who looks concludes the API does not exist. It does, and its terms are the discouraging part.

Updated September 2026 · 11 min read

LinkedIn documents a Messages API and an Invitations API, and both send on behalf of an authenticated member. Neither is reachable. Both sit inside the Compliance program, which is closed to new applications, and no published permission grants either one. Even for an approved partner, the terms forbid sending anything the member did not personally trigger.

That last clause is the one that decides builds, because it rules out the use case and not just the access. The other side of that line is where GTM API works, acting as a LinkedIn account you connect, which is a different arrangement entirely.

The two APIs LinkedIn documents

Guides that say no messaging API exists are describing what is reachable, not what is written down. Two endpoints are documented in LinkedIn’s own developer docs, and both do exactly what outreach tooling wants.

API What it does Key fields
Messages API
POST /v2/messages
Creates a message to one or more first-degree connections, or replies in an existing conversation messageType: MEMBER_TO_MEMBER, recipients as an array of Person URNs, subject, body, attachments
Invitations API
POST /v2/invitations
Sends a connection invitation. LinkedIn’s words: it lets you “replicate the full LinkedIn experience around connecting LinkedIn members to each other” invitee as a person, email or phone URN, plus an optional invitation message body

Both carry the same restriction line, and it is the only access information either page gives: “Usage of this API is restricted to approved partners, subject to limitations via API agreement.” The Invitations page adds one more constraint that matters for any multi-account design: “You can only send invites on behalf of the authenticated user.”

Both pages were last updated in May 2023, and neither appears in the Consumer, Marketing, Sales or Talent product catalogues. They are reachable in the documentation tree from one place only, the Compliance section, which is what makes them so easy to miss and so easy to misreport.

Why nobody has them

The program that owns those two endpoints is the Compliance API, and LinkedIn’s access table lists it as closed. It exists so that regulated firms can archive what their employees do on LinkedIn, which is why the Compliance Snapshot documentation points at the Messages API for monitoring inbox activity in the first place.

Two things follow. First, the program publishes exactly two scopes, r_compliance to retrieve activity for monitoring and archiving, and w_compliance to manage and delete data. Neither grants sending, so even a partner inside the program has no published permission that turns on either endpoint. Second, entry runs through a Business Development contact and a signed agreement with data restrictions, and LinkedIn states the APIs are limited to developers it approves.

🔑 What this changes about the usual answerThe accurate version is not that LinkedIn offers no messaging API. It is that LinkedIn offers one, keeps it inside a closed archiving program, publishes no scope that sends with it, and then forbids the automated case in the terms. Three separate locks on one door.

The clause that rules out automation

Suppose the access problem vanished tomorrow. The Messages API documentation still rules out the thing outreach tooling is built to do, in two sentences that leave no room:

“A message must be associated with a specific member action. Member actions do not include an automated or scheduled event.”

“The member must be able to edit the content of the subject, the body, and the attachments, and the member must take an affirmative action to send the message after you present the member with the draft.”

Read literally, the sanctioned product shape is a compose box: your software drafts, the person edits, the person presses send. A sequence, a schedule, a trigger, or anything that sends while the member is asleep falls outside it. The Marketing platform closes the same door from its own side, with restricted-use rules that bar member data from being used for “sending mass messages”.

The one official way a message reaches an inbox

There is a sanctioned route that puts your content in a member’s LinkedIn inbox, and it is an ad. Message Ads and Conversation Ads run through the Advertising API, and LinkedIn describes them plainly: “A Message Ad is a message delivered to a LinkedIn member’s InMail inbox”, and the Conversation Ads API “allows advertisers to deliver customizable, branded messages directly to members’ LinkedIn messaging inboxes”.

Both are creatable through the API, with POST /rest/inMailContents for Message Ads and POST /rest/conversationAds for the conversation tree. Access is the Advertising API, partner-approved, with the rw_ads permission, and every new app starts on a Development tier that can edit up to five ad accounts.

Then come the differences that decide whether it fits your build.

  • There is no recipient field. Nothing in the schemas addresses a person. Targeting is set on the campaign, delivery is triggered by the campaign running, and you never name who receives it.
  • The member controls the channel. LinkedIn states that only EU members who agreed to receive Sponsored Messaging in their inbox are eligible for the format, and that audience sizes differ from other formats because members change that setting.
  • An opt-out is forced into your creative. Since the June 2026 release a “Not Interested” call to action is rendered automatically on Message Ads and on the first message of a Conversation Ad, applied at render time and not exposed in the API.
  • Length is capped per bubble. A Conversation Ads text body must be 500 characters or fewer, a conversation holds at most 25 message contents, and a reply button label runs 1 to 35 characters.
  • The only truly addressed send is to yourself. POST /rest/inMailContents?action=sendTestInMail exists for previews, and LinkedIn notes the recipient is the authenticated member.

Worth knowing before you plan around it: LinkedIn’s Message Ads use-case page still carries a banner announcing the format’s discontinuation from May 2023, while the same documentation set shipped Message Ads changes in the June and July 2026 releases. The reasonable reading is that the withdrawal was regional and reversed, since LinkedIn separately records re-enabling EU targeting for Sponsored Messaging in October 2024. Check the versioned API docs, which the use-case page has not kept up with.

Messaging and connecting through an account you own

An account-based API does not ask LinkedIn’s platform for permission. It acts as a LinkedIn account you connect and control, which is a different risk model and worth naming plainly: LinkedIn’s Terms of Service do not permit third-party automation, so every provider in this category carries that risk, and they differ in how hard the engine works to keep an account inside its own ceiling. Unipile, Linked API and GTM API all work this way. Across 20,000+ connected accounts, gtm-api.com reports under a 1% ban rate on the stack underneath.

  • Invitations, with or without a note. Send, withdraw, accept and ignore, plus listing connections and followers, on the account you connected.
  • Direct messages and InMail. Regular messages, InMail, and Sales Navigator messages as a separate surface, with conversation and message sync so replies come back into your system.
  • One budget per action type. Self-reported defaults from the engine that runs them: messages 50 a day at roughly eight minutes apart, InMail 30 a day, connection requests 25 a day at roughly ten minutes apart.
  • Counting on success only. A refused call does not spend the day’s budget, and after a refusal the account pauses on that action for its own recovery window, and does not retry into it.

The honest limit of this route is the account. One LinkedIn account can do only so much in a day whoever is driving it, and pushing past that is what precedes a restriction. The numbers behind that sit on the LinkedIn limits page.

send a LinkedIn messagebash
# full reference: docs.gtm-api.com
curl -X POST https://app.gtm-api.com/linkedin/v4/api/linkedin-messages/send \
  -H "Authorization: Bearer $GTM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "linkedin_account_sid": "ln_ac_...", "ln_id": "ACoAA...", "text": "Thanks for connecting!" }'

Frequently Asked Questions

Is there an official LinkedIn API to send messages?

Yes, and it is out of reach. LinkedIn documents a Messages API at POST /v2/messages that sends to first-degree connections, but it lives in the Compliance program, which is closed to new applications, and the program’s two published scopes cover retrieving and deleting data, and neither one sends. Its own terms also require a member to edit and press send on every message.

Is there an official LinkedIn API to send connection requests?

Yes, on paper. The Invitations API at POST /v2/invitations takes a person, email or phone URN and an optional note, and LinkedIn describes it as replicating the full connecting experience. It carries the same restriction as the Messages API, sits in the same closed Compliance program, and can only send on behalf of the authenticated user.

Can I send an InMail through an API?

Not as a member-to-member InMail. Recruiter System Connect reads InMail history and does not send, Sales Navigator’s messaging happens inside an embedded interface, so there is no endpoint to call, and SNAP’s four scopes are all read-only. The Advertising API can deliver a sponsored message to an inbox, which LinkedIn distinguishes from InMail between members.

What is the Compliance API and can I get access to it?

It is the program that lets regulated firms archive their employees’ LinkedIn activity, and it owns the Messages and Invitations endpoints. LinkedIn’s access table lists it as closed to new applications. Entry ran through a Business Development contact and a signed agreement with data restrictions, and its two scopes, r_compliance and w_compliance, cover retrieving and deleting data, and neither one sends.

Are Message Ads the same as sending someone a message?

No, and LinkedIn draws the line itself: a Message Ad is “a branded message with a call-to-action button”, unlike InMail between members. It arrives in the inbox, but the schemas carry no recipient field, so you target an audience on the campaign and never address a person. A “Not Interested” control is rendered into it automatically and cannot be removed through the API.

Sources & Further Reading

Send from an account, not from an application.

Invitations, messages and InMail on an account you connect, with per-action budgets that hold it inside its ceiling. On that stack, gtm-api.com reports 20,000+ accounts at under a 1% ban rate. Free plan, then from $10 per account at volume.

Get your API key →

Last updated: September 2026 · Endpoints, scopes, program status and sponsored-messaging behaviour verified against LinkedIn’s developer documentation on 16 August 2026