// pillar 04 · engagement · 9 actions

The LinkedIn messaging API for DMs, InMails and invites.

Send a LinkedIn message, InMail or connection request over HTTP — plus replies, reactions and follows. 9 engagement actions behind one identity-aware API. Connect a seat with a cookie or with email and password; engagement runs in direct mode on that identity. We manage rate limits and ramp-up.

Get your API keySee the 9 actions100 credits free · no card

Edges is not related to LinkedIn and is not an official LinkedIn product.

Jane Doe · VP Product, Acmeidentity 03 of 12 · 21 / 30 today
Hey Jane — saw you joined Acme last week, congrats. Curious how you're thinking about the activation funnel rebuild you mentioned in the AMA?sent 14:08 · invite + note · linkedin-connect-profile
Thanks! Yeah we're rebuilding from the ground up. What does Edges do exactly?replied 14:21 · linkedin-extract-conversations
One API for everything LinkedIn — data, signals, messaging. Happy to send a 5-min loom on the activation use case. Mind if I share?sent 14:24 · linkedin-message-profile
// next: send follow-up · day +3Queue
Engagement actions
9
invite · message · InMail
Uptime
99%+
status page
Customers
100+
shipping in production
Access
1 key
enrich then send

// used by

// endpoint reference

Four calls that cover outreach.

Same runner as every other Action — POST /v1/actions/{slug}/run/live. Async runs take a callback URL instead of a packaged message.received bus.

Direct message a 1st-degree connection from a connected seat. Returns a thread id you persist and reuse for follow-ups. Free with an engagement identity.

POST/v1/actions/linkedin-message-profile/run/live

cURL
curl -X POST \
  "https://api.edges.run/v1/actions/linkedin-message-profile/run/live" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EDGES_API_KEY" \
  -d '{
    "input": {
      "linkedin_profile_url": "https://www.linkedin.com/in/jane-doe"
    },
    "parameters": {
      "message": "Hey Jane — saw you joined Acme last week."
    },
    "identity_ids": ["<IDENTITY_UID>"]
  }'
Response
{
  "is_sent": true,
  "linkedin_profile_id": 123456789,
  "linkedin_thread_id": "2-OTFhNjRhZDUtY2M4ZS00OGM4LWJjYTctYTQwYjc5NmY3ZmJkXzAxMg==",
  "linkedin_thread_url": "https://www.linkedin.com/messaging/thread/2-…/",
  "linkedin_message_id": "2-MSG-EXAMPLE",
  "delivered_at": "2026-08-17T12:24:00.000Z"
}

linkedin-message-profile in the library

// Official API vs Edges

Partner OAuth, or a seat you already run.

LinkedIn Help and Microsoft Learn document the official partner path. This table is for teams shopping a third-party messaging API.

TopicOfficial LinkedIn APIEdges
AccessOAuth through a LinkedIn partner application.Connected seat — cookie, email + password, or Chrome extension. Direct mode on that identity.
ApprovalPartner / Community Management application and review.No LinkedIn partner approval. You connect a seat you already operate.
Messaging coverageCommunity Management API is built for pages and orgs, not member DMs at product depth.DMs, connection invites, InMails, inbox extract — the member outreach surface.
Sales NavigatorSeparate partner products. Not bundled with a public messaging API.First-class actions on the same key and identity.
Rate shapingQuotas LinkedIn publishes for approved apps.Per-identity daily budgets, automatic ramp-up, 429s with Retry-After.
ToS postureIn-policy for the approved use case.Third-party. You own compliance; we pace, ramp, and stop on risk signals.

Edges is not related to LinkedIn and is not an official LinkedIn product.

// Identity pool

Per-seat limits. Automatic ramping. No ban roulette.

Each LinkedIn account is an identity in the pool. We enforce per-identity rate budgets, warm new identities gradually, and stop sending when LinkedIn signals risk.

IdentityTierToday's send budgetStatusReply rate
JDJane Doeid_01 · seasoned · 18moSales Nav21 / 30active38%
RMRaj Mehtaid_02 · seasoned · 14moSales Nav29 / 30active31%
AKAnna Kimid_03 · ramping · 3wkFree5 / 10ramping
LSLeo Schmidtid_04 · seasoned · 22moPremium20 / 20 · pausedpaused42%

// daily limits · classic / sales nav

ActionClassicSales Nav
Connectlinkedin-connect-profile25 / day30 / day
Messagelinkedin-message-profile50 / day250 / day
InMaillinkedin-inmail-profilePlan creditsPlan credits
Visitlinkedin-visit-profile80 / day500 / day
Connection noteslinkedin-connect-profile5 / month, then droppedNote attached

Limits are per connected identity, not per API key. New seats ramp automatically. On 429 the API returns Retry-After and X-RateLimit-* headers so you back off cleanly. Action limits in the docs ↗

// Sequence pattern

A 5-touch sequence is a 5-call workflow.

Invite → wait → message → wait → InMail fallback. The workflow engine handles scheduling; you write the copy.

// Built for

Four outreach jobs, one messaging API.

Same identity, same rate budget, same callback path. The product shape changes; the Action catalog does not.

  • // AI sales agents

    Tool-use for outreach

    The agent resolves a profile, sends an invite or DM, and keys the next touch on the thread id. Same Actions catalog as the rest of your LinkedIn stack.

    linkedin-connect-profilelinkedin-message-profilecallback
  • // prospecting

    Invite → wait → message

    A 5-touch sequence is five Action calls. Per-seat limits and ramp-up sit in the identity pool so SDRs do not babysit daily caps.

    linkedin-connect-profilelinkedin-message-profilelinkedin-inmail-profile
  • // recruiting

    InMail and pipeline follow-up

    Premium / Recruiter InMail to anyone, then DM once they connect. Inbox extract keeps replies in your ATS, not a second inbox.

    linkedin-inmail-profilelinkedin-extract-conversations
  • // CS re-engagement

    Silent customers, named seats

    Pull threads, diff last activity, send a follow-up from the CSM's identity. Outreach only makes sense coming from a real, named account.

    linkedin-extract-conversationslinkedin-message-profile

// FAQ

Messaging, answered.

Rate-limit policy, identity warmup, and ToS posture in our docs.

01

Does Edges handle LinkedIn connection requests and DMs?

Yes. The Edges Actions API covers the outreach surface most product teams need: sending connection requests (with or without a note), direct messages on existing 1st-degree conversations, follow-up messages, and reading inbox threads. Each capability is a typed action with documented inputs and JSON responses, so you integrate it the same way you integrate any other internal microservice.

02

How does the managed session pool work — do I need to provide LinkedIn cookies?

For messaging and other engagement actions, yes — you connect a LinkedIn identity, either by passing a cookie or by logging in with email and password. Those actions run in `direct` mode against that connected seat: you don't send DMs or connection requests from the managed session pool, because outreach only makes sense coming from a real, named account. The managed pool is for reads (profiles, companies, search). Once the seat is connected, we still handle rate limits and ramp-up on it.

03

How do I connect a LinkedIn seat — cookie, email and password, or Chrome extension?

Three paths, same result: a connected identity that engagement Actions run against in `direct` mode. Pass a cookie, log in with email and password, or use the Edges Chrome extension. Reads (profiles, companies, search) can stay on the managed session pool; outreach never does.

04

Can I send InMails via API?

Yes, InMail sending is exposed as an action for accounts that have InMail credits on their LinkedIn plan (Recruiter, Sales Navigator, or Premium). You pass the recipient, subject, and body, and Edges routes the send through the linked account. Responses to InMails land in the same conversation object you can poll via extract-conversations Actions (live or async with callbacks).

05

Can I DM 2nd-degree or 3rd-degree connections?

Not as a regular DM. LinkedIn only lets you message 1st-degree connections in the inbox. Send a connection request first (linkedin-connect-profile), then message after they accept. To reach someone you are not connected to, use InMail on a Premium, Sales Navigator, or Recruiter seat that still has credits.

06

How does Edges compare to Unipile for LinkedIn messaging?

Unipile is a unified inbox API — LinkedIn as one channel among email and WhatsApp. Edges is LinkedIn-native: DMs, InMails, invites, search, and enrichment share the same auth, identity pool, and rate shaping. We manage session health and per-seat limits (ramp-up, daily budgets, 429s) so you don't have to; Unipile leaves that operational surface to you. You also get Sales Navigator, scheduled timing patterns built with Actions, and a typed action catalog Unipile doesn't ship. Side-by-side: https://edges.run/compare/unipile

07

How does Edges compare to Phantombuster for outreach?

Phantombuster runs scheduled browser phantoms. Edges is a versioned HTTP API: typed Actions, structured errors, callbacks, CI mocks. Reads can run on the managed session pool; outreach runs on a seat you connect, with per-identity rate budgets and ramp-up. Side-by-side: https://edges.run/compare/phantombuster

08

What rate limits should I expect?

Rate shaping is enforced per connected account, not per API key. Published daily defaults: connect 25 Classic / 30 Sales Nav; message 50 / 250; profile visits 80 / 500; InMail follows your LinkedIn plan credits. Classic accounts can attach a personalized connection note on 5 invites per month — after that LinkedIn drops the note silently. New identities ramp automatically. The API returns 429 with Retry-After and X-RateLimit-* headers so you can back off cleanly.

09

Does messaging consume credits?

Engagement Actions — connect, message, InMail, extract-conversations, reactions — are free when you run them with an engagement identity. Set type: "engagement" when you create the identity. You still pay for the seat you connect and you still sit inside per-identity LinkedIn limits. Reads (profiles, companies, search) use the credit pool.

10

Can I use this for automated outbound — is it compliant with LinkedIn's ToS?

LinkedIn's terms prohibit certain patterns of automated scraping and spam but allow a range of legitimate integrations; interpretation depends heavily on your specific use case, volume, and how you handle user consent. Edges provides rate shaping, per-account pacing, and opt-out-friendly primitives that make it easier to stay inside acceptable patterns, but ToS compliance ultimately rests with you as the operator. We recommend running a legal review before you ship high-volume outbound and instrumenting your own abuse signals on top of ours.

11

How does the official LinkedIn Messaging API compare to Edges?

The official path is OAuth through a LinkedIn partner application — typically the Community Management API, which is built for pages and organizations, not member DMs, invites, and InMails at product depth. Partner approval is a separate process with its own wait and scope. Edges is a third-party Actions API on a seat you connect (cookie, email + password, or Chrome extension). You get DMs, invites, InMails, inbox extract, and Sales Nav on one key, without LinkedIn partner approval. You own ToS compliance; we pace and ramp.

12

Is Edges an official LinkedIn partner?

No. Edges is not related to LinkedIn and is not an official LinkedIn product. We do not offer OAuth through LinkedIn's partner program. You connect a LinkedIn identity you already operate, and engagement Actions run in direct mode on that seat.

13

Should we build LinkedIn messaging in-house instead of buying an API?

Building means you own selectors, sessions, anti-bot posture, per-seat pacing, and a parsing layer per LinkedIn surface — plus on-call when LinkedIn changes a page. Edges already runs that operational layer: identity pool, ramp-up, 429 semantics, typed Actions. Year-one math and the hybrid pattern (Edges for production outreach, in-house for one-off research) are on https://edges.run/build-vs-buy

14

How do I track replies and follow-ups?

Every outbound send returns a linkedin_thread_id. Persist it and reuse it for follow-up sends so reporting stays keyed to one conversation. To pick up replies, schedule linkedin-extract-conversations (async or schedule) and deliver via callback.url, or poll GET /v1/runs/{run_uid}/outputs and diff threads in your app. There is no packaged message.received event.

15

Do you support webhook events for new messages?

Not as a packaged message.received event bus. Async and schedule Action runs (including extract-conversations) deliver results to your callback URL, or you poll GET /runs/{run_uid}/outputs. For ongoing inbox sync, schedule linkedin-extract-conversations and diff threads in your app — same callback / outputs path as every other Action. Integration webhooks cover AUTH_EXPIRED on the connected seat, not inbound DMs.

16

How do callbacks differ from a message.received webhook?

A message.received bus would push each inbound DM as it lands. Edges does not ship that. You schedule or run linkedin-extract-conversations, pass callback.url with on: "final" (or "all"), then fetch GET /v1/runs/{run_uid}/outputs and diff. Same callback contract as every other Action — documented at https://docs.edges.run/v1/runs/callbacks

17

Does LinkedIn have an official messaging or send-message API?

No. LinkedIn's official (Marketing / Partner) API does not expose general 1:1 messaging — there's no public endpoint to send a DM, InMail, or connection request for most developers. Edges fills that gap: send messages, InMails, and invites on a LinkedIn seat you connect, as a REST API with managed pacing. Start with Message LinkedIn Profile.

18

Is there a LinkedIn connection request (invitation) API?

Yes. Send connection requests — with or without a note — via Connect LinkedIn Profile, and manage the queue by bulk-accepting or withdrawing pending invitations with Accept pending LinkedIn invitations. Every call runs on your connected seat with per-identity pacing.

19

Can AI agents send LinkedIn messages via API?

Yes — Edges is a REST Actions API built for agents. A single call sends a DM, InMail, or connection request on your connected seat, and per-seat rate limits with automatic ramp-up keep an agent from burning the account. Replies come back via webhooks and callbacks, so an agent can run a full multi-touch sequence with Workflows.

Ship outreach you don't have to babysit.

One free identity, every engagement endpoint live, sequences scheduled.