LinkedIn API: Access, OAuth Permissions, and Automation Boundaries for Marketing Teams

LinkedIn API provides official access to LinkedIn data and actions through approved OAuth scopes and vetted products.
Teams use it to connect Sign in with LinkedIn, advertising reports, Lead Sync, Community Management, and selected publishing workflows. In practical B2B processes, it is important to separate the API as an integration layer, browser operations, CRM synchronization, and manual team actions from the start because LinkedIn does not provide one universal route for every task.
Marketing teams often make one simple mistake: “we need LinkedIn automation,” even though this request combines very different needs. The API supports authorized integrations such as advertising or lead workflows. LinkedIn automation applies to processes where a team checks sessions, interfaces, profiles, and operational roles.
When a team needs to run controlled browser profiles alongside official API processes without substituting them for LinkedIn permissions, automation through the Afina API is appropriate. This guide explains which LinkedIn API products are available in 2026, which OAuth permissions to request, where to check limits and versions, and where the API layer ends and browser QA begins.
Which LinkedIn API products are available to different application types
LinkedIn API is not a single endpoint. It includes several products with different access levels. Some permissions become available after an application is created, others require approval, and some programs are limited to partners or closed to new applications.
For a marketing team, the practical categories are authentication, advertising, leads, organization pages, events, audiences, and limited profile data. The official LinkedIn documentation explains access to API products and their corresponding OAuth 2.0 permissions.
| API product | What it provides | Typical use case | Access level |
|---|---|---|---|
| Sign in with LinkedIn using OpenID Connect | openid, profile, email | signing in to a B2B SaaS product or portal | open permission |
| Share on LinkedIn | w_member_social | publishing on behalf of a member; other social actions depend on the product and available permissions | open permission with usage rules |
| Advertising API | r_ads, rw_ads, r_ads_reporting | campaigns, ad accounts, and reports | approval |
| Lead Sync API | r_marketing_leadgen_automation | transferring form leads to a CRM | approval |
| Community Management API | w_organization_social, r_organization_social | company pages and organization content | Development or Standard tier depending on approval |
| Matched Audiences API | rw_dmp_segments | audience segments | separate approval; Advertising API access does not grant it automatically |
| Company Intelligence API | separate application access | company insights | verify current application availability in Developer Portal |
The table shows the key point: “LinkedIn API access” means little without naming the specific product. A developer may have Sign in with LinkedIn while still lacking permission to read ad accounts, synchronize leads, or work with an organization page.
For B2B lead generation, teams usually need Lead Sync API, Advertising API, and clear CRM synchronization logic. If the task involves publishing from a company page, the focus shifts to Community Management API. Individual profiles require extra care because LinkedIn does not turn a personal profile into a fully open programmable resource.
How to obtain access and identify the required OAuth permissions
Access starts with defining the use case, not writing code. LinkedIn evaluates what the application does with data, which permissions it requests, and whether the scenario matches the product for which the team is applying.
In practice, OAuth scopes define which operations an application can request on behalf of a user. Scopes alone are not enough: access also depends on the approved API product, the application's access tier, and the user's role for a specific resource. If an application requests r_ads_reporting, it must explain why it reads advertising reports. If it requests w_organization_social, the need to publish or interact on behalf of an organization must be clear.

Before applying, prepare a concise access matrix. It reduces the risk of excessive permissions and speeds up internal approval between marketing, development, and legal teams.
| Business task | Minimum access | What to verify before applying |
|---|---|---|
| user sign-in through LinkedIn | openid, profile, email | privacy policy and redirect URI |
| advertising reports | r_ads, r_ads_reporting | the user's role in the ad account |
| editing advertising campaigns | rw_ads | campaign manager or account manager rights |
| synchronizing Lead Gen Forms | r_marketing_leadgen_automation | CRM fields, data storage, and consent |
| publishing from a company page | w_organization_social | page administrator role |
| organization page analytics | r_organization_admin, r_organization_social | page permissions and access tier |
When checking access, distinguish three situations. If the token is valid but the required scope is missing, review the requested permissions and repeat authorization. If the scope is granted but the user lacks the necessary role in an ad account or on a page, verify access to that specific resource. If both the scope and role are correct but the request is still rejected, confirm that the application has the required API product and access tier. Use the endpoint response and application settings to identify the exact cause.
Keep the basic sequence short and verifiable:
- Create an application in LinkedIn Developer Portal
- Associate it with a verified Company Page when the product requires one
- Describe the use case in one sentence without broad wording
- Add only the products and permissions required for the first version
- Configure the OAuth redirect URI and verify the consent screen
- Test the authorization flow and record the scopes in technical documentation
- Apply for approval for Advertising API, Lead Sync, or Community Management
- Record the application date, expected access tier, and the person responsible for maintaining access
A strong application states a specific goal: “we synchronize Lead Gen Forms with the client's CRM and display the lead processing status.” A weak application uses wording that is too broad: “we automate LinkedIn for sales.” The second version may be interpreted as unwanted outreach or data collection, so LinkedIn may request clarification.

This diagram helps the team see which permissions the integration genuinely needs, who must confirm access, and which data may be transferred to the CRM before development begins.
Which actions can be performed for a member or organization
LinkedIn API permits only actions exposed by a specific product and confirmed by an OAuth permission. An access token is not a “key to LinkedIn”; it is a limited pass to a narrow set of operations.
The most useful marketing scenarios are often not the most complex. They include reporting, lead transfer, advertising entity synchronization, organization content, and analytics. These processes fit marketing automation because they are repeatable, controlled, and do not imitate human behavior at scale.
The following tasks can be implemented through an official API:
- Authorizing a user through LinkedIn
- Reading a basic profile and email within the granted consent
- Reading ad accounts, campaigns, and reports after access approval
- Updating advertising campaigns within the user's roles
- Synchronizing Lead Gen Forms with a CRM
- Working with organization posts and comments through an approved product
- Working with organization events when the application has access to the relevant product
The following tasks should not be described as “standard LinkedIn API” functionality:
- Mass connection requests
- Automated direct messages or InMail
- Collecting profiles from search as a substitute for CRM enrichment
- Bypassing approval through internal web endpoints
- Imitating personal profile behavior at high frequency
- Selling or enriching Member Data outside an approved use case
Browser workflows should not be called API integrations because their risks, logging, and error handling differ. An API returns scope, role, request limit, and version errors. A browser workflow fails because of UI changes, session state, browser parameters, cookies, proxies, and protection system signals.

Consider a simple example. An agency manages several LinkedIn Ads clients and needs a daily reporting dashboard. Browser profiles are unnecessary for Campaign Manager here: Advertising API, the correct ad account roles, and delayed retries are enough. A different task is content QA on client pages through separate operator profiles. The API can retrieve some data, but checking rendering, session state, and the administrator role belongs closer to the browser layer.
Example LinkedIn API request
After receiving an OAuth token, the application can call an approved endpoint. For example, it can use the UserInfo endpoint to read the authenticated member's data through OpenID Connect:
curl --request GET 'https://api.linkedin.com/v2/userinfo' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
This request requires a token with the appropriate OpenID Connect permissions. Versioned Marketing API REST endpoints may also require the Linkedin-Version: YYYYMM and X-Restli-Protocol-Version: 2.0.0 headers, depending on the method. Do not add them mechanically to every endpoint; consult the documentation for the relevant API. Never store tokens in open logs.
How to check API versions, limits, and product availability changes
A LinkedIn API integration requires regular maintenance. Versions, permissions, access tiers, and product availability change, so the team should schedule checks rather than treating verification as a one-time task.
According to the official Marketing API migration table, version 202510 has a sunset date of October 15, 2026, while version 202511 has a sunset date of November 16, 2026. Check the live status in the supported versions table immediately before migration and move integrations away from unsupported versions.
Do not guess request limits either. For the Community Management API Development tier, the official documentation lists 500 API calls per application per 24 hours and 100 API calls per application member per 24 hours. The Development tier also restricts BATCH_GET and webhooks. Advertising API uses a different Development-tier model: the application may read data for ad accounts administered by the user, create one test ad account, and edit up to five administered ad accounts.

Use this integration maintenance checklist:
- Record the date of the latest Microsoft Learn and Developer Portal review
- Store the API version in configuration rather than only in code
- Log the HTTP status, endpoint, scope, member ID, and application ID without logging tokens
- Separate permission, role, tier, rate limit, and validation errors
- Add backoff for 429 responses and recurring temporary errors
- Verify user roles before acting on an ad account or Company Page
- Create a migration calendar for deprecated versions
- Document which fields are stored in the CRM and how they can be deleted
During diagnostics, distinguish the common HTTP errors:
| Code | Possible cause | What to check |
|---|---|---|
400 | Invalid parameters or request body | Format, required fields, and endpoint requirements |
401 | Invalid or expired token | Token lifetime and authorization flow |
403 | Insufficient permissions | Scopes, user role, product approval, and access tier |
429 | Request limit exceeded | Application limits, response headers, and delayed retry |
These are common explanations rather than a universal decoder. Determine the final cause from the response returned by the specific endpoint.
Treat API blocking carefully. A 403 response does not always mean “LinkedIn is broken.” It often indicates an incorrect scope, a missing page role, incomplete approval, or an endpoint outside the current access tier. A 429 response does not always signal a general ban either; the application may simply have exceeded the daily Development-tier limit.
A compact operating table provides practical value. Include the product, scope, owner, tier, limit, approval date, latest review date, and fallback procedure. Over time, this table makes integration maintenance and error diagnosis easier.
Where does the API end and browser QA begin
The API ends where the team must check the real session state, UI, user role in the interface, or page behavior after sign-in. Browser QA does not replace LinkedIn API, but it covers checks whose results the API cannot show.
For example, the API may report that an application has permission to read advertising data. It cannot show how a specific operator sees Campaign Manager after a client changes their role, whether a Lead Gen Form opens correctly in the UI, or whether the session requires renewed consent. These cases require controlled browser profiles, a session log, and a clear QA procedure.
The difference between the API and browser layers looks like this:
| Criterion | Official LinkedIn API | Browser QA |
|---|---|---|
| access source | OAuth token and approved API product | user session in a browser |
| error types | scopes, roles, tiers, and request limits | cookies, UI, consent, and session expiry |
| best use | CRM, ads reporting, lead sync, and organization content | role checks, rendering checks, and manual workflows |
| scaling | queues, delayed retries, and limits | profiles, proxies, timing, and state control |
| primary risk | excessive permissions or data misuse | account confusion and unstable sessions |
Browser automation matters for browser QA, but not in an aggressive sense. The goal is to repeat controlled checks: open a page, confirm a role, compare the visible status, capture a screenshot, and record the result in a table. If the workflow begins to imitate outreach at scale, it falls outside safe and controlled QA.

A practical structure for a marketing team is:
- Keep LinkedIn API as the source of structured data and approved actions
- Move browser QA into a separate workflow with its own log
- Assign each profile to a role or client rather than a random operator
- Check cookies, consent, and access before starting long-running tasks
- Keep screenshots only for QA and redact personal data
- Do not combine API errors and browser failures under one status
When is Afina appropriate
Afina is appropriate as an infrastructure layer for browser QA alongside official API integrations. For example, an agency working with several client LinkedIn accounts can use separate browser profiles to verify roles, session state, and interface rendering without constantly switching between accounts. Cookies, proxies, language, time zone, and role remain part of the corresponding work context. Teams should perform these checks only within the actions available to authorized users and LinkedIn's rules.
This material is for informational purposes. Teams should document API access rights and browser verification workflows separately. This separation simplifies integration maintenance and helps explain the boundaries of approved actions to clients.
DownloadFAQ — Frequently Asked Questions
What is LinkedIn API?
LinkedIn API is the official set of products and endpoints for accessing selected LinkedIn data and actions through OAuth. Access depends on OAuth permissions, API product approval, and the user's role.
How do you get access to LinkedIn API?
Create an application in LinkedIn Developer Portal, add the required product, and obtain approval for restricted or marketing permissions. Basic sign-in access is usually simpler.
Which LinkedIn API OAuth permissions are available without approval?
OpenID Connect authentication uses the openid permission. Request profile and email according to the data the application needs, while most marketing and organization permissions require approval.
Can LinkedIn messages be automated through the API?
Public LinkedIn API products are not designed for sending mass direct messages, InMail, or connection requests. Access to specific communication capabilities depends on specialized LinkedIn products and approvals.
How does LinkedIn API differ from browser automation?
LinkedIn API uses an OAuth token, scopes, and an approved API product. Browser automation relies on a user session, UI, cookies, and profile state.
What limits apply to LinkedIn Community Management API?
At the Development tier, LinkedIn documentation lists 500 API calls per application per 24 hours and 100 calls per application member. The Standard tier has different terms.
Is a Company Page required for LinkedIn API?
It is required for many business scenarios, especially Community Management, Advertising API, and organization page workflows. LinkedIn also verifies the user's page or ad account role.
Where should Afina be used alongside LinkedIn API?
Afina is suitable for browser QA, isolated profiles, session control, and operational checks that the API cannot show. It does not replace LinkedIn API approval or permissions.
