LinkedIn API Access for Posting: Profile vs Page

SIsivaguru·
LinkedIn API Access for Posting: Profile vs Page

To post to your own LinkedIn profile through the API, you add the self-serve Share on LinkedIn product to a developer app and ask the member for the w_member_social permission. Posting as a Company Page needs w_organization_social, which comes from LinkedIn's Community Management API: a vetted product, open only to registered businesses, that LinkedIn reviews before it switches on.

That gap is why some tools post to your profile but not your Page, and why a Page connection often looks different from a profile connection. I read LinkedIn's own developer docs on Microsoft Learn on 18 October 2026 and put the rules for both in one place: permissions, the access review, rate limits, tokens, media, and what LinkedIn doesn't allow. LinkedIn changes these pages often, so check the links at the end before you rely on a number.

LinkedIn API posting at a glance: profile vs Page

Personal profileCompany Page
Who the post is fromThe signed-in memberThe organization
Author in the APIurn:li:person:{id}urn:li:organization:{id}
Permission to postw_member_socialw_organization_social
Where the permission comes fromShare on LinkedIn (self-serve)Community Management API (vetted); the Advertising API also grants it
How you get itAdd the product in the Developer Portal's Products tabAccess request form, LinkedIn review, then a second review for Standard tier
Who can applyAny developerRegistered legal organizations, commercial use cases only
Role the member needsNone beyond being the memberPage ADMINISTRATOR, CONTENT_ADMIN or DIRECT_SPONSORED_CONTENT_POSTER
Daily limits (documented)150 requests per member, 100,000 per appDevelopment tier: 100 per member, 500 per app; Standard tier: no restrictions listed
Read your own posts backr_member_social is closed to new requestsr_organization_social comes with the product

Posting to a personal profile: Share on LinkedIn

This is the open route. LinkedIn's Getting Access page lists three open permissions that any developer can add without approval: profile and email from Sign In with LinkedIn using OpenID Connect, and w_member_social from Share on LinkedIn. LinkedIn describes w_member_social as permission to post, comment and like posts on behalf of an authenticated member.

The flow:

  1. Create an app in the LinkedIn Developer Portal and add Share on LinkedIn (and Sign In with LinkedIn using OpenID Connect if you want the member's name and ID) under the Products tab.
  2. Run the 3-legged OAuth flow and request openid profile w_member_social. The member has to accept every scope you ask for; LinkedIn doesn't let them pick individual scopes.
  3. Get the member's ID from the ID token or GET https://api.linkedin.com/v2/userinfo and build the Person URN.
  4. Create the post. The Share on LinkedIn guide still shows the older POST /v2/ugcPosts endpoint; the Posts API page says POST /rest/posts replaces it. Either way the post is created with a 201 and its ID comes back in the x-restli-id header.

Share on LinkedIn allows 150 requests per member and 100,000 per application per day (UTC). One catch: an app with only w_member_social can write but not read. Reading a member's own posts back needs r_member_social, which LinkedIn says is closed and not accepting access requests.

Posting as a Company Page: w_organization_social

The Posts API uses the same endpoint for a Page. What changes is the author (urn:li:organization:{id}) and the permission (w_organization_social), and the member who authorizes your app must hold one of three Page roles: ADMINISTRATOR, CONTENT_ADMIN or DIRECT_SPONSORED_CONTENT_POSTER. Page roles can't be granted through the API; LinkedIn says to use its own UI for that.

w_organization_social isn't on the open list. LinkedIn's Increasing Access page shows it in two products:

  • Community Management API, the product built for managing Pages: posting, comments, reactions, Page and post analytics, and employee advocacy.
  • Advertising API, which also lists w_organization_social among its permissions. Some self-hosted tools tell you to request this one instead (more on that below).

Both are applications reviewed by LinkedIn, not a switch you flip.

Why posting as a Page needs Community Management API approval

LinkedIn's Community Management App Review page says every developer has to complete an access request form that LinkedIn reviews to "vet the developer and app". Here's what it asks for.

Before you apply for Development tier:

  • The API is only for registered legal organizations with commercial use cases.
  • You share a business email address (verified; personal addresses won't pass), your organization's legal name, registered address, website and privacy policy.
  • A super admin of the LinkedIn Page tied to your organization verifies your app.
  • The app's name and logo can't contain any part of the LinkedIn or Microsoft names or logos.
  • LinkedIn's FAQ says to request Development tier on a new app that doesn't have other API products.

What Development tier gives you: 500 API calls per app and 100 per member every 24 hours, no BATCH_GET calls, and no webhook push notifications. You're expected to build your core use case within 12 months.

What Standard tier asks for: a second access form, a company and product overview, test credentials for LinkedIn's reviewers, and a high-resolution, downloadable screen recording (narration recommended) that shows each use case you applied for. For Page management that means a user approving access through the full OAuth flow, a user posting to their Page from your app, how a member's comment on that post shows in your app, and which of the commenter's profile fields you display. Standard tier lists no call restrictions.

If you're rejected: you can't reapply with the same app. LinkedIn says to review the qualifications, create a new app and start again at Development tier. It also reserves the right not to upgrade a partner who meets the minimum requirements, and can suspend access later for non-compliance.

On top of that, LinkedIn is rolling out a Technical Sign Off for Community Management partners: a demo of 28 capabilities, from token heartbeats and refresh-token handling to webhooks and follower statistics.

So the reason is simple. A profile post acts for one person who signed in. A Page post speaks for a company and touches member data (comments, mentions, followers), so LinkedIn checks who you are, what you'll do with that data, and that your app does it properly before it lets you in.

LinkedIn API rate limits

LinkedIn counts limits per 24 hours and resets them at midnight UTC, at two levels: per application and per member per application. Going over returns a 429.

  • Standard limits aren't published. LinkedIn's rate limiting page says to look up each endpoint's limit in your app's Analytics tab in the Developer Portal, and it only shows endpoints you've called at least once that day.
  • The published numbers are the ones above: Share on LinkedIn at 150 per member and 100,000 per app per day, and Community Management Development tier at 100 per member and 500 per app.
  • Alerts go to developer admins when the app passes 75% of its quota, with a delay of about one to two hours, and only for app-level limits.

Tokens: why LinkedIn connections expire

LinkedIn issues every access token with a 60-day lifespan. Programmatic refresh tokens, valid for a year, are only for approved Marketing Developer Platform partners. Without one, the member has to sign in again before day 60. Even with one, the member reauthorizes when the refresh token's year runs out.

Two more rules from the OAuth docs: the authorization code lives 30 minutes, and if you request a different scope than before, LinkedIn invalidates all the member's previous tokens for your app. Add a scope later and every user signs in again.

What a post can contain

The Posts API lists what each content type supports:

Content typeOrganic postSponsored post
Text onlyYesYes
ImagesYesYes
VideosYesYes
DocumentsYesYes
Article (link)YesYes
MultiImageYesNo
PollYesNo
CelebrationYesNo
CarouselNoYes

Media goes up first, then the post references it by URN:

  • Images (Images API): under 36,152,320 pixels, JPG, GIF or PNG; GIFs up to 250 frames.
  • Video (Videos API): 3 seconds to 30 minutes, 75 KB to 500 MB, MP4. Large files go up in parts of about 4 MB, and upload URLs typically expire after 30 days.
  • Links: the Posts API doesn't scrape a URL for its preview. You set the article's title, description and thumbnail yourself, uploading the thumbnail through the Images API.
  • Targeted Page posts: a Page can aim an organic post at a subset of its followers, but the audience must be larger than 300 members.

Every call to /rest/ needs a Linkedin-Version: YYYYMM header and X-Restli-Protocol-Version: 2.0.0. LinkedIn ships a version each month and supports each one for at least a year; the latest on 18 October 2026 is 202610, and version 202511 is sunset on 16 November 2026.

What LinkedIn doesn't allow

LinkedIn's Restricted Uses page for its Marketing APIs is short and strict:

  • Member data stays in your app. It can't be exported, passed to your customers, or combined with other data to build or enrich profiles, leads or CRM records.
  • No sales, recruiting or advertising use of member data, including prospecting, lead creation, audience lists and ad targeting.
  • Storage limits: member social activity can be stored for 48 hours, and most member profile data for 24 hours.
  • No social feeds: you can't use Community Management data to show a feed of a company's LinkedIn updates on its website or intranet.
  • No headless or fake accounts, and no using one individual's profile to manage many customers' accounts.
  • Ask for less: don't request more member data than your app needs.

Option A: build your own LinkedIn app

If you only need your own profile, this is quick: one app, two self-serve products, and a token you renew every 60 days. For a Page, the work list grows:

  1. Create a LinkedIn Page for your company, then a new developer app, and have a Page super admin verify it.
  2. Apply for Community Management API Development tier with a business email, legal details, website and privacy policy.
  3. Build the OAuth flow, Page discovery through organizationAcls, media uploads and the Posts API, with the version header on every call.
  4. Record the screencast, hand over test credentials and apply for Standard tier.
  5. Handle 60-day token expiry, daily limits you only see in the Developer Portal, monthly versions and LinkedIn's data storage rules.

Option B: use a tool that holds the LinkedIn access

Here the vendor holds the LinkedIn access and you connect by signing in to LinkedIn. Self-hosted tools are the exception: you bring your own app. Checked on 18 October 2026 on each vendor's own pages:

ToolProfilesCompany PagesYour own LinkedIn app?
LotsSocialYes (linkedin)Yes (linkedin_page)No
BufferYesYesNo
TypefullyYesYesNo
Postiz, self-hostedYesYesYes: Share on LinkedIn, Sign In with OpenID Connect and the Advertising API, whose request form you fill in; its docs say the organization scopes are needed even for the profile provider

Posting to LinkedIn from your AI agent with LotsSocial

In LotsSocial, a LinkedIn profile and a LinkedIn Page are separate account types, linkedin and linkedin_page, so your agent always knows which voice a post goes out in. There's no developer app, review or token handling on your side. You add https://api.lots.social/mcp to ChatGPT, Claude, Claude Code, Cursor, Codex or any agent with remote MCP support and sign in with OAuth in your browser.

Ask your agent to connect LinkedIn and it calls get_connect_link (with platform set to linkedin for a profile or linkedin_page for a Page) and gives you a secure link. You approve on LinkedIn's own page, and the Pages you manage connect as LinkedIn Page accounts. Your profile connects through LotsSocial's own LinkedIn app with the self-serve posting permission; Pages connect through a LinkedIn integration that already has Page posting access, so you don't apply for anything.

When I ran validate_social_post on 18 October 2026 against a connected profile and a connected Page, both came back with a 3,000-character caption limit, and the check runs before a post is saved or scheduled. Because LinkedIn profile tokens last 60 days, get_account_details shows each account's connection health (active, expiring or needs reconnect), and get_connect_link with that account's ID renews it in place, keeping its post history and scheduled posts. Drafts never publish on their own, and the dashboard has the composer, calendar, bulk scheduling and analytics when you'd rather do it by hand. Your agent for speed, the dashboard for control.

You pay per connected account, and each profile or Page is one account: $2 per account a month with no plan, or plans of 12 accounts for $20, 40 for $59 and 150 for $149 a month, with extra accounts at your plan's rate. Posts are unlimited. New accounts get 5,000 free credits, valid 90 days, no card. See pricing.

Give your agent this and let it set itself up:

Read https://lots.social/skill.md and help me connect LotsSocial for you, then connect my LinkedIn profile and my company's LinkedIn Page.

The full connection walkthrough is in how to connect your social accounts to your AI agent, and if you write in ChatGPT, see how to schedule LinkedIn posts with ChatGPT. For other networks' rules, here are X API pricing and access and Instagram's API publishing limits, and if you're choosing a tool, I compared social media MCP servers tool by tool.

Common questions

Can I post to a LinkedIn Company Page through the API?

Yes, with the w_organization_social permission and a member who is an administrator, content admin or direct sponsored content poster on that Page. The permission comes from LinkedIn's Community Management API (the Advertising API also includes it), and both need LinkedIn's approval.

What is the LinkedIn Community Management API?

It's LinkedIn's API product for managing Company Pages: creating Page posts, comments and reactions, reading Page, follower and post analytics, and employee advocacy. It's a vetted product with a Development tier (500 calls per app and 100 per member a day) and a Standard tier for production, each reviewed by LinkedIn.

Who can get Community Management API access?

LinkedIn says only registered legal organizations with commercial use cases. You need a verified business email, your legal name, registered address, website and privacy policy, and a super admin of your LinkedIn Page must verify the app. Standard tier also needs a screen recording and test credentials.

Can I post to my personal LinkedIn profile without approval?

Yes. Share on LinkedIn is self-serve: add it to your app in the Developer Portal and request w_member_social. It allows 150 requests per member and 100,000 per app per day. Reading your own posts back needs r_member_social, which LinkedIn isn't granting to new apps.

How long do LinkedIn API access tokens last?

60 days. Refresh tokens, which last a year, are only for approved Marketing Developer Platform partners, so most apps have to send the member through sign-in again before day 60.

Does LotsSocial post to LinkedIn Pages?

Yes. LotsSocial treats a LinkedIn profile (linkedin) and a LinkedIn Page (linkedin_page) as separate accounts. Your agent sends you a connect link, you approve on LinkedIn, and you don't need your own developer app or Community Management approval.

LinkedIn details checked on 18 October 2026 from LinkedIn's developer docs on Microsoft Learn: Share on LinkedIn, Sign In with LinkedIn using OpenID Connect, Getting Access, Community Management overview, Increasing Access, Community Management App Review, Integration Requirements, Posts API, Images API, Videos API, rate limits, authorization code flow, refresh tokens, versioning, Quick Start and restricted uses. Other tools from their own pages: Buffer for LinkedIn, Typefully for LinkedIn and Postiz's LinkedIn and LinkedIn Page setup. LinkedIn changes its access rules; check its pages for the latest.