Files
2026-04-11 09:45:12 -05:00

6.0 KiB

LinkedIn Routing Reference

App name: linkedin Base URL proxied: api.linkedin.com

API Path Pattern

/linkedin/v2/{resource}

Required Headers

X-Restli-Protocol-Version: 2.0.0

Common Endpoints

Get User Info (OpenID Connect)

GET /linkedin/v2/userinfo

Get Current User Profile

GET /linkedin/v2/me

With projection:

GET /linkedin/v2/me?projection=(id,firstName,lastName)

Create Text Post

POST /linkedin/v2/ugcPosts
Content-Type: application/json
X-Restli-Protocol-Version: 2.0.0

{
  "author": "urn:li:person:{personId}",
  "lifecycleState": "PUBLISHED",
  "specificContent": {
    "com.linkedin.ugc.ShareContent": {
      "shareCommentary": {"text": "Hello LinkedIn!"},
      "shareMediaCategory": "NONE"
    }
  },
  "visibility": {
    "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
  }
}

Create Article/URL Share

POST /linkedin/v2/ugcPosts
Content-Type: application/json
X-Restli-Protocol-Version: 2.0.0

{
  "author": "urn:li:person:{personId}",
  "lifecycleState": "PUBLISHED",
  "specificContent": {
    "com.linkedin.ugc.ShareContent": {
      "shareCommentary": {"text": "Check this out!"},
      "shareMediaCategory": "ARTICLE",
      "media": [{
        "status": "READY",
        "originalUrl": "https://example.com",
        "title": {"text": "Title"},
        "description": {"text": "Description"}
      }]
    }
  },
  "visibility": {
    "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
  }
}

Register Image Upload

POST /linkedin/v2/assets?action=registerUpload
Content-Type: application/json
X-Restli-Protocol-Version: 2.0.0

{
  "registerUploadRequest": {
    "recipes": ["urn:li:digitalmediaRecipe:feedshare-image"],
    "owner": "urn:li:person:{personId}",
    "serviceRelationships": [{
      "relationshipType": "OWNER",
      "identifier": "urn:li:userGeneratedContent"
    }]
  }
}

Ad Library - Search Ads

GET /linkedin/rest/adLibrary?q=criteria&keyword=linkedin

Required headers:

  • LinkedIn-Version: 202502

Job Library - Search Jobs

GET /linkedin/rest/jobLibrary?q=criteria&keyword=software

Required headers:

  • LinkedIn-Version: 202506

Marketing API (Advertising)

Required headers for all Marketing API calls:

X-Restli-Protocol-Version: 2.0.0
LinkedIn-Version: 202502

List Ad Accounts

GET /linkedin/rest/adAccounts?q=search

Get Ad Account

GET /linkedin/rest/adAccounts/{adAccountId}

Create Ad Account

POST /linkedin/rest/adAccounts
Content-Type: application/json

{
  "name": "Ad Account Name",
  "currency": "USD",
  "reference": "urn:li:organization:{orgId}",
  "type": "BUSINESS"
}

List Campaign Groups

GET /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups

Create Campaign Group

POST /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups
Content-Type: application/json

{
  "name": "Campaign Group Name",
  "status": "DRAFT"
}

Get Campaign Group

GET /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups/{campaignGroupId}

List Campaigns

GET /linkedin/rest/adAccounts/{adAccountId}/adCampaigns

Create Campaign

POST /linkedin/rest/adAccounts/{adAccountId}/adCampaigns
Content-Type: application/json

{
  "campaignGroup": "urn:li:sponsoredCampaignGroup:{groupId}",
  "name": "Campaign Name",
  "status": "DRAFT",
  "objectiveType": "BRAND_AWARENESS"
}

Get Campaign

GET /linkedin/rest/adAccounts/{adAccountId}/adCampaigns/{campaignId}

List Organization ACLs

GET /linkedin/v2/organizationAcls?q=roleAssignee

Lookup Organization by Vanity Name

GET /linkedin/rest/organizations?q=vanityName&vanityName=microsoft

Get Organization Share Statistics

GET /linkedin/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn:li:organization:12345

Get Organization Posts

GET /linkedin/rest/posts?q=author&author=urn:li:organization:12345

Media Upload (REST API)

Required headers:

  • LinkedIn-Version: 202502

Initialize Image Upload

POST /linkedin/rest/images?action=initializeUpload
Content-Type: application/json

{"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}

Initialize Video Upload

POST /linkedin/rest/videos?action=initializeUpload
Content-Type: application/json

{"initializeUploadRequest": {"owner": "urn:li:person:{personId}", "fileSizeBytes": 10000000}}

Initialize Document Upload

POST /linkedin/rest/documents?action=initializeUpload
Content-Type: application/json

{"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}

Ad Targeting

Get Targeting Facets

GET /linkedin/rest/adTargetingFacets

Returns 31 targeting facets (skills, industries, titles, locations, etc.)

Notes

  • Authentication is automatic - the router injects the OAuth token
  • Include X-Restli-Protocol-Version: 2.0.0 header for all v2 API calls
  • Author URN format: urn:li:person:{personId}
  • Get person ID from /v2/me endpoint
  • Image uploads are 3-step: register, upload binary, create post
  • Rate limits: 150 requests/day per member, 100K/day per app

Visibility Options

  • PUBLIC - Viewable by anyone
  • CONNECTIONS - 1st-degree connections only

Share Media Categories

  • NONE - Text only
  • ARTICLE - URL share
  • IMAGE - Image post
  • VIDEO - Video post

Resources