API Reference

Overview

The Precursor Intelligence REST API is a set of GET endpoints that return JSON. All endpoints share the same authentication and credit model.

Base URL:

https://api.precursorintelligence.com/functions/v1/

Endpoints

Every endpoint is GET and costs 1 credit per successful call, except GET /meta/account which is free. All share the response envelope and error model below.

CVE & EPSS

EndpointDescription
GET /cve/{cve-id}Full intelligence record for a single CVE: NVD data, CVSS, EPSS, CISA KEV, Shadowserver activity, risk scoring, and attributed threat actors with citations.
GET /cve/{cve-id}/actorsThreat actors reported to have exploited a CVE, each with an evidence quote and source URL.
GET /cve/high-epssCVEs with an EPSS exploit-probability above a threshold.
GET /cve/kev-recentCISA KEV catalogue entries added within the last N days.
GET /cve/notable-eventsRecent notable CVE events (new NVD entry, EPSS delta, new KEV listing).
GET /cve/by-vendorThe highest-EPSS CVEs affecting a given vendor.

CPE & Products

EndpointDescription
GET /cpe/{vendor}All tracked products for a vendor, with per-product CVE counts.
GET /cpe/{vendor}/{product}Version breakdown and CVE counts for a specific product.
GET /cpe/{vendor}/{product}/{version}Up to 200 CVE records affecting a specific version.
GET /cpe?search=Full-text search across product names.
GET /cpe?ranking=top_vendorsTop vendors by total CVE count.

CWE

EndpointDescription
GET /cwe/{cwe-id}A single CWE record: description, relationships, consequences, mitigations.
GET /cwe?q=Search the CWE catalogue.
GET /cwe/topThe most-referenced CWEs across all scored CVEs.

MITRE ATT&CK

EndpointDescription
GET /mitre/techniques/{id}A single technique, enriched with the groups, software, campaigns, mitigations, and detections related to it.
GET /mitre/techniquesList techniques, optionally filtered by tactic.
GET /mitre/techniques/topThe most-referenced techniques.
GET /mitre/tacticsAll 14 Enterprise tactics with statistics.
GET /mitre/groupsList ATT&CK adversary groups.
GET /mitre/groups/{attack-id}A single ATT&CK group.

Atomic Red Team

EndpointDescription
GET /atomics/techniquesThe Atomic Red Team technique index.
GET /atomics/testsPaged atomic tests, filterable by technique and platform.
GET /atomics/tests/{id}A single atomic test: executors, dependencies, inputs.

Threat Actors

EndpointDescription
GET /actorsThreat actors ranked by evidence volume, filterable by ?type= (ransomware, apt, cybercrime, hacktivist).
GET /actors/{name}Full dossier: aliases, ATT&CK techniques, campaigns, related groups, ransomware tradecraft, CVEs, industries and malware — each with an evidence quote and source URL.
GET /actors/{name}/cvesCVEs an actor is reported to exploit, with CVSS, EPSS and CISA KEV, ordered for a patch queue.
GET /actors?industry=Threat actors that target a given industry, with citations.

IOCs

EndpointDescription
GET /ioc?value=Exact-match IOC lookup with enrichment.
GET /ioc?q=Substring IOC search, filterable by type and malware.
GET /ioc/recentIOCs first seen in the last N days.

Malware Samples

EndpointDescription
GET /malware?q=Search MalwareBazaar samples.
GET /malware/{sha256}A single malware sample by hash.
GET /malware/recentRecently observed samples.
GET /malware/topThe most-referenced malware families.

Blacklists

EndpointDescription
GET /blacklist/ssl/{sha1}Check the abuse.ch SSL (SSLBL) certificate blacklist.
GET /blacklist/ja3/{md5}Check the abuse.ch JA3 fingerprint blacklist.

Shadowserver

EndpointDescription
GET /shadowserver/cve/{cve-id}Daily honeypot observations for a single CVE.
GET /shadowserver/top-cvesTop CVEs by honeypot connections.
GET /shadowserver/top-vendorsTop vendors by honeypot connections.
GET /shadowserver/daily-statsAggregate daily honeypot statistics.

Remediation

EndpointDescription
GET /remediation/summary/{cve-id}AI-generated remediation summaries for a CVE.
GET /remediation/affected-systemsThe most-referenced affected systems.

Supply Chain

EndpointDescription
GET /supply-chain/incidentsList supply-chain incidents.
GET /supply-chain/incidents/{id}A single incident with its affected packages.
GET /supply-chain/packages?name=Find incidents affecting a given package.

Account & Meta

EndpointDescription
GET /meta/accountYour credit balance, key metadata, and rate-limit state. Free.

Your Data · Vulnerability Intelligence

All /my endpoints return your organisation's own data rather than public threat intel, and require a key with the api:org scope (api:read does not imply it). The organisation always comes from the API key — there is no way to name a tenant in a request.

EndpointDescription
GET /my/cvesCVEs matched to your watched vendors and products, highest EPSS first.
GET /my/triageYour triaged CVEs: Precursor's vulnerability score and action priority, with threat-actor, malware and industry context.
GET /my/alertsYour watchlist alert feed, newest first. ?since= makes polling cheap.
GET /my/exposure/{cve_id}"Am I exposed to this CVE?" — confirmed findings, watchlist state, best-effort asset matches, and in-the-wild activity in one document.

Your Data · Attack Surface

Your EdgeProtect attack-surface data. The scan is the unit: one scan document contains the whole snapshot, so you never pay per table.

EndpointDescription
GET /my/vulnerabilitiesEdgeProtect findings across the latest scan of every target — your current attack surface, worst first.
GET /my/scansYour scans, newest first — each with its target and rollup counts embedded.
GET /my/scans/{scan_id}One whole scan as a single document: hosts (with IPs + open ports), domains, DNS, SSL certificates, network ranges, vulnerabilities. ?sections= to slim it.
GET /my/scans/{scan_id}/deltaPrecomputed diff vs the previous scan of the same target.
GET /my/scans/{scan_id}/credentialsBreach-exposed credentials, redacted to existence flags — the password and breach PII never leave the database.

Response envelope

Every successful response uses the same outer shape:

200 OK
{
  "data": { },
  "meta": {
    "request_id": "8b16efb8-9a6c-4ace-b817-11cbee626d08",
    "generated_at": "2026-05-18T10:24:31.118Z",
    "credits": { "charged": 1, "remaining": 9998 }
  }
}

meta is consistent across all endpoints. data contains the endpoint-specific payload.

Response envelope fields

FieldTypeDescription
dataobjectEndpoint-specific payload. See each endpoint's reference for the full field list.
meta.request_idstringUUID identifying this request. Returned in the x-request-id response header as well.
meta.generated_atstringISO 8601 UTC timestamp for when the response was generated.
meta.credits.chargedintegerCredits deducted for this call (1 for a successful call).
meta.credits.remainingintegerCredits remaining in your organisation's pool after this call.

Conventions

  • Authentication: all requests require Authorization: Bearer $PRECURSOR_API_KEY. Keys are created in the dashboard at precursorintelligence.com under Settings → API Keys.
  • Credits: each successful call costs 1 credit, shared across your organisation. See Credits for top-up and balance details.
  • HTTP method: all endpoints are GET. Requests using any other method return 405 method_not_allowed.
  • Case sensitivity: path parameters are case-insensitive on input and are normalised server-side (CVE-2024-3094 and cve-2024-3094 resolve identically).
  • Timestamps: all timestamps are RFC 3339 UTC strings.
  • Numeric scores: CVSS and EPSS values are JSON numbers, not strings.
  • Absent fields: fields with no data are omitted from the response; they are never returned as null.
  • Errors: all error bodies follow the shape { "error": "<machine_code>" }. See Errors for the full list of codes.

Errors

StatuserrorWhen
400invalid_cve_id (or similar)A path parameter failed validation.
401unauthorizedThe API key is missing, invalid, or revoked.
402insufficient_creditsYour organisation's credit balance is zero.
404not_foundThe route or the requested entity does not exist in the dataset.
405method_not_allowedA non-GET method was used.
500internalAn unexpected server error occurred.

See Errors for the complete error reference.