CNA directory stats
Aggregate stats and leaderboards across all CNAs.
GET/api/v1/cnas/stats
A directory-wide rollup: totals, the grade distribution across all CNAs, and leaderboards for the best, worst, most active, and most improved assigners.
Example request
curl "https://radicalnotion.ai/api/v1/cnas/stats" \
-H "Authorization: Bearer $RN_TOKEN"Example response(each leaderboard trimmed to three entries for brevity)
{
"summary": {
"total_cnas": 396,
"active_cnas": 360,
"total_cves": 348421,
"avg_completeness": 87.3
},
"grade_distribution": {
"A": 261,
"B": 34,
"C": 30,
"D": 27,
"F": 44
},
"leaderboard": {
"best": [
{
"slug": "patchstack",
"cna_name": "Patchstack",
"grade": "A",
"activity_status": "Active",
"total_cves": 17090,
"recent_cves": 12361,
"years_active": 4.8,
"overall_completeness": 100,
"avg_cvss_score": 6.56,
"vendor_diversity": 7820,
"latest_cve_date": "2026-07-13T08:41:25.902Z"
},
{
"slug": "huntrdev",
"cna_name": "@huntrdev",
"grade": "A",
"activity_status": "Inactive",
"total_cves": 1582,
"recent_cves": 0,
"years_active": 2.4,
"overall_completeness": 100,
"avg_cvss_score": 6.83,
"vendor_diversity": 252,
"latest_cve_date": "2023-11-03T06:40:02.720Z"
},
{
"slug": "huntr-ai",
"cna_name": "@huntr_ai",
"grade": "A",
"activity_status": "Active",
"total_cves": 811,
"recent_cves": 512,
"years_active": 3.2,
"overall_completeness": 100,
"avg_cvss_score": 7.32,
"vendor_diversity": 109,
"latest_cve_date": "2026-07-14T05:13:07.252Z"
}
],
"worst": [
{
"slug": "mitre",
"cna_name": "mitre",
"grade": "F",
"activity_status": "Active",
"total_cves": 113990,
"recent_cves": 9849,
"years_active": 26.8,
"overall_completeness": 5.4,
"avg_cvss_score": 6.73,
"vendor_diversity": 784,
"latest_cve_date": "2026-07-14T16:21:55.409Z"
},
{
"slug": "flexera",
"cna_name": "flexera",
"grade": "F",
"activity_status": "Active",
"total_cves": 501,
"recent_cves": 9,
"years_active": 20.1,
"overall_completeness": 7.7,
"avg_cvss_score": 6.61,
"vendor_diversity": 19,
"latest_cve_date": "2026-06-19T13:15:39.453Z"
},
{
"slug": "debian",
"cna_name": "debian",
"grade": "F",
"activity_status": "Active",
"total_cves": 645,
"recent_cves": 12,
"years_active": 21.4,
"overall_completeness": 9,
"avg_cvss_score": 0,
"vendor_diversity": 34,
"latest_cve_date": "2026-06-10T09:10:30.301Z"
}
],
"most_active": [
{
"slug": "patchstack",
"cna_name": "Patchstack",
"grade": "A",
"activity_status": "Active",
"total_cves": 17090,
"recent_cves": 12361,
"years_active": 4.8,
"overall_completeness": 100,
"avg_cvss_score": 6.56,
"vendor_diversity": 7820,
"latest_cve_date": "2026-07-13T08:41:25.902Z"
},
{
"slug": "github-m",
"cna_name": "GitHub_M",
"grade": "A",
"activity_status": "Active",
"total_cves": 17038,
"recent_cves": 11261,
"years_active": 6.8,
"overall_completeness": 99.9,
"avg_cvss_score": 6.75,
"vendor_diversity": 3085,
"latest_cve_date": "2026-07-14T21:46:29.373Z"
},
{
"slug": "vuldb",
"cna_name": "VulDB",
"grade": "A",
"activity_status": "Active",
"total_cves": 15229,
"recent_cves": 10895,
"years_active": 4.3,
"overall_completeness": 97.5,
"avg_cvss_score": 5.87,
"vendor_diversity": 2405,
"latest_cve_date": "2026-07-14T22:30:09.981Z"
}
],
"most_improved": [
{
"slug": "hp",
"cna_name": "hp",
"older_grade": "F",
"recent_grade": "A",
"older_score": 14.3,
"recent_score": 100,
"delta": 85.7
},
{
"slug": "redhat",
"cna_name": "redhat",
"older_grade": "F",
"recent_grade": "A",
"older_score": 25.7,
"recent_score": 99.2,
"delta": 73.5
},
{
"slug": "symantec",
"cna_name": "symantec",
"older_grade": "F",
"recent_grade": "A",
"older_score": 29.1,
"recent_score": 100,
"delta": 70.9
}
]
}
}Response schema
| Field | Type | Description |
|---|---|---|
summary.total_cnas / active_cnas / total_cves / avg_completeness | number | Directory totals. |
grade_distribution | object | Count of CNAs per letter grade. |
leaderboard.best[] / worst[] / most_active[] | object[] | Ranked CNAs (same shape as the CNA list rows). |
leaderboard.most_improved[] | object[] | CNAs with the largest completeness gains: older/recent grade and score with delta. |
Responses
| Status | Meaning |
|---|---|
200 | Success. |
400 | A path or query parameter failed validation. |
401 | Missing or invalid access token. |
429 | Rate limit exceeded. |