letmepost / platforms / LinkedIn

Ship Your Integration
In Minutes, Not Weeks.

LinkedIn sunset five API versions in six months from 2024–25, breaking n8n, Zapier, Make, and every Postiz install. letmepost pins the version header, tracks deprecations, upgrades internally — your code keeps working when LinkedIn ships a breaking change at 2 a.m.

In review · MDP submitted · read the docs →
POST /v1/posts ·
{
  "targets": [{ "platform": "linkedin" }],
  "accountId": "acc_li_xyz",
  "text": "Shipped via letmepost. Version-pinned.",
  "options": { "visibility": "PUBLIC" }
}

Why letmepost vs LinkedIn REST direct?

LinkedIn Direct

  • You track version sunsets weekly (5 in 6 months in 2024–25)
  • You implement URN encoding for every share (urn:li:share:...)
  • You apply for Marketing Developer Platform (12-week review)
  • You hand-roll the audit-state error parser
  • You manage org-vs-personal posting branches
  • You handle MDP-gated permissions on every endpoint

letmepost API

  • Version header pinned in one config value; we own deprecations
  • version.deprecated webhook fires before sunset
  • URN encoding handled, error envelope normalized
  • Our MDP review covers hosted users; self-host applies their own
  • Personal posts in v1; org via MDP — same endpoint
  • Audit-state errors mapped to stable preflight rules

⚠ Five API versions sunset in six months

LinkedIn shipped breaking version changes 5 times in 6 months from late 2024 through mid 2025. Every existing integration (Postiz, n8n, Zapier, Make, Pabbly) broke. letmepost users got version.deprecated webhooks days ahead and zero downtime.


PLAYGROUND

connect, configure, post
▸ Connect▸ Configure▸ Execute

OAuth on linkedin.com. Personal posts work today (in review). Org posts unlock once our MDP review clears — self-host users can BYO MDP entry today.

CONNECT LINKEDIN →
Approval-gated. MDP IN REVIEW · DAY 12 / ~84

CONTENT TYPES

every linkedin surface, one shape
Share post · 3,000 graphemes
Image
Video · MP4
Personal vs Org
Scheduled

HOW IT WORKS

three steps · under two minutes

Get your API key

Sign up at dashboard.letmepost.dev.

Connect a LinkedIn account

OAuth on linkedin.com. We request the minimum scope set. Token + refresh stored encrypted.

Publish a share

One POST /v1/posts with platform: "linkedin". Personal commentary is live the day approval clears.


FEATURES

what we built so you don't

Version pin + sunset tracking

We pin the version header in a single config. The version.deprecated webhook fires when LinkedIn announces a sunset, days before it lands.

URN encoding handled

urn:li:share:... formatting is one of LinkedIn's silent failure modes. We percent-encode correctly, fail loudly on malformed URNs.

MDP-aware error surface

If a token is missing an MDP permission, the error envelope says so — not a generic 403. Remediation hint points at the exact scope.

Personal + org, one shape

Same endpoint for personal and organization posts. Org publishing unlocks once MDP review clears.


CODE EXAMPLE

publish a share · typescript
publish-linkedin.ts ·
import { Letmepost } from '@letmepost/sdk';
const lmp = new Letmepost({ apiKey: process.env.LMP_API_KEY });

const result = await lmp.posts.create({
  targets: [{ platform: 'linkedin', accountId: 'acc_li_xyz' }],
  text: 'Just published a 3,000-grapheme deep-dive on API versioning.',
  options: {
    linkedin: {
      visibility: 'PUBLIC',
      // For org posts, add: organizationUrn: 'urn:li:organization:12345'
    },
  },
});

COMMON QUESTIONS

about linkedin posting

When does LinkedIn go live on letmepost?

Personal posting flips live the day our MDP review clears (typically 8–12 weeks). Org publishing requires the full MDP grant. Self-host with your own MDP entry to use it today.

What about the version churn?

We pin the version header in one config value. GET /v1/platform-versions shows the current pin. The version.deprecated webhook fires before sunset, with the next pin in the payload.

Can I post to a Company Page?

Yes, once your MDP grant covers org posting. Pass organizationUrn: "urn:li:organization:...". Self-host with your own MDP is the fastest path.

What's URN encoding?

LinkedIn IDs look like urn:li:share:7234567890. The colons need percent-encoding in URLs (urn%3Ali%3Ashare%3A...). We handle this; the docs page has a counter tool.

Does my company need its own MDP grant?

For org-level publishing, yes — eventually. Personal posting via our shared OAuth is the day-one path.


ONE API · 8 PLATFORMS

linkedin is just one of them

LEARN MORE


READY FOR LINKEDIN PUBLISHING?

Personal commentary live the day MDP clears. Self-host with your own MDP entry to publish today. Either way, the same one POST.

* * * VERSIONED REST · PINNED * * *
PLAT · LINKEDIN · MDP IN REVIEW
→ START FREE