Skip to main content

API Endpoints

Base URL: https://wtfisthiscve.com

Get CVE Explanation

GET /api/cve/{cve_id}

Returns a plain English explanation for a CVE.

Parameters

ParameterTypeDescription
cve_idstringCVE identifier (e.g., CVE-2021-44228)

Headers

HeaderRequiredDescription
X-API-KeyYesYour API key

Example Request

curl -H "X-API-Key: your-api-key" \
https://wtfisthiscve.com/api/cve/CVE-2021-44228

Example Response

{
"ok": true,
"data": {
"cve_id": "CVE-2021-44228",
"title": "Log4Shell - Apache Log4j Remote Code Execution",
"severity": "CRITICAL",
"cvss_score": 10.0,
"summary": "A critical remote code execution vulnerability in Apache Log4j 2.x that allows attackers to execute arbitrary code by sending specially crafted log messages.",
"affected": "Apache Log4j versions 2.0-beta9 through 2.14.1. If you use Java applications that use Log4j for logging (very common), you may be affected. Check your dependencies.",
"fix": "Upgrade to Log4j 2.17.0 or later. As a temporary mitigation, you can set the system property log4j2.formatMsgNoLookups=true or remove the JndiLookup class from the classpath.",
"references": [
{
"title": "Apache Log4j Security Vulnerabilities",
"url": "https://logging.apache.org/log4j/2.x/security.html"
},
{
"title": "NVD - CVE-2021-44228",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-44228"
}
]
}
}

Response Fields

FieldTypeDescription
cve_idstringThe CVE identifier
titlestringShort descriptive title
severitystringCRITICAL, HIGH, MEDIUM, LOW, or UNKNOWN
cvss_scorenumberCVSS v3.1 base score (0-10), null if unknown
summarystringPlain English explanation of the vulnerability
affectedstringWho is affected and how to check
fixstringRemediation steps
referencesarrayLinks to official sources

Export CVEs to CSV

GET /api/cves/export.csv

Download CVE data as a CSV file. Results are filtered based on query parameters.

Headers

HeaderRequiredDescription
X-API-KeyYesYour API key

Query Parameters

ParameterTypeDescription
severitystringFilter by severity (CRITICAL, HIGH, MEDIUM, LOW)
risk_levelstringFilter by risk level (CRITICAL_GAP, HIGH, etc.)
patch_statusstringFilter by patch status (available, not_available)
tagstringFilter by tag
min_scorenumberMinimum CVSS score (0-10)
searchstringSearch CVE ID or description

Rate Limits

  • 10 exports per hour per API key
  • Maximum 1000 rows per export

Example Request

curl -H "X-API-Key: your-api-key" \
"https://wtfisthiscve.com/api/cves/export.csv?severity=CRITICAL" \
-o critical_cves.csv

Response

Returns a CSV file with the following columns:

ColumnDescription
cve_idCVE identifier
titleShort descriptive title
severityCRITICAL, HIGH, MEDIUM, LOW, or UNKNOWN
cvss_scoreCVSS v3.1 base score (0-10)
published_dateDate CVE was published
patch_statusavailable, partial, workaround_only, not_available
days_unpatchedDays since publication (if unpatched)
risk_levelCRITICAL_GAP, HIGH, MEDIUM, or LOW

Error Responses

StatusDescription
401Missing or invalid API key
429Rate limit exceeded (10 exports per hour)

Export CVEs to JSON

GET /api/cves/export.json

Download CVE data as a structured JSON file with full details including explanations, exploit intelligence, and patch information.

When to Use JSON Export

  • Building integrations that need full CVE details programmatically
  • Automated vulnerability analysis pipelines
  • Data science and research projects requiring structured data
  • Custom dashboards where you need explanation text, exploit intel, and patch status together

Headers

HeaderRequiredDescription
X-API-KeyYesYour API key

Query Parameters

Same as CSV export: severity, risk_level, patch_status, tag, min_score, search

Rate Limits

  • 10 exports per hour per API key (shared with CSV/SARIF)
  • Maximum 1000 rows per export

Example Request

curl -H "X-API-Key: your-api-key" \
"https://wtfisthiscve.com/api/cves/export.json?severity=CRITICAL" \
-o critical_cves.json

Example Response

{
"ok": true,
"data": {
"cves": [
{
"cve_id": "CVE-2024-1234",
"title": "Remote Code Execution in Example Library",
"severity": "CRITICAL",
"cvss_score": 9.8,
"description": "Original NVD description...",
"published_date": "2024-01-15",
"cwe_ids": ["CWE-78"],
"explanation": {
"summary": "Plain English explanation of the vulnerability...",
"affected": "Who is affected and how to check...",
"fix": "Remediation steps...",
"references": [
{"title": "NVD", "url": "https://nvd.nist.gov/...", "ref_type": "advisory"}
]
},
"exploit_intel": {
"risk_level": "CRITICAL_GAP",
"detectable": false,
"weaponized": true,
"detection_sources": [],
"exploit_sources": ["exploit-db", "metasploit"]
},
"patch": {
"status": "available",
"patch_date": "2024-01-18",
"patch_urls": ["https://example.com/patch"],
"days_unpatched": 3
},
"tags": [
{"tag": "apache", "tag_type": "vendor"}
]
}
],
"meta": {
"total": 150,
"exported": 150,
"max_rows": 1000,
"exported_at": "2024-12-13T15:30:00Z"
}
}
}

Response Structure

FieldTypeDescription
cves[].cve_idstringCVE identifier
cves[].titlestringShort descriptive title
cves[].severitystringCRITICAL, HIGH, MEDIUM, LOW
cves[].cvss_scorenumberCVSS v3.1 base score (0-10)
cves[].descriptionstringOriginal NVD description
cves[].published_datestringDate CVE was published
cves[].cwe_idsarrayAssociated CWE weakness IDs
cves[].explanationobjectPlain English explanation (if available)
cves[].exploit_intelobjectExploit intelligence data (if available)
cves[].patchobjectPatch availability info (if available)
cves[].tagsarrayAssociated tags (vendor, product, technology)
meta.totalnumberTotal matching CVEs before cap
meta.exportednumberNumber of CVEs in this export
meta.max_rowsnumberMaximum rows per export (1000)
meta.exported_atstringISO 8601 timestamp of export

Export CVEs to SARIF

GET /api/cves/export.sarif

Download CVE data in SARIF 2.1.0 format for security tool integration.

What is SARIF?

SARIF (Static Analysis Results Interchange Format) is an OASIS standard for expressing results from static analysis tools. It's the industry-standard format used by:

  • GitHub Code Scanning - Upload SARIF files to see vulnerabilities in your repository
  • Azure DevOps - Security dashboards and alerts
  • SAST/DAST tools - Unified vulnerability reporting across multiple tools

When to Use SARIF Export

  • GitHub Code Scanning integration - Upload CVE data alongside your static analysis results
  • Azure DevOps security dashboards - Unified vulnerability view
  • Security tool consolidation - Aggregate CVE data with other security findings
  • Compliance reporting - Standard format accepted by many security platforms

Headers

HeaderRequiredDescription
X-API-KeyYesYour API key

Query Parameters

Same as CSV export: severity, risk_level, patch_status, tag, min_score, search

Rate Limits

  • 10 exports per hour per API key (shared with CSV/JSON)
  • Maximum 1000 rows per export

Example Request

curl -H "X-API-Key: your-api-key" \
"https://wtfisthiscve.com/api/cves/export.sarif?severity=CRITICAL" \
-o critical_cves.sarif

SARIF Structure

The export follows the SARIF 2.1.0 specification:

{
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
"version": "2.1.0",
"runs": [{
"tool": {
"driver": {
"name": "wtfisthiscve",
"version": "0.1.0",
"informationUri": "https://wtfisthiscve.com",
"rules": [
{
"id": "CVE-2024-1234",
"shortDescription": {"text": "Remote Code Execution"},
"fullDescription": {"text": "Plain English explanation..."},
"helpUri": "https://wtfisthiscve.com/cve/CVE-2024-1234",
"help": {"text": "Affected: ...\n\nFix: ..."},
"defaultConfiguration": {"level": "error"},
"properties": {
"security-severity": "9.8",
"tags": ["security", "CVE", "external/cwe/cwe-78"]
}
}
]
}
},
"taxonomies": [{
"name": "CWE",
"version": "4.13",
"informationUri": "https://cwe.mitre.org/",
"taxa": [{"id": "78", "shortDescription": {"text": "OS Command Injection"}}]
}],
"results": [{
"ruleId": "CVE-2024-1234",
"ruleIndex": 0,
"level": "error",
"message": {"text": "CVE-2024-1234: Remote Code Execution (CVSS 9.8)"},
"properties": {
"cvss-score": 9.8,
"risk-level": "CRITICAL_GAP",
"patch-status": "available",
"weaponized": true
}
}]
}]
}

SARIF Severity Mapping

CVSS scores are mapped to SARIF levels for GitHub Code Scanning:

CVSS ScoreSARIF LevelGitHub Severity
>= 7.0errorHigh
>= 4.0warningMedium
< 4.0noteLow

GitHub Code Scanning Integration

Upload the SARIF file to GitHub using the Code Scanning API:

# Export SARIF
curl -H "X-API-Key: your-api-key" \
"https://wtfisthiscve.com/api/cves/export.sarif?severity=CRITICAL" \
-o cves.sarif

# Upload to GitHub (requires gzip compression)
gzip cves.sarif
cat cves.sarif.gz | base64 > cves.sarif.b64

curl -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/OWNER/REPO/code-scanning/sarifs" \
-d "{
\"commit_sha\": \"$(git rev-parse HEAD)\",
\"ref\": \"refs/heads/main\",
\"sarif\": \"$(cat cves.sarif.b64)\"
}"

Health Check

GET /health

Returns service health status. Does not require authentication.

Example Response

{
"ok": true,
"data": {
"status": "healthy",
"product": "wtfisthiscve"
}
}