yeetpostyeetpost

LinkedIn API access and when to get it

October 9, 2026

Working out how to get LinkedIn API access takes ten minutes at one end of the range and a partner application at the other. What separates the two is what you want the app to do. Posting as yourself is the easy tier, posting on behalf of a company page is a reviewed one, and anything that reads data at scale sits behind a partner program.

#The tiers of access

LinkedIn packages its API surface into products requested per app. A self-serve app requesting only w_member_social can clear review in minutes; a company-page or partner product needs an application LinkedIn reviews case by case, and can decline outright.

#Tiers, quotas and the review

The Advertising and Community Management products both start every app on a Development tier, and Standard is a separate application. LinkedIn's access tiers documentation puts the Community Management Development tier at 500 API calls per app per 24 hours and 100 calls per member in the same window, with batch reads disabled and social-action webhooks switched off. It also gives you twelve months from provisioning to finish the integration. Advertising's Development tier reads any ad account you administer and edits up to five of them.

Two lines on that page are worth reading before you plan around it. Restricted APIs are evaluated case by case with no fixed timeline. LinkedIn also reserves the right to select partners at its own discretion, so an app can meet every stated minimum and still not be upgraded. Many small teams apply, wait, and are declined. Plan for that outcome before betting a roadmap on it.

#Tokens, and the refresh nobody warns you about

Token lifetimes are the classic surprise. LinkedIn's three-legged OAuth documentation states that all access tokens are issued with a 60-day lifespan, that the authorization code you exchange for one has a 30-minute lifespan, and that programmatic refresh tokens are available only to a limited set of partners. For everyone else, refreshing means sending the member back through the authorization flow. That trip is invisible while they are still logged in to LinkedIn and their current token has not expired, and it becomes a full consent screen once either condition fails. Unattended automation needs a plan for that boundary.

Redirect URIs are strict in ways that cost an afternoon the first time. They must be absolute HTTPS addresses, they may not contain a fragment, and any query parameters you attach are discarded. Changing the scopes an app requests also forces every existing user to re-authenticate.

#Versioning and the endpoint you post to

Versions expire on a schedule. Posting on behalf of an organization needs w_organization_social, which is limited to members holding an ADMINISTRATOR, DIRECT_SPONSORED_CONTENT_POSTER or CONTENT_ADMIN role on that page.

The version header is the part that bites later. Marketing versions are sunset on a rolling schedule, so a pinned version that worked in January stops working, and someone has to own the job of moving it forward. Build that into the rota rather than into a comment.

One boundary is worth stating plainly. Automation that routes around the official API, scraping, browser puppeteering, session-cookie tricks, breaks LinkedIn's terms and endangers the accounts involved. If a workflow cannot be built on the official surface, change the workflow.

#Where the build is not worth it

If the goal is that an app should post to LinkedIn when something happens, building the whole stack yourself is a lot of infrastructure for one POST. App registration, the OAuth round trip, token refresh, error handling and version tracking are five moving parts, and four of them keep moving after launch. The Next.js, Python, and curl guides walk the whole thing end to end, which is the quickest way to find out how much of it you want to own.

Build direct API access when the LinkedIn integration is the product. Use a posting layer when it is one feature among many. The question to settle first is who will be updating the version header eighteen months from now.