Skip to content
Docs

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#

Shell
curl -sS "https://direct.lempile.com/api/v1/users/me?account_id=$ACCOUNT_ID" \
  -H "X-API-KEY: $DIRECT_API_KEY"
JSON
{
  "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#

Shell
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).
JSON
{
  "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_count when 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; birthdate when 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_distance is FIRST_DEGREE, SECOND_DEGREE, THIRD_DEGREE or OUT_OF_NETWORK; it's absent for the account itself (is_self: true). connected_at (ms) is a connection's date.
  • invitation appears when an invitation is between the account and this person: SENT by the account, or RECEIVED from them; status PENDING, or IGNORED for a received one the account ignored.
  • Pictures are Unipile's sizes: profile_picture_url 100 px, profile_picture_url_large the largest, background_picture_url 800 × 200.
  • Keys LinkedIn has no value for are left out (a profile with no location has no location).
  • An unknown profile answers 404 errors/resource_not_found. linkedin_api (Recruiter, Sales Navigator) answers 501.

Sections#

linkedin_sections adds the profile's sections, as Unipile's:

Shell
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": null and "current": true.
  • Sections cost more LinkedIn calls: the full profile (for about, education, skills, languages, certifications, volunteering_experience, projects), the positions (experience), every skill (skills in 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 400 errors/invalid_parameters.
  • Skills carry no endorsements: endorsement_count is always 0.
JSON
{
  "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#

Shell
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#

Shell
curl -sS "https://direct.lempile.com/api/v1/users/ACoAAAbcdefghijklmnop/comments?account_id=$ACCOUNT_ID&limit=10" \
  -H "X-API-KEY: $DIRECT_API_KEY"
JSON
{
  "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?