API Reference · Your Data

Your Relevant CVEs

CVEs matched to your organisation's watched vendors and products, worst first — ordered by EPSS exploit probability, so the top of page one is always the thing most likely to be exploited. Each row says what matched (vendor / product / version) and how it matched (match_type), alongside the CVSS, EPSS and CISA KEV context needed to act on it without a second lookup.

This is the watchlist view: it reflects what you have told the platform you run, not what a scan discovered. For findings on your live attack surface, use GET /my/vulnerabilities.

GET
/v1/my/cves

Cost: 1 credit per successful call · Scope: api:org

Query parameters

kev_onlybooleanoptional

true to return only CVEs listed in the CISA KEV catalogue. Anything else is treated as false.

min_epssnumberoptional

Only CVEs with an EPSS score at or above this threshold, 01 (e.g. 0.5). CVEs with no EPSS score are excluded when set.

limitintegeroptional

Page size, 1–200. Default 50. Out-of-range is a 400, not a silent clamp.

cursorstringoptional

Opaque pagination cursor from a previous page's next_cursor. Replay the same filters with it.

Request

curl "https://api.precursorintelligence.com/functions/v1/my/cves?kev_only=true&limit=2" \
  -H "Authorization: Bearer $PRECURSOR_API_KEY"

Response

200 OK
{
  "data": {
    "count": 2,
    "items": [
      {
        "cve_id": "CVE-2026-21762",
        "vendor": "fortinet",
        "product": "fortios",
        "version": "7.4.2",
        "match_type": "product",
        "cvss_score": 9.8,
        "cvss_class": "CRITICAL",
        "epss_score": 0.94321,
        "epss_class": "HIGH",
        "in_kev": true,
        "published": "2026-07-14T00:00:00+00:00"
      },
      {
        "cve_id": "CVE-2026-1709",
        "vendor": "f5",
        "product": "nginx",
        "version": null,
        "match_type": "vendor",
        "cvss_score": 7.5,
        "cvss_class": "HIGH",
        "epss_score": 0.61244,
        "epss_class": "HIGH",
        "in_kev": true,
        "published": "2026-06-02T00:00:00+00:00"
      }
    ],
    "next_cursor": "eyJrIjogIjAuNjEyNDQi...",
    "has_more": true,
    "generated_at": "2026-08-19T09:30:00+00:00"
  },
  "meta": {
    "request_id": "8b16efb8-9a6c-4ace-b817-11cbee626d08",
    "api_version": "1.3.0",
    "credits": { "charged": 1, "remaining": 9998 }
  }
}

Response fields

data.items[].cve_idstringoptional

The CVE identifier. Feed it to GET /cve/{cve-id} for the full intelligence record, or to GET /my/exposure/{cve_id} to check whether your scanned attack surface confirms it.

data.items[].match_typestringoptional

How the CVE matched your watchlist — e.g. a vendor-level or product-level match.

data.items[].cvss_class / epss_classstring | nulloptional

Precomputed severity bands (CRITICAL / HIGH / …) so a client can bucket without re-deriving thresholds.

data.next_cursorstring | nulloptional

Follow until null, replaying the same filters. Opaque — do not parse it.

Rows are ordered epss_score descending (CVEs without a score sort last), tiebroken by cve_id, and the collection re-scores as EPSS updates daily — so walk it with the cursor rather than assuming positions are stable between days.

Errors

StatuserrorWhen
400invalid_min_epss, invalid_limit, invalid_cursorA parameter failed validation. Free — rejected before billing.
401invalid_authorizationMissing or malformed Authorization header.
401unauthorizedInvalid/revoked key, IP not allowlisted, or the key lacks the api:org scope.
402insufficient_creditsOrganisation credit balance is below 1.
405method_not_allowedOnly GET and OPTIONS are accepted.
500internalUnexpected server error (credit auto-refunded).

See Errors for the full error reference.