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/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

Rate limits

Per-key request limits, the per-organization search quota, and the headers that report them.

#Limits

Limit Default Scope
Requests per minute 300 Per API key
Requests per minute, all keys 10,000 Per organization
Requests in flight 6,000 Per organization
Searches per hour 20 Per organization

The per-key requests per minute and the searches per hour can be raised for your organization; GET /v1/account reports the values that apply to you, plus the searches left this hour. There is no cap on concurrent batch jobs.

Request limits apply per API key across every enrich, search, and batch call. Submitting a batch job counts as one request no matter how many items it holds.

The search quota counts calls, not results: every POST /v1/search/* call is 1 - people, companies, jobs, posts, their Sales Navigator (people, companies) and standard (people, companies) variants - and so is every search.* operation item (Sales Navigator, standard, jobs, or posts) you send inside a POST /v1/batch job. Enrich items and every non-search operation item inside a batch don't count against it. The quota is shared per organization, across every key. A sync search call returns at most 100 results (pagination.has_more shows when more exist); for a bigger pull - up to 2,500 for people, 1,000 for companies, 500 for jobs or posts - send it as an operation item inside POST /v1/batch instead of issuing more sync searches.

Need a higher limit? Email support@uptodata.io, and for search limits specifically, put "Higher search limits" in the subject line.

#Response headers

Every authenticated business response carries:

http
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 287
X-RateLimit-Reset: 1767225600
X-Global-RateLimit-Limit: 10000
X-Global-RateLimit-Remaining: 9987
X-Active-Requests-Limit: 6000
X-Active-Requests-Remaining: 5998

The global headers count requests across every key in the organization. The active-requests headers count calls still in flight, including this one.

Search responses also carry:

http
X-Search-RateLimit-Limit: 20
X-Search-RateLimit-Remaining: 17
X-Search-RateLimit-Reset: 1767229200

#Getting rate limited

json
{
  "error": {
    "type": "rate_limited",
    "message": "Search rate limit exceeded (20 searches per hour per organization). A sync search returns at most 100 results per call - for a bigger pull, send it as a POST /v1/batch search item instead of sending more searches. Need a higher limit? Email support@uptodata.io.",
    "requestId": "req_55azx1qm"
  }
}

The response includes a Retry-After header, in seconds. Rate-limited requests are never billed. Back off exponentially with jitter, and treat Retry-After as a floor rather than the exact wait time. See Errors for the full status table.