Afina

Download app

AppleWindows
EN
BlogSocial Media

October 19, 2026

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

LinkedIn API access flow 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 productWhat it providesTypical use caseAccess level
Sign in with LinkedIn using OpenID Connectopenid, profile, emailsigning in to a B2B SaaS product or portalopen permission
Share on LinkedInw_member_socialpublishing on behalf of a member; other social actions depend on the product and available permissionsopen permission with usage rules
Advertising APIr_ads, rw_ads, r_ads_reportingcampaigns, ad accounts, and reportsapproval
Lead Sync APIr_marketing_leadgen_automationtransferring form leads to a CRMapproval
Community Management APIw_organization_social, r_organization_socialcompany pages and organization contentDevelopment or Standard tier depending on approval
Matched Audiences APIrw_dmp_segmentsaudience segmentsseparate approval; Advertising API access does not grant it automatically
Company Intelligence APIseparate application accesscompany insightsverify 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.

OAuth permission selection for LinkedIn API

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 taskMinimum accessWhat to verify before applying
user sign-in through LinkedInopenid, profile, emailprivacy policy and redirect URI
advertising reportsr_ads, r_ads_reportingthe user's role in the ad account
editing advertising campaignsrw_adscampaign manager or account manager rights
synchronizing Lead Gen Formsr_marketing_leadgen_automationCRM fields, data storage, and consent
publishing from a company pagew_organization_socialpage administrator role
organization page analyticsr_organization_admin, r_organization_socialpage 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:

  1. Create an application in LinkedIn Developer Portal
  2. Associate it with a verified Company Page when the product requires one
  3. Describe the use case in one sentence without broad wording
  4. Add only the products and permissions required for the first version
  5. Configure the OAuth redirect URI and verify the consent screen
  6. Test the authorization flow and record the scopes in technical documentation
  7. Apply for approval for Advertising API, Lead Sync, or Community Management
  8. 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.

LinkedIn API OAuth flow for advertising and CRM integrations

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.

LinkedIn API and browser workflow error comparison

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.

LinkedIn API version and limit monitoring diagram

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:

CodePossible causeWhat to check
400Invalid parameters or request bodyFormat, required fields, and endpoint requirements
401Invalid or expired tokenToken lifetime and authorization flow
403Insufficient permissionsScopes, user role, product approval, and access tier
429Request limit exceededApplication 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:

CriterionOfficial LinkedIn APIBrowser QA
access sourceOAuth token and approved API productuser session in a browser
error typesscopes, roles, tiers, and request limitscookies, UI, consent, and session expiry
best useCRM, ads reporting, lead sync, and organization contentrole checks, rendering checks, and manual workflows
scalingqueues, delayed retries, and limitsprofiles, proxies, timing, and state control
primary riskexcessive permissions or data misuseaccount 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.

Safe browser QA workflow for LinkedIn

A practical structure for a marketing team is:

  1. Keep LinkedIn API as the source of structured data and approved actions
  2. Move browser QA into a separate workflow with its own log
  3. Assign each profile to a role or client rather than a random operator
  4. Check cookies, consent, and access before starting long-running tasks
  5. Keep screenshots only for QA and redact personal data
  6. 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.

Download

FAQ — 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.

Related terms

Continue reading onAutomation scripts — Browser profiles | Afina Browser
Sergii Yakovenko

I am a Web3 automation specialist and one of the early members of the Afina team.

At Afina, my work focuses on building scalable automation systems that enable users to efficiently manage crypto projects and minimize manual work. I conduct live support sessions, teach script development, and help users build their own automation systems.

During my time at Afina, I have created tools that significantly improve efficiency and allow simultaneous interaction with multiple projects. My goal is to ensure that all solutions operate reliably, securely, and deliver real value to users