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

Enqueue posts by URL

Scrape individual LinkedIn posts from their own permalinks.

POSThttps://api.up2data.ai/api/open-refresh/post-by-url
1 creditasynchronous

Scrape individual LinkedIn posts from their own permalinks - the post does not have to belong to a profile you have ever enriched. Both LinkedIn post URL shapes are accepted: linkedin.com/feed/update/urn:li:activity:<id> (raw or URL-encoded, and share and ugcPost URNs work the same way) and linkedin.com/posts/<slug>, whose slug ends in the post id. Query strings and trailing slashes are stripped for you.

Warning

Ensure you have sufficient credits before making requests - see the credit pill above.

Info

De-duplication is on the post itself, not on the string you sent: the same post submitted twice through two different URL shapes is charged once and counted under skipped.duplicates. A URL with no readable post id counts as skipped.invalid.

Info

A post-by-url queue's results belong to the queue itself. Read them back with queues-list or wait for the webhook callback, and see PostByUrl for the shape.

#Request

FieldTypeNotes
postsrequiredstring[]LinkedIn post URLs.
namestringOptional.
prioritynumberOptional, 1 = High, 2 = Normal, 3 = Low, defaults to 2.
webhookTagsstring[]Optional, defaults to every webhook on the team. Send [] to switch callbacks off - see the Webhooks guide.

#Call it

cURL
curl -X POST "https://api.up2data.ai/api/open-refresh/post-by-url" \
  -H "Authorization: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Competitor Launch Posts",
  "posts": [
    "https://www.linkedin.com/feed/update/urn:li:activity:7245678901234567890",
    "https://www.linkedin.com/posts/johndoe_were-hiring-activity-7245678901234567891-Ab1c",
    "https://www.linkedin.com/feed/update/urn%3Ali%3Ashare%3A7245678901234567892"
  ],
  "priority": 2
}'

#Response

200 - Success
{
  "message": "3 post-by-url items have been enqueued (3 credits).",
  "queueId": "507f1f77bcf86cd799439011",
  "enqueued": 3,
  "skipped": {
    "invalid": 0,
    "duplicates": 0
  },
  "webhooks": [
    {
      "_id": "6512c1a4f1b2c3d4e5f60789",
      "name": "Production",
      "url": "https://api.example.com/hooks/up2data"
    }
  ]
}
400 - Error
{
  "message": "No valid post urls to enqueue: of 4 submitted, 1 were invalid and 3 were duplicates."
}

#Webhook payload

Callback item
{
  "queueId": "507f1f77bcf86cd799439011",
  "name": "Competitor Launch Posts",
  "url": "https://www.linkedin.com/feed/update/urn:li:activity:7245678901234567890",
  "type": "PostByUrl",
  "status": 200,
  "_id": "8f14e45fceea167a5a36dedd4bea254a",
  "result": { ... }
}

#Errors

StatusTypeWhen
400No valid post urls to enqueueEvery entry in posts was invalid or a duplicate after normalization, so no queue was created.
400No webhook matches webhookTagsOne or more webhookTags do not match any webhook on the team.

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