Getting Started

Quickstart

Make your first authenticated request in two steps. You'll need a Precursor Intelligence account and a few minutes.

1. Create an API key

Sign in to precursorintelligence.com and head to Settings → API Keys.

  1. Click Create key.
  2. Give the key a name (e.g. prod-backend).
  3. (Optional) Add an IP allowlist. The API rejects requests from any address not in the list.
  4. Click Generate. The full token is shown once: copy it now.
One-time reveal

The token is shown once. Once you close the dialog it cannot be retrieved again. If you lose it, revoke the key and create a new one.

2. Make a request

All REST endpoints are GET and live under https://api.precursorintelligence.com/functions/v1/. Pass your key as a bearer token.

Fetch a CVE
curl https://api.precursorintelligence.com/functions/v1/cve/CVE-2024-3094 \
  -H "Authorization: Bearer $PRECURSOR_API_KEY"

A successful response looks like this:

200 OK
{
  "data": {
    "cve_id": "CVE-2024-3094",
    "nvd": {
      "published": "2024-03-29T17:15:21.150Z",
      "last_modified": "2024-04-19T23:15:16.917Z",
      "vuln_status": "Analyzed",
      "descriptions": [
        {
          "lang": "en",
          "value": "Malicious code was discovered in the upstream tarballs of xz, starting with version 5.6.0."
        }
      ],
      "metrics": {
        "cvss_v3_1": { "base_score": 10.0, "base_severity": "CRITICAL", "vector_string": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H" }
      },
      "weaknesses": [{ "cwe_id": "CWE-506", "description": "Embedded Malicious Code" }]
    },
    "kev_cisa": {
      "date_added": "2024-03-29",
      "due_date": "2024-04-05",
      "vendor_project": "XZ Utils",
      "product": "liblzma",
      "vulnerability_name": "XZ Utils Embedded Malicious Code Vulnerability",
      "required_action": "Apply mitigations per vendor instructions or discontinue use."
    },
    "epss": {
      "current": 0.9456,
      "current_percentile": 0.9984,
      "delta": 0.002,
      "updated_at": "2026-05-18T00:00:00.000Z"
    },
    "risk_score": {
      "vulnerability_score": 9.8,
      "action_priority": "CRITICAL",
      "seen_wild": true,
      "known_exploited": true,
      "cvss_score": 10.0,
      "cvss_version": "3.1",
      "epss_score": 0.9456,
      "epss_percentile": 0.9984,
      "cwe_ids": ["CWE-506"],
      "vulnerability_types": ["Supply Chain"],
      "threat_actors": ["APT29"],
      "targeted_industries": ["Technology", "Government"]
    },
    "shadowserver_kev": {
      "observation_date": "2026-05-17",
      "vendor": "XZ Utils",
      "product": "liblzma",
      "vulnerability_class": "RCE",
      "vulnerability_severity": "CRITICAL",
      "connections": 18432,
      "avg_1d": 612,
      "avg_7d": 589,
      "avg_30d": 544,
      "also_in_cisa_kev": true
    },
    "shadowserver_counts": [
      { "observation_date": "2026-05-17", "geo": "US", "event_type": "honeypot", "unique_ips": 214 }
    ],
    "notable_events": [
      { "event_type": "cisa_kev_added", "event_time": "2024-03-29T00:00:00.000Z", "details": "Added to CISA KEV" }
    ],
    "generated_at": "2026-05-18T10:24:31.118Z"
  },
  "meta": {
    "request_id": "8b16efb8-9a6c-4ace-b817-11cbee626d08",
    "generated_at": "2026-05-18T10:24:31.118Z",
    "credits": { "charged": 1, "remaining": 9998 }
  }
}

Each response includes two useful headers alongside the body: x-request-id (quote this in support tickets) and x-credits-remaining (your organisation's balance after the call).

Next steps