Linkedin

Learn how to use Linkedin with Composio

Overview

SLUG: LINKEDIN

Description

LinkedIn is a professional networking platform enabling job seekers, companies, and thought leaders to connect, share content, and discover business opportunities

Authentication Details

client_id
stringRequired
client_secret
stringRequired
oauth_redirect_uri
stringDefaults to https://backend.composio.dev/api/v1/auth-apps/add
scopes
stringDefaults to openid,profile,w_member_social,email
bearer_token
string

Connecting to Linkedin

Create an auth config

Use the dashboard to create an auth config for the Linkedin toolkit. This allows you to connect multiple Linkedin accounts to Composio for agents to use.

1

Select App

Navigate to the Linkedin toolkit page and click “Setup Integration”.

2

Configure Auth Config Settings

Select among the supported auth schemes of and configure them here.

3

Create and Get auth config ID

Click “Create Integration”. After creation, copy the displayed ID starting with ac_. This is your auth config ID. This is not a sensitive ID — you can save it in environment variables or a database. This ID will be used to create connections to the toolkit for a given user.

Connect Your Account

Using OAuth2

1from composio import Composio
2
3# Replace these with your actual values
4linkedin_auth_config_id = "ac_YOUR_LINKEDIN_CONFIG_ID" # Auth config ID created above
5user_id = "0000-0000-0000" # UUID from database/application
6
7composio = Composio()
8
9
10def authenticate_toolkit(user_id: str, auth_config_id: str):
11 connection_request = composio.connected_accounts.initiate(
12 user_id=user_id,
13 auth_config_id=auth_config_id,
14 )
15
16 print(
17 f"Visit this URL to authenticate Linkedin: {connection_request.redirect_url}"
18 )
19
20 # This will wait for the auth flow to be completed
21 connection_request.wait_for_connection(timeout=15)
22 return connection_request.id
23
24
25connection_id = authenticate_toolkit(user_id, linkedin_auth_config_id)
26
27# You can also verify the connection status using:
28connected_account = composio.connected_accounts.get(connection_id)
29print(f"Connected account: {connected_account}")

Tools

Executing tools

To prototype you can execute some tools to see the responses and working on the Linkedin toolkit’s playground

Python
1from composio import Composio
2from openai import OpenAI
3import json
4
5openai = OpenAI()
6composio = Composio()
7
8# User ID must be a valid UUID format
9user_id = "0000-0000-0000" # Replace with actual user UUID from your database
10
11tools = composio.tools.get(user_id=user_id, toolkits=["LINKEDIN"])
12
13print("[!] Tools:")
14print(json.dumps(tools))
15
16def invoke_llm(task = "What can you do?"):
17 completion = openai.chat.completions.create(
18 model="gpt-4o",
19 messages=[
20 {
21 "role": "user",
22 "content": task, # Your task here!
23 },
24 ],
25 tools=tools,
26 )
27
28 # Handle Result from tool call
29 result = composio.provider.handle_tool_calls(user_id=user_id, response=completion)
30 print(f"[!] Completion: {completion}")
31 print(f"[!] Tool call result: {result}")
32
33invoke_llm()

Tool List

Tool Name: Create a LinkedIn post

Description

Creates a new post on linkedin for the authenticated user or an organization they manage; ensure the user has necessary permissions if posting for an organization.

Action Parameters

author
stringRequired
commentary
stringRequired
distribution
object
isReshareDisabledByAuthor
boolean
lifecycleState
stringDefaults to PUBLISHED
visibility
stringDefaults to PUBLIC

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Delete LinkedIn Post

Description

Deletes a specific linkedin post (share) by its unique `share id`, which must correspond to an existing share.

Action Parameters

share_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get company info

Description

Retrieves organizations where the authenticated user has specific roles (acls), to determine their management or content posting capabilities for linkedin company pages.

Action Parameters

count
integerDefaults to 10
role
stringDefaults to ADMINISTRATOR
start
integer
state
stringDefaults to APPROVED

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get my info

Description

Fetches the authenticated linkedin user's profile, notably including the 'author id' required for attributing content such as posts or articles.

Action Parameters

Action Response

data
objectRequired
error
string
successful
booleanRequired