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://docs.up2data.ai/v1/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 post

Fetch one LinkedIn post by URL: full text plus live engagement.

POSThttps://api.up2data.ai/v1/posts/enrich
1 credit+1 per flagsynchronous

Identify the post with url or urn; provide exactly one.

Info

Each bundled section is the first page of the matching engagement endpoint. Continue with its pagination_token on /posts/engagement/<kind> at that endpoint's per-item rate.

Info

Send many as batch items at 1 credit each; with_comments, with_reactions, and with_reposts go on the item, +1 credit per flag, and bundle the first 25 of each into the result entry. See the batch endpoint.

#Request

FieldTypeNotes
urlstringPublic post URL. Provide url or urn.
urnstringPost activity URN (numeric). Preferred when available. Provide url or urn.
with_commentsbooleanDefault false. Adds the first 25 comments as data.comments in the same call. +1 credit; extra latency.
with_reactionsbooleanDefault false. Adds the first 25 reactions as data.reactions in the same call. +1 credit; extra latency.
with_repostsbooleanDefault false. Adds the first 25 reposts as data.reposts in the same call. +1 credit; extra latency.

#Call it

cURL
curl -X POST "https://api.up2data.ai/v1/posts/enrich" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://linkedin.com/posts/ceo_launch-activity-7215",
  "with_comments": true
}'

#Response

200
{
  "data": {
    "url": "https://linkedin.com/posts/ceo_launch-activity-7215",
    "urn": "7267273010393358336",
    "share_urn": "urn:li:share:7315779815297421316",
    "author": { "name": "Jane Doe", "url": "https://www.linkedin.com/in/janedoe?miniProfileUrn=urn%3Ali%3Afsd_profile%3AACoAABOPHB8BM6example", "headline": "CEO at Example" },
    "text": "Today we're launching...",
    "posted_at": "2026-07-06T18:45:00Z",
    "reactions_count": 1204,
    "comments_count": 187,
    "reposts_count": 96,
    "scraped_at": "2026-07-07T14:00:02Z",
    "media": [{ "type": "image", "url": "https://media.licdn.com/..." }],
    "comments": {
      "items": [{
        "text": "Great insights on automation!",
        "posted_at": "2026-07-06T19:02:00Z",
        "commenter": { "url": "https://linkedin.com/in/janedoe", "full_name": "Jane Doe", "headline": "VP Marketing at Acme Corp", "urn": "ACoAABOPHB8BM6example", "linkedin_id": "1034085750" },
        "replies_count": 2
      }],
      "pagination": { "returned": 1, "max_results": 25, "pages_scraped": 1, "page": 1, "per_page": 25, "has_more": true, "total_estimate": 187 },
      "pagination_token": "eyJwYWdlIjoyfQ.signature"
    }
  },
  "meta": { "creditsUsed": 2, "creditsRemaining": 98418, "billed": true, "reason": "post_found", "requestId": "req_pe73mm1q", "latencyMs": 2100 }
}

#Errors

StatusTypeWhenBilled
400invalid_requestMalformed body, unknown field, or bad URL format.No
401invalid_api_keyMissing, malformed, or revoked key.No
402insufficient_creditsBalance can't cover the call.No
422unprocessable_targetTarget not found, private, deleted, or unreachable.Yes
429rate_limitedOver the 5,000 requests/min per-key limit. Honor Retry-After.No
500internal_errorSomething broke on the server side.No
504upstream_timeoutThe live scrape didn't complete in time.No

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