Users And Profiles
The account's own profile, any profile with its sections, and lookup by profile URL.
Every route here is a read: it takes ?account_id= and answers Unipile's objects.
The Account's Own Profile#
curl -sS "https://direct.lempile.com/api/v1/users/me?account_id=$ACCOUNT_ID" \
-H "X-API-KEY: $DIRECT_API_KEY"{
"object": "AccountOwnerProfile",
"provider": "LINKEDIN",
"provider_id": "ACoAAAbcdefghijklmnop",
"entity_urn": "urn:li:fsd_profile:ACoAAAbcdefghijklmnop",
"object_urn": "urn:li:member:123",
"first_name": "Ada",
"last_name": "Sender",
"profile_picture_url": "https://media.licdn.com/dms/image/x/400.jpg",
"public_profile_url": "https://www.linkedin.com/in/ada-sender/",
"public_identifier": "ada-sender",
"email": "ada@example.com",
"premium": true,
"open_profile": true,
"organizations": [],
"recruiter": null,
"sales_navigator": null,
"headline": "Founder",
"occupation": "Founder",
"location": "Paris, Île-de-France, France"
}Three LinkedIn calls the first time, then kept for an hour. organizations is always [], recruiter and sales_navigator always null.
A Profile#
curl -sS "https://direct.lempile.com/api/v1/users/ada-sender?account_id=$ACCOUNT_ID" \
-H "X-API-KEY: $DIRECT_API_KEY"{identifier} can be:
- a provider id (
ACoAAAbcdefghijklmnop), the id every write takes; - a public identifier (
ada-sender); urn:li:fsd_profile:…;- a profile URL, URL-encoded (
https%3A%2F%2Fwww.linkedin.com%2Fin%2Fada-sender%2F).
{
"object": "UserProfile",
"provider": "LINKEDIN",
"provider_id": "ACoAAAzyxwvutsrqponml",
"public_identifier": "bob-buyer",
"first_name": "Bob",
"last_name": "Buyer",
"headline": "Head of Sales",
"websites": ["https://example.com"],
"is_premium": false,
"is_influencer": false,
"is_creator": false,
"is_open_profile": true,
"is_relationship": true,
"is_self": false,
"public_profile_url": "https://www.linkedin.com/in/bob-buyer/",
"member_urn": "123",
"location": "Boston, Massachusetts, United States",
"profile_picture_url": "https://media.licdn.com/dms/image/x/100.jpg",
"profile_picture_url_large": "https://media.licdn.com/dms/image/x/800.jpg",
"background_picture_url": "https://media.licdn.com/dms/image/x/800.jpg",
"network_distance": "FIRST_DEGREE",
"connected_at": 1761000000000,
"follower_count": 973,
"connections_count": 970,
"shared_connections_count": 1,
"is_verified": true,
"contact_info": { "emails": ["bob@example.com"] }
}- Three LinkedIn calls, as Unipile answers a profile: the profile's top card, the profile page's second card (
follower_count,connections_count,shared_connections_countwhen LinkedIn shows mutual connections,is_verified) and its contact info (websites,contact_info:emails,phones,adresses,socials, as the member shares them with the account;birthdatewhen shared). - Someone from the account's conversations of the last half hour, read by provider id without sections, is answered from what the conversation showed, with no LinkedIn call: names, headline, picture, link and degree only.
network_distanceisFIRST_DEGREE,SECOND_DEGREE,THIRD_DEGREEorOUT_OF_NETWORK; it's absent for the account itself (is_self: true).connected_at(ms) is a connection's date.invitationappears when an invitation is between the account and this person:SENTby the account, orRECEIVEDfrom them;statusPENDING, orIGNOREDfor a received one the account ignored.- Pictures are Unipile's sizes:
profile_picture_url100 px,profile_picture_url_largethe largest,background_picture_url800 × 200. - Keys LinkedIn has no value for are left out (a profile with no location has no
location). - An unknown profile answers
404errors/resource_not_found.linkedin_api(Recruiter, Sales Navigator) answers501.
Sections#
linkedin_sections adds the profile's sections, as Unipile's:
curl -sS "https://direct.lempile.com/api/v1/users/ada-sender?account_id=$ACCOUNT_ID&linkedin_sections=experience,skills_preview" \
-H "X-API-KEY: $DIRECT_API_KEY"| Value | Adds |
|---|---|
about |
summary |
experience |
work_experience (every position, grouped by company, newest first, with locations), work_experience_total_count |
education |
education, education_total_count |
skills |
skills (every skill), skills_total_count |
languages |
languages, languages_total_count |
certifications |
certifications, certifications_total_count |
volunteering_experience |
volunteering_experience, volunteering_experience_total_count |
projects |
projects, projects_total_count |
recommendations_received, recommendations_given |
recommendations.received, recommendations.given and their totals |
recruiting_activity |
recruiting_activity, always [] |
* |
every section, in full |
<name>_preview, *_preview |
the same section; only skills_preview differs from skills: the skills the profile shows first, without reading them all |
- Repeat the parameter or separate values with commas. Full wins when a section is asked both ways.
- Dates are Unipile's
month/day/year, on the 1st of the month:"2/1/2024". A current position has"end": nulland"current": true. - Sections cost more LinkedIn calls: the full profile (for
about,education,skills,languages,certifications,volunteering_experience,projects), the positions (experience), every skill (skillsin full, when the profile has more than it shows), and one per kind of recommendation: 1 to 5 more calls. Ask only the sections you use. - An unknown section name answers
400errors/invalid_parameters. - Skills carry no endorsements:
endorsement_countis always0.
{
"work_experience": [
{
"id": "2398765",
"position": "Founder",
"company": "Example Co",
"skills": [],
"current": true,
"start": "2/1/2024",
"end": null,
"company_id": "1035",
"company_url": "https://www.linkedin.com/company/example-co/",
"location": "Paris, Île-de-France, France",
"description": "Building it.",
"status": "Full-time"
}
],
"work_experience_total_count": 1
}Lookup By Profile URL#
curl -sS "https://direct.lempile.com/api/v1/users?account_id=$ACCOUNT_ID&provider_url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fada-sender%2F" \
-H "X-API-KEY: $DIRECT_API_KEY"Answers the UserProfile itself, as GET /users/{identifier} does. Without provider_url, GET /users lists everyone the account has a conversation with (as GET /chat_attendees, see Chats And Messages).
A Profile's Posts#
See Posts: GET /users/{identifier}/posts.
A Member's Comments And Reactions#
curl -sS "https://direct.lempile.com/api/v1/users/ACoAAAbcdefghijklmnop/comments?account_id=$ACCOUNT_ID&limit=10" \
-H "X-API-KEY: $DIRECT_API_KEY"{
"object": "CommentList",
"items": [
{
"object": "Comment",
"id": "7391000000000000001",
"post_id": "7390000000000000004",
"post_urn": "urn:li:activity:7390000000000000004",
"author": "Ada Sender",
"author_details": { "id": "ACoAAAbcdefghijklmnop", "headline": "Founder", "profile_url": "https://www.linkedin.com/in/ada-sender", "profile_picture_url": null, "network_distance": null },
"date": "2025-10-24T10:00:00.000Z",
"text": "Great point",
"reaction_counter": 3,
"reply_counter": 1
}
],
"cursor": null,
"paging": { "page_count": 1 }
}GET /users/{identifier}/reactions lists the posts the member reacted to (PostReactionList: value is the reaction LinkedIn shows, post_id the post). Both read the member's profile activity, 20 posts a LinkedIn call; {identifier} is a provider id, a public identifier (one more read) or me.
Was this page helpful?