> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `/plugin marketplace add scalekit-inc/claude-code-authstack` then `/plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agent-auth`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# LinkedIn

<div class="grid grid-cols-5 gap-4 items-center">
 <div class="col-span-4">
  Connect to LinkedIn to manage user authentication, profile data, email, and professional identity via OAuth 2.0
 </div>
 <div class="flex justify-center">
  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/linkedin.svg" width="64" height="64" alt="LinkedIn logo" />
 </div>
</div>

Supports authentication: OAuth 2.0

## Tool list

## `linkedin_ad_account_create`

Create a new LinkedIn ad account for running advertising campaigns.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `currency` | string | Yes | The currency code for the ad account (e.g. 'USD', 'EUR'). |
| `name` | string | Yes | The name of the new ad account. |
| `reference` | string | Yes | Reference URN for the account owner (e.g. organization URN 'urn:li:organization:12345'). |

## `linkedin_ad_account_get`

Get a LinkedIn ad account by its ID.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to retrieve. |

## `linkedin_ad_account_update`

Partially update a LinkedIn ad account's name or status.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to update. |
| `name` | string | No | New name for the ad account. |
| `status` | string | No | New status for the ad account (e.g. ACTIVE, CANCELED). |

## `linkedin_ad_account_users_list`

List all users who have access to a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to list users for. |

## `linkedin_ad_accounts_search`

Search LinkedIn ad accounts by status or name.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | No | Filter by account name (partial match). |
| `status` | string | No | Filter by account status. One of: ACTIVE, CANCELED, DRAFT. |

## `linkedin_ad_analytics_get`

Get campaign analytics data for a LinkedIn ad campaign including impressions, clicks, and spend.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `campaigns` | string | Yes | The campaign URN to retrieve analytics for (e.g. 'urn:li:sponsoredCampaign:712345678'). |
| `date_range_end` | string | Yes | End date for the analytics period (YYYY-MM-DD format). |
| `date_range_start` | string | Yes | Start date for the analytics period (YYYY-MM-DD format). |
| `time_granularity` | string | Yes | Granularity of the analytics data. One of: DAILY, MONTHLY, ALL. |

## `linkedin_asset_get`

Get the status and details of an uploaded LinkedIn media asset.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `asset_id` | string | Yes | The ID of the media asset to retrieve. |

## `linkedin_campaign_create`

Create a new ad campaign within a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to create the campaign in. |
| `campaign_group_id` | string | Yes | The ID of the campaign group this campaign belongs to. |
| `cost_type` | string | Yes | The cost type for the campaign (e.g. 'CPM', 'CPC', 'CPV'). |
| `daily_budget_amount` | string | Yes | The daily budget amount as a decimal string (e.g. '100.00'). |
| `daily_budget_currency` | string | Yes | The currency code for the daily budget (e.g. 'USD', 'EUR'). |
| `name` | string | Yes | The name of the campaign. |
| `objective_type` | string | Yes | The objective type for the campaign (e.g. 'AWARENESS', 'WEBSITE_VISIT', 'LEAD_GENERATION'). |

## `linkedin_campaign_delete`

Delete a DRAFT LinkedIn ad campaign. Only campaigns in DRAFT status can be deleted.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account that owns the campaign. |
| `campaign_id` | string | Yes | The ID of the DRAFT campaign to delete. |

## `linkedin_campaign_get`

Get a specific ad campaign by ID within a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account that owns the campaign. |
| `campaign_id` | string | Yes | The ID of the campaign to retrieve. |

## `linkedin_campaign_group_create`

Create a new campaign group within a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to create the campaign group in. |
| `name` | string | Yes | The name of the campaign group. |
| `status` | string | No | Status of the campaign group. One of: ACTIVE, ARCHIVED, CANCELED, DRAFT, PAUSED. Defaults to ACTIVE. |

## `linkedin_campaign_group_get`

Get a specific campaign group by ID within a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account that owns the campaign group. |
| `group_id` | string | Yes | The ID of the campaign group to retrieve. |

## `linkedin_campaign_group_update`

Partially update a LinkedIn campaign group's name or status.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account that owns the campaign group. |
| `group_id` | string | Yes | The ID of the campaign group to update. |
| `name` | string | No | New name for the campaign group. |
| `status` | string | No | New status for the campaign group (e.g. ACTIVE, PAUSED, ARCHIVED). |

## `linkedin_campaign_groups_list`

List campaign groups for a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to list campaign groups for. |
| `count` | integer | No | Number of results to return per page. |
| `start` | integer | No | Offset for pagination. |
| `status` | string | No | Filter by campaign group status (e.g. ACTIVE, PAUSED, ARCHIVED). |

## `linkedin_campaign_update`

Partially update a LinkedIn ad campaign's name or status.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account that owns the campaign. |
| `campaign_id` | string | Yes | The ID of the campaign to update. |
| `name` | string | No | New name for the campaign. |
| `status` | string | No | New status for the campaign (e.g. ACTIVE, PAUSED, ARCHIVED, CANCELED). |

## `linkedin_campaigns_list`

List ad campaigns for a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to list campaigns for. |
| `count` | integer | No | Number of results to return per page. |
| `start` | integer | No | Offset for pagination. |
| `status` | string | No | Filter by campaign status (e.g. ACTIVE, PAUSED, ARCHIVED, CANCELED, DRAFT). |

## `linkedin_comment_delete`

Delete a specific comment on a LinkedIn post.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `actor_urn` | string | Yes | The URN of the actor (person) deleting the comment. |
| `comment_id` | string | Yes | The ID of the comment to delete. |
| `entity_urn` | string | Yes | The URN of the post the comment belongs to. |

## `linkedin_comment_get`

Get a specific comment on a LinkedIn post by entity URN and comment ID.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `comment_id` | string | Yes | The ID of the comment to retrieve. |
| `entity_urn` | string | Yes | The URN of the post the comment belongs to. |

## `linkedin_creative_create`

Create a new ad creative for a LinkedIn ad campaign.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to create the creative in. |
| `campaign_id` | string | Yes | The campaign URN this creative belongs to (e.g. 'urn:li:sponsoredCampaign:712345678'). |
| `name` | string | Yes | The name of the creative. |
| `status` | string | No | Status of the creative. Defaults to ACTIVE. |

## `linkedin_creative_get`

Get a specific ad creative by ID within a LinkedIn ad account.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account that owns the creative. |
| `creative_id` | string | Yes | The ID of the creative to retrieve. |

## `linkedin_creative_update`

Partially update a LinkedIn ad creative's name or status.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account that owns the creative. |
| `creative_id` | string | Yes | The ID of the creative to update. |
| `name` | string | No | New name for the creative. |
| `status` | string | No | New status for the creative (e.g. ACTIVE, PAUSED, ARCHIVED). |

## `linkedin_creatives_list`

List ad creatives for a LinkedIn ad account, with optional filtering by campaign or status.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | The ID of the ad account to list creatives for. |
| `campaign_id` | string | No | Filter creatives by campaign URN. |
| `count` | integer | No | Number of results to return per page. |
| `start` | integer | No | Offset for pagination. |
| `status` | string | No | Filter by creative status (e.g. ACTIVE, PAUSED, ARCHIVED). |

## `linkedin_email_get`

Retrieve the authenticated user's primary email address from LinkedIn.

## `linkedin_job_posting_get`

Get details of a specific LinkedIn job posting by its ID.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `job_id` | string | Yes | The ID of the job posting to retrieve. |

## `linkedin_media_upload_register`

Register a media asset upload with LinkedIn (step 1 of image/video upload). Returns an upload URL and asset ID to use for subsequent upload steps.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `owner_urn` | string | Yes | The URN of the person or organization that owns the media (e.g. 'urn:li:person:&#123;id&#125;'). |
| `recipe` | string | Yes | The media recipe type. One of: feedshare-image, feedshare-video, messaging-attachment. |

## `linkedin_member_search`

Search LinkedIn members by keyword for at-mention typeahead (requires Marketing API access).

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `count` | integer | No | Number of results to return. |
| `keywords` | string | Yes | Keywords to search for members. |

## `linkedin_message_create`

Send a LinkedIn message via the Messaging API (requires LinkedIn Messaging API partner access). Uses /rest/messages endpoint.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `body` | string | Yes | The text content of the message. |
| `recipients` | string | Yes | Comma-separated list of recipient person URNs (e.g. 'urn:li:person:abc123,urn:li:person:def456'). |
| `subject` | string | No | Optional subject line for the message. |

## `linkedin_organization_access_control_list`

List organizations where the authenticated user has admin access via the Organizational Entity ACLs API.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `role_assignee_urn` | string | Yes | URN of the person whose org access to check, e.g. urn:li:person:&#123;id&#125;. |

## `linkedin_organization_admins_get`

List administrators of a LinkedIn organization page using the Organizational Entity ACLs API.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | Numeric LinkedIn organization ID. |

## `linkedin_organization_by_vanity_get`

Find a LinkedIn organization by its vanity name (the custom URL slug used in the company's LinkedIn URL).

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `vanity_name` | string | Yes | The vanity name (URL slug) of the organization to look up. |

## `linkedin_organization_followers_count`

Get the follower count for a LinkedIn organization using its URL-encoded URN.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `organization_urn` | string | Yes | URL-encoded URN of the organization, e.g. urn%3Ali%3Aorganization%3A&#123;id&#125;. |

## `linkedin_organization_get`

Retrieve details of a LinkedIn organization (company page) by its numeric ID.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The numeric ID of the LinkedIn organization. |

## `linkedin_organization_post_create`

Create a UGC post on behalf of a LinkedIn organization. The post will appear on the organization's page.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `organization_id` | string | Yes | The numeric ID of the organization to post on behalf of. |
| `text` | string | Yes | The text content of the post. |
| `visibility` | string | No | Visibility of the post. PUBLIC or CONNECTIONS. |

## `linkedin_organization_search`

Search LinkedIn organizations by keyword using the company search API.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `count` | integer | No | Number of results to return. |
| `keywords` | string | Yes | Keywords to search for organizations. |

## `linkedin_organizations_batch_get`

Batch get multiple LinkedIn organizations by their numeric IDs. Works without admin access.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `ids` | string | Yes | Comma-separated list of organization IDs to retrieve (e.g. '12345,67890'). |

## `linkedin_post_comment_create`

Add a comment to a LinkedIn UGC post on behalf of a member.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `actor` | string | Yes | URN of the member leaving the comment, e.g. urn:li:person:&#123;id&#125;. |
| `text` | string | Yes | The text content of the comment. |
| `ugc_post_urn` | string | Yes | URL-encoded URN of the UGC post to comment on, e.g. urn%3Ali%3AugcPost%3A&#123;id&#125;. |

## `linkedin_post_comments_list`

List comments on a LinkedIn UGC post.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `count` | integer | No | Maximum number of comments to return. |
| `start` | integer | No | Pagination start index (0-based offset). |
| `ugc_post_urn` | string | Yes | URL-encoded URN of the UGC post to retrieve comments for, e.g. urn%3Ali%3AugcPost%3A&#123;id&#125;. |

## `linkedin_post_create`

Create a UGC post on LinkedIn on behalf of the authenticated user or organization.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `author` | string | Yes | URN of the post author, e.g. urn:li:person:&#123;id&#125; or urn:li:organization:&#123;id&#125;. |
| `text` | string | Yes | The text content of the post. |
| `visibility` | string | No | Visibility of the post. Options: PUBLIC, CONNECTIONS. Defaults to PUBLIC. |

## `linkedin_post_delete`

Delete a UGC post from LinkedIn by its ID. This action is irreversible.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | URL-encoded post URN, e.g. urn%3Ali%3AugcPost%3A12345. |

## `linkedin_post_get`

Get a specific LinkedIn post by its URL-encoded URN (e.g. urn%3Ali%3AugcPost%3A12345).

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | URL-encoded post URN, e.g. urn%3Ali%3AugcPost%3A12345. |

## `linkedin_post_like`

Like a LinkedIn post on behalf of a person or organization. Uses the Reactions API.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `actor_urn` | string | Yes | URN of the person or org liking the post, e.g. urn:li:person:&#123;id&#125;. |
| `entity_urn` | string | Yes | URN of the post to like, e.g. urn:li:ugcPost:&#123;id&#125; or urn:li:share:&#123;id&#125;. |

## `linkedin_posts_list`

List posts by a specific author (person or organization URN).

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `author` | string | Yes | URL-encoded author URN, e.g. urn%3Ali%3Aperson%3A&#123;id&#125; or urn%3Ali%3Aorganization%3A&#123;id&#125;. |
| `count` | integer | No | Maximum number of results to return. |
| `start` | integer | No | Pagination start index (0-based offset). |

## `linkedin_profile_get`

Retrieve the current authenticated user's LinkedIn profile including first name, last name, ID, and profile picture.

## `linkedin_reaction_create`

Create a reaction (like, praise, empathy, etc.) on a LinkedIn post or comment.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `actor_urn` | string | Yes | The URN of the person reacting (e.g. 'urn:li:person:abc123'). |
| `entity_urn` | string | Yes | The URN of the post or comment to react to. |
| `reaction_type` | string | Yes | The type of reaction. One of: LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, ENTERTAINMENT. |

## `linkedin_reaction_delete`

Delete a reaction from a LinkedIn post or comment.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `actor_urn` | string | Yes | The URN of the person whose reaction is being deleted (e.g. 'urn:li:person:abc123'). |
| `entity_urn` | string | Yes | The URN of the post or comment the reaction was made on. |

## `linkedin_reactions_list`

List all reactions on a LinkedIn post or entity.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `count` | integer | No | Number of reactions to return per page. |
| `entity_urn` | string | Yes | The URN of the post or entity to list reactions for. |
| `start` | integer | No | Offset for pagination. |

## `linkedin_share_create`

Create a post on LinkedIn on behalf of a person or organization.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `owner` | string | Yes | URN of the share owner, e.g. urn:li:person:&#123;id&#125; or urn:li:organization:&#123;id&#125;. |
| `text` | string | Yes | The text content of the share. |
| `visibility_code` | string | No | Visibility of the share. Options: anyone, connectionsOnly. Defaults to anyone. |

## `linkedin_social_metadata_get`

Get engagement metadata (likes, comments, reaction counts) for a post or share by its URN.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `share_urn` | string | Yes | URL-encoded post/share URN, e.g. urn%3Ali%3AugcPost%3A12345. |

## `linkedin_userinfo_get`

Get the authenticated user's OpenID Connect userinfo including id, name, email, and profile picture.

---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
