Install the Up2Data skill

Teach Claude Code to integrate the Up2Data API. Installs once, then loads automatically whenever you ask it about Up2Data.

  1. Run this in your terminal
    bash
    mkdir -p ~/.claude/skills/up2data-api && curl -fsSL https://up2data.ai/docs/legacy/skill.md -o ~/.claude/skills/up2data-api/SKILL.md
  2. Restart Claude CodeSo it picks up the new skill.
  3. Try it"Enrich these LinkedIn profiles with Up2Data and send results to my webhook"

Requires Claude Code. macOS, Linux, or WSL.

Prefer to read it first? View the skill file

Enrich a profile (sync)

Enrich a single LinkedIn profile right now and return the result directly.

POSThttps://api.up2data.ai/api/open-refresh/profile
2 credits4 with withFollowersAndConnections or withFullSkillsAndEndorsements (not stacking)synchronous

Enrich a single LinkedIn profile right now and get the result back in the same request. There is no queue, no status to poll and no webhook involved - the result is delivered in the response only.

For volume, send many profiles to profiles-bulk instead.

Warning

Both sync endpoints share a limit of 10 requests per 10 seconds per team. Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds until the window clears) headers, and a 429 also carries Retry-After.

Warning

Enabling withFollowersAndConnections or withFullSkillsAndEndorsements raises the rate (see the credit pill above) and may take longer to complete. Enabling both does not stack. Every rate is charged whether the profile is found (200) or not (404).

Info

Set withFullSkillsAndEndorsements to true to receive skillsWithEndorsements, every skill on the profile paired with the number of endorsements it has. It also lifts the cap on skills: without the flag that array holds at most the first 20 skills a profile lists. Skills with no endorsements are returned with endorsementCount of 0, not omitted.

Info

The response is a Profile document, with no wrapper and no _id. See Profile for the full shape.

Info

Enriching many profiles in one request is cheaper per profile than calling this endpoint one at a time - see the credit pill on Profiles bulk. See the batch endpoint.

#Request

FieldTypeNotes
profilerequiredstringLinkedIn profile URL, linkedin.com/in/<slug>, or bare slug.
withFollowersAndConnectionsbooleanOptional, defaults to false. Also collects connectionsCount and followersCount.
withFullSkillsAndEndorsementsbooleanOptional, defaults to false. Returns skillsWithEndorsements and lifts the 20-skill cap.

#Call it

cURL
curl -X POST "https://api.up2data.ai/api/open-refresh/profile" \
  -H "Authorization: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "profile": "https://www.linkedin.com/in/johndoe",
  "withFollowersAndConnections": false,
  "withFullSkillsAndEndorsements": true
}'

#Response

200 - Success
{
  "url": "johndoe",
  "firstName": "John",
  "lastName": "Doe",
  "headline": "VP of Engineering at Acme Corp",
  "location": "San Francisco, California, United States",
  "experience": [
    {
      "companyName": "Acme Corp",
      "title": "VP of Engineering",
      "companyUrl": "acme-corp",
      "start": { "year": 2021, "month": 3 },
      "end": null
    }
  ]
}
404 - Error
{
  "message": "Profile not found on LinkedIn"
}

#Errors

StatusTypeWhen
404Profile not found on LinkedInNo profile was found on LinkedIn for the given URL or slug.
400Invalid inputThe input is not a LinkedIn profile URL (linkedin.com/in/) or a bare slug, or the team's daily or monthly spending cap has been reached.
403Insufficient creditsNot enough credits on the team.
429Rate limitedMore than 10 requests in 10 seconds for the team. The response carries Retry-After.
503Worker unavailableNo worker became available within 10 seconds, or the crawl could not be completed. Retry later.

See the Errors guide for every error type this version can return.