LinkedIn

Configure LinkedIn in Outstand with your own OAuth app credentials (BYOK) to manage your company's LinkedIn presence.

LinkedIn is fully supported in Outstand through the Bring Your Own Key (BYOK) model. This allows you to use your own LinkedIn OAuth application credentials to manage your company's LinkedIn presence through Outstand's unified social media API.

Managed Keys are included with your subscription. We handle the OAuth app setup for you, so you can skip the approval process entirely. Follow the steps below only if you want full white-labelling with your own LinkedIn app credentials (BYOK). Contact support@outstand.so if you have questions about your Managed Keys setup.

Quick Information

Our application works with the following OAuth scopes:

  • r_basicprofile - Basic profile access
  • r_member_postAnalytics - Read post analytics
  • w_member_social - Manage and post on behalf of your organization
  • r_member_profileAnalytics - Read profile analytics
  • w_member_social_feed - Manage and post on behalf of your organization
  • r_1st_connections_size - Read first connections size
  • rw_organization_admin - Manage and post on behalf of your organization
  • w_organization_social - Manage and post on behalf of your organization
  • r_organization_social - Read organization social

Whether you use Managed Keys or BYOK, these are the OAuth scopes required for the integration to work.

Outstand OAuth Callback URL

When configuring your LinkedIn app, you must add the following OAuth redirect URL:

https://www.outstand.so/app/api/socials/linkedin/callback

This is where LinkedIn will redirect users after they authorize your app.

White-labeling authentication flow

For full white-labeling integration, you need to follow the following flow:

  1. Call the /v1/social-networks/:network/auth-url endpoint to get the authentication URL. You MUST provide a redirect_uri in the request body.
  2. The redirect URI must lead to a LinkedIn-specific callback URL in your application. We will redirect to it with a session query parameter.
  3. Your callback URL must call the /v1/social-accounts/pending/:sessionToken endpoint (docs link) to get the pending connection details.
  4. The response will contain a list of available pages/accounts that can be connected.
  5. You can then redirect the user to a selection page where they can select the pages/accounts they want to connect.
  6. Once the user has selected the pages/accounts, you can call the /v1/social-accounts/pending/:sessionToken/finalize endpoint (docs link) to finalize the connection.
  7. The response will contain the connected accounts.
  8. You can then use the connected accounts to post on behalf of the user.

The full flow is illustrated in the following diagram:

Feel free to get in touch with our support team if you have any questions or need assistance with the integration.

Prerequisites

Before you begin, ensure you have:

  • A LinkedIn account with admin access to a Company Page (for posting on behalf of the company)
  • Access to LinkedIn's developer portal at developer.linkedin.com
  • Understanding of OAuth 2.0 flows

Note: You'll need a LinkedIn account associated with a verified Company Page if you want to post on behalf of the company. Personal profiles have limited posting capabilities.

Step 1: Create a LinkedIn Developer Account

If you don't already have one:

  1. Go to developer.linkedin.com
  2. Click Sign in (or Sign up if you don't have an account)
  3. Sign in with your LinkedIn credentials
  4. Accept the Developer Agreement

Step 2: Create a New App

  1. Navigate to developer.linkedin.com/apps
  2. Click Create app in the top right corner
  3. Fill in the required information:
    • Company: Select your company from the dropdown
    • App name: Your application name (e.g., "My Social Media Manager")
    • LinkedIn Page: Select your Company Page (if you have one)
    • Privacy Policy URL: Link to your privacy policy (required)
    • App logo: Upload a 100x100px logo (optional)
  4. Accept the LinkedIn API Terms of Use
  5. Click Create app

Step 3: Configure Authentication Settings

  1. After creating your app, navigate to the Auth tab
  2. Review the default scopes and ensure you have:
    • r_basicprofile - Basic profile access
    • r_member_postAnalytics - Read post analytics
    • w_member_social - Manage and post on behalf of your organization
    • r_member_profileAnalytics - Read profile analytics
    • w_member_social_feed - Manage and post on behalf of your organization
    • r_1st_connections_size - Read first connections size
    • rw_organization_admin - Manage and post on behalf of your organization
    • w_organization_social - Manage and post on behalf of your organization
    • r_organization_social - Read organization social

Step 4: Add Products to Your App

The Community API product is required for posting capabilities.

As of January 2026, the Community API product is required for posting capabilities and can be the only API product enabled in your app.

Step 5: Configure OAuth Redirect URLs

  1. Still in the Auth tab, scroll down to Redirect URLs
  2. Click Add redirect URL
  3. Add your OAuth callback URLs:
    • For production: https://www.outstand.so/app/api/socials/linkedin/callback
  4. Click Update to save your changes

Note: LinkedIn requires that your redirect URL starts with https:// in production. Localhost is allowed for development purposes.

Step 6: Add Credentials to Outstand

Once you have your Client ID and Client Secret, you can add them to Outstand:

Method 1: Using the Dashboard

  1. Log in to Outstand Dashboard
  2. Navigate to SettingsSocial Networks
  3. Select LinkedIn from the dropdown
  4. Enter your Client ID in the "Client ID / API Key" field
  5. Enter your Client Secret in the "Client Secret / API Secret" field
  6. Click Add Social Network

Method 2: Using the API

curl -X POST https://api.outstand.so/v1/social-networks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "network": "linkedin",
    "client_key": "YOUR_CLIENT_ID_HERE",
    "client_secret": "YOUR_CLIENT_SECRET_HERE"
  }'

Troubleshooting

"Invalid client credentials"

  • Verify you copied the Client ID and Client Secret correctly
  • Ensure there are no extra spaces or formatting issues
  • Check that your LinkedIn app is in "Live" status (not Draft)

"Redirect URI mismatch"

  • Verify the exact redirect URI in your LinkedIn app matches the Outstand callback URL
  • LinkedIn is strict about exact matching (including trailing slashes)
  • Check both the Auth tab in your LinkedIn app and the callback configuration

"App not approved for Marketing Developer Platform"

  • This product requires approval from LinkedIn
  • You'll need to submit a use case description explaining your social media management application
  • Expect to record a screencast showing your app's functionality
  • Approval typically takes 7-12 business days

"Insufficient permissions to post"

  • Ensure you have admin or content creator role on the Company Page
  • Verify that rw_organization_admin scope is approved and active
  • Check that Marketing Developer Platform product has been added and approved

"Engagement data unavailable"

  • The user who connects the LinkedIn account must have the ADMINISTRATOR role on the LinkedIn organization. Content creators or other roles are not sufficient for accessing analytics.
  • Verify that rw_organization_admin scope was granted during the OAuth authorization flow.
  • Check that the Community Management API product is approved and active in your LinkedIn developer app.
  • Note: LinkedIn share statistics are only available for the past 12 months (rolling window).

Media Requirements

Media is uploaded to LinkedIn through the Images and Videos APIs before being attached to a post. The following limits come from LinkedIn's official Community Management API documentation.

Text

  • Post commentary: up to 3,000 characters. See the Posts API.

Images

RequirementSpecification
FormatsJPG, PNG, GIF (GIF up to 250 frames)
Maximum resolutionLess than 36,152,320 pixels total
Multiple imagesSupported via the MultiImage post (organic)

See the Images API and MultiImage Post API.

Video

RequirementSpecification
FormatMP4
Minimum size75 KB
Maximum size500 MB
Duration3 seconds to 30 minutes

Uploads larger than a single chunk are split into 4 MB parts. See the Videos API.

Documents (PDF)

Attaching a PDF to a LinkedIn post publishes it as a native document post - the swipeable, multi-page "carousel" document that LinkedIn renders inline in the feed. This happens automatically: when Outstand detects PDF media on a LinkedIn post, it uploads the file through LinkedIn's Documents API instead of the Images or Videos API.

RequirementSpecification
FormatPDF (application/pdf)
DetectionThe media is treated as a document when its URL ends with .pdf, contains /pdf, or is served as application/pdf
RenderingNative LinkedIn document (swipeable, multi-page "carousel") post

Notes:

  • Only the first PDF on the post is used - LinkedIn document posts carry a single document.
  • A PDF is not combined with images or video in the same post. If a PDF is present, the post is published as a document post and any images/video on that container are ignored.
  • No extra configuration is required; simply include the PDF as a media attachment on the post.

Publishing Rate Limits

LinkedIn does not publish fixed numeric posting caps for the Posts API. Instead:

  • Rate limits are enforced per application and are viewable in the LinkedIn Developer Portal under your app's Usage & Limits (Analytics) tab.
  • When a throttle is reached, LinkedIn returns HTTP 429 with the message "Resource level throttle limit for calls to this resource is reached."
  • There is no documented fixed daily post limit per member or per organization; the effective ceiling is your application's per-endpoint throttle.

See LinkedIn's rate limits documentation for details.

Available Metrics

When using the Account Metrics API with a LinkedIn account, the available metrics depend on the account type:

Organization Pages

Account-Level Metrics

MetricDescription
likesTotal likes on organization posts
commentsTotal comments received
sharesTotal shares of content
clicksTotal clicks on content
impressionsTotal content impressions
unique_impressionsUnique accounts that saw content
engagement_rateCalculated engagement rate

Post-Level Metrics

Post-level analytics are available for individual LinkedIn posts published by organization pages. Use the Post Analytics API to retrieve per-post metrics including likes, comments, shares, clicks, impressions, and engagement rate.

Requirements:

  • The connecting user must have the ADMINISTRATOR role on the LinkedIn organization
  • rw_organization_admin permission must be approved
  • Supports date range filtering via since and until parameters (Unix timestamps)
  • Share statistics are available for the past 12 months only (rolling window)

Personal Profiles

Account-Level Metrics

Account-level aggregate engagement is not available for personal profiles. Only follower and connection counts are returned.

Post-Level Metrics

Post-level analytics are available for personal profile posts via LinkedIn's Member Creator Post Analytics API. The following metrics are returned:

MetricDescription
likesTotal reactions (likes, celebrates, etc.) on the post
commentsTotal comments received
sharesTotal reshares/reposts
impressionsTotal post impressions
reachUnique members who saw the post
engagement_rateCalculated as (reactions + comments + reshares) / impressions * 100

Requirements:

  • The r_member_postAnalytics permission must be approved (included automatically during OAuth)

Limitations compared to organization pages:

  • Click counts are not available for personal profile posts
  • Daily impression breakdowns are not supported for individual posts
  • Account-level aggregate engagement data is not available

Importing Posts

Post import is supported for organization (business) pages only.

Personal LinkedIn profiles cannot import their existing posts. LinkedIn only grants read access to a member's own posts through the restricted r_member_social permission, which is not available currently. As a result, importing posts from a personal profile is not supported and will fail.

Next Steps

Once your LinkedIn credentials are configured and accounts connected, you can:

  1. Create LinkedIn posts using the Posts API
  2. Upload images for your posts via the Media API
  3. Schedule LinkedIn content for optimal engagement
  4. Monitor your LinkedIn analytics through the post tracking features