# LinkedIn API Access for Posting: Profile vs Page

Source: https://blog.lots.social/linkedin-api-posting-profile-vs-page
Published: 2026-10-19T03:30:44.037449+00:00

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 profile | Company Page |
|---|---|---|
| Who the post is from | The signed-in member | The organization |
| Author in the API | `urn:li:person:{id}` | `urn:li:organization:{id}` |
| Permission to post | `w_member_social` | `w_organization_social` |
| Where the permission comes from | Share on LinkedIn (self-serve) | Community Management API (vetted); the Advertising API also grants it |
| How you get it | Add the product in the Developer Portal's Products tab | Access request form, LinkedIn review, then a second review for Standard tier |
| Who can apply | Any developer | Registered legal organizations, commercial use cases only |
| Role the member needs | None beyond being the member | Page `ADMINISTRATOR`, `CONTENT_ADMIN` or `DIRECT_SPONSORED_CONTENT_POSTER` |
| Daily limits (documented) | 150 requests per member, 100,000 per app | Development tier: 100 per member, 500 per app; Standard tier: no restrictions listed |
| Read your own posts back | `r_member_social` is closed to new requests | `r_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 type | Organic post | Sponsored post |
|---|---|---|
| Text only | Yes | Yes |
| Images | Yes | Yes |
| Videos | Yes | Yes |
| Documents | Yes | Yes |
| Article (link) | Yes | Yes |
| MultiImage | Yes | No |
| Poll | Yes | No |
| Celebration | Yes | No |
| Carousel | No | Yes |

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:

| Tool | Profiles | Company Pages | Your own LinkedIn app? |
|---|---|---|---|
| LotsSocial | Yes (`linkedin`) | Yes (`linkedin_page`) | No |
| Buffer | Yes | Yes | No |
| Typefully | Yes | Yes | No |
| Postiz, self-hosted | Yes | Yes | Yes: 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](https://lots.social/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](https://blog.lots.social/connect-social-accounts-to-ai-agent), and if you write in ChatGPT, see [how to schedule LinkedIn posts with ChatGPT](https://blog.lots.social/how-to-schedule-linkedin-posts-with-chatgpt). For other networks' rules, here are [X API pricing and access](https://blog.lots.social/x-api-pricing-and-access) and [Instagram's API publishing limits](https://blog.lots.social/instagram-api-publishing-limits-and-requirements), and if you're choosing a tool, I compared [social media MCP servers tool by tool](https://blog.lots.social/social-media-mcp-servers-compared).

## 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](https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin), [Sign In with LinkedIn using OpenID Connect](https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin-v2), [Getting Access](https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access), [Community Management overview](https://learn.microsoft.com/en-us/linkedin/marketing/community-management/community-management-overview), [Increasing Access](https://learn.microsoft.com/en-us/linkedin/marketing/increasing-access), [Community Management App Review](https://learn.microsoft.com/en-us/linkedin/marketing/community-management-app-review), [Integration Requirements](https://learn.microsoft.com/en-us/linkedin/marketing/community-management/integration-requirements-community-management), [Posts API](https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/posts-api), [Images API](https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/images-api), [Videos API](https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/videos-api), [rate limits](https://learn.microsoft.com/en-us/linkedin/shared/api-guide/concepts/rate-limits), [authorization code flow](https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow), [refresh tokens](https://learn.microsoft.com/en-us/linkedin/shared/authentication/programmatic-refresh-tokens), [versioning](https://learn.microsoft.com/en-us/linkedin/marketing/versioning), [Quick Start](https://learn.microsoft.com/en-us/linkedin/marketing/quick-start) and [restricted uses](https://learn.microsoft.com/en-us/linkedin/marketing/restricted-use-cases). Other tools from their own pages: [Buffer for LinkedIn](https://buffer.com/linkedin), [Typefully for LinkedIn](https://typefully.com/linkedin) and Postiz's [LinkedIn](https://docs.postiz.com/providers/linkedin) and [LinkedIn Page](https://docs.postiz.com/providers/linkedin-page) setup. LinkedIn changes its access rules; check its pages for the latest.*
