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

List signal runs

A signal's run history, newest first, with the job_id each run created.

GEThttps://api.up2data.ai/v1/signals/{signal_id}/runs
Freesynchronous

One entry per tick. job_id is the batch job that run submitted; read its results with GET /v1/batch/{job_id} or GET /v1/batch/{job_id}/results. A deferred run was rate limited at submission and is retried after Retry-After under the same run_number; a failed run carries the error from its last attempt. signal_id is a path parameter; limit and offset are query parameters.

#Request

FieldTypeNotes
signal_idrequiredstringPath parameter. The signal_id returned by POST /signals.
limitintegerQuery parameter. 1 to 200, default 50.
offsetintegerQuery parameter. Default 0.

#Call it

cURL
curl -X GET "https://api.up2data.ai/v1/signals/9d1f4c2e-7b3a-4e8f-a1c5-2f6b8d9e0a11/runs?limit=50" \
  -H "X-API-Key: YOUR_API_KEY"

#Response

200
{
  "data": {
    "signal_id": "9d1f4c2e-7b3a-4e8f-a1c5-2f6b8d9e0a11",
    "runs": [
      { "run_id": "4b8e0c1d-2a6f-4c3b-9e7d-5f1a2b3c4d5e", "run_number": 3, "scheduled_for": "2026-11-03T08:00:00Z", "started_at": "2026-11-03T08:00:00Z", "finished_at": "2026-11-03T08:00:01Z", "status": "succeeded", "attempts": 1, "job_id": "job_7hd92kfa", "error": null },
      { "run_id": "0c2d4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f", "run_number": 2, "scheduled_for": "2026-11-02T08:00:00Z", "started_at": "2026-11-02T08:00:00Z", "finished_at": "2026-11-02T08:00:14Z", "status": "failed", "attempts": 3, "job_id": null, "error": "up2data responded 500: internal_error" },
      { "run_id": "1d3e5f7a-9b2c-4d4e-8f6a-0b2c4d6e8f0a", "run_number": 1, "scheduled_for": "2026-11-01T08:00:00Z", "started_at": "2026-11-01T08:00:00Z", "finished_at": "2026-11-01T08:00:01Z", "status": "succeeded", "attempts": 1, "job_id": "job_3xk81mqp", "error": null }
    ],
    "total": 3,
    "limit": 50,
    "offset": 0
  },
  "meta": { "creditsUsed": 0, "creditsRemaining": 98413, "billed": false, "reason": "success", "requestId": "req_t4sk0001" }
}

#Errors

StatusTypeWhenBilled
400invalid_requestlimit is outside 1 to 200 or offset is negative.No
404not_foundNo signal with this signal_id in your organization, or signal_id is not a UUID.No
401invalid_api_keyMissing, malformed, or revoked key.No
429rate_limitedOver the 5,000 requests/min limit. Honor Retry-After.No
500internal_errorSomething broke on the server side.No
503upstream_errorThe scheduling service is unreachable. Safe to retry.No

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