CONNECT APP
Build with LinkedIn
Marketing
- OAuth
MCP
Give your agent LinkedIn tools
Every LinkedIn action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's LinkedIn account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "linkedin",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Create a Simple Post (Organization):
const result = await mcp.callTool({
name: "linkedin-create-text-post-organization",
arguments: {
organizationId: "Organization Id",
text: "Text",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "linkedin",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Create a Simple Post (Organization):
result = await session.call_tool("linkedin-create-text-post-organization", {
"organizationId": "Organization Id",
"text": "Text",
})API PROXY
Call the LinkedIn API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the LinkedIn API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.linkedin.com/v2/me",
})
// Any allowed LinkedIn endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.linkedin.com/v2/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkubGlua2VkaW4uY29tL3YyL21l?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run LinkedIn actions from your backend
Connect a user's LinkedIn account once, then run Create a Simple Post (Organization) on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "linkedin-create-text-post-organization",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
linkedin: { authProvisionId: "apn_xxxxxxx" },
organizationId: "Organization Id",
text: "Text",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="linkedin-create-text-post-organization",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"linkedin": {"authProvisionId": "apn_xxxxxxx"},
"organizationId": "Organization Id",
"text": "Text",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "linkedin-create-text-post-organization",
"configured_props": {
"linkedin": { "authProvisionId": "apn_xxxxxxx" },
"organizationId": "Organization Id",
"text": "Text"
}
}'TOOLS
LinkedIn actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Create a Simple Post (Organization)
actionCreate post on LinkedIn using text, URL or article. See the documentation for more informationWritev0.0.13 -
Create a Simple Post (User)
actionCreate post on LinkedIn using text, URL or article. See the documentation for more informationWritev0.0.13 -
Create Comment
actionCreate a comment on a share or user generated content post. See the docs hereWritev0.1.13 -
Create Image Post (Organization)
actionCreate an image post on LinkedIn. See the documentationWritev1.0.9 -
Create Image Post (User)
actionCreate an image post on LinkedIn. See the documentationWritev1.0.9 -
Create Like On Share
actionCreates a like on a share. See the docs hereWritev0.1.13 -
Delete Post
actionRemoves a post from user's wall. See the documentation for more informationWritev0.0.13 -
Fetch Ad Account
actionFetches an individual adAccount given its id. See the docs hereWritev0.1.13 -
Get Current Member Profile
actionGets the profile of the current authenticated member. See the docs hereRead-onlyv0.1.13 -
Get Member Profile
actionGets another member's profile, given its person id. See the docs hereRead-onlyv0.1.13 -
Get Member's Organization Access Control Information
actionGets the organization access control information of the current authenticated member. See the documentationWritev1.0.1 -
Get Member's Organization Access Control Information
actionGets the organization access control information of the current authenticated member. See the documentationRead-onlyv1.0.8 -
Get Multiple Member Profiles
actionGets multiple member profiles at once. See the docs hereRead-onlyv0.1.13 -
Get Organization Administrators
actionGets the administrator members of a selected organization. See the documentationRead-onlyv0.3.7 -
Get Profile Picture Fields
actionGets the authenticated user's profile picture data including display image and metadata. See the documentationRead-onlyv0.0.8 -
Gets Organization Access Control
actionGets a selected organization's access control information. See the documentationRead-onlyv0.2.7 -
List Ad Account Id Options
actionRetrieves available options for the Ad Account Id field.Read-onlyv0.0.3 -
List Campaign Id Options
actionRetrieves available options for the Campaign Id field.Read-onlyv0.0.3 -
List Organization Id Options
actionRetrieves available options for the Organization Id field.Read-onlyv0.0.3 -
Retrieve Comments On Shares
actionRetrieve comments on shares given the share urn. See the docs hereWritev0.1.14 -
Retrieves Comments on Comments
actionRetrieves comments on comments, given the parent comment urn. See the documentationWritev0.1.13 -
Search Organization
actionSearches for an organization by vanity name or email domain. See the docs hereRead-onlyv0.1.13
EVENTS
LinkedIn triggers
Event sources your backend can deploy for users and receive through a webhook.
MULTI-APP
Use LinkedIn with other popular apps
Most products don't stop at one integration. Pair LinkedIn with the other apps your users rely on, and ship use cases that span both.
- App slug
- Authentication
- OAuth
- Categories
- Marketing
- Actions
- 22
- Triggers
- 1
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed LinkedIn OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- r_1st_connections_size
- r_ads_reporting
- rw_organization_admin
- w_organization_social
- r_organization_social
- w_member_social_feed
- w_member_social
- w_organization_social_feed
- r_basicprofile
- rw_ads
- r_organization_social_feed
- r_ads