Skip to content

GET /v1/statistics/timeseries

The number of CVEs published over a period, bucketed at the granularity you choose. Unlike project statistics, these figures cover the entire CVE database and depend on neither your stack nor your alerts.

The data comes from pre-aggregated views: a twenty-year window costs the same as a one-week window.

Required scope: stats-global

GET /api/v1/statistics/timeseries
Authorization: Bearer twa_your_key_here
Parameter Type Default Description
granularity string month day, week, month, quarter, year
axis string published published = publication date; kev = date added to the CISA KEV catalog
period string — Window shorthand: 2026, 2026-Q1, 2026-03, 2026-W12, 2026-03-15
from date 1999-01-01 Start bound (YYYY-MM-DD), ignored when period is set
to date tomorrow End bound, ignored when period is set

axis=kev is a separate axis from publication: a CVE published in 2017 can enter the KEV catalog in 2026. It then counts in 2017 on the published axis, and in 2026 on the kev axis.

The from and to values in the response are the bounds actually applied: every window is clamped between 1999-01-01 and one year into the future.

{
"axis": "published",
"granularity": "month",
"from": "2026-01-01",
"to": "2026-03-31",
"count": 3,
"points": [
{
"period": "2026-01-01",
"total": 4312,
"critical": 388,
"high": 1247,
"medium": 1980,
"low": 402,
"unscored": 295,
"kev": 14,
"poc": 611,
"avg_cvss": 6.84,
"avg_epss": 3.127,
"pct_critical_high": 37.9
}
]
}
Field Type Description
period date First day of the bucket
total integer CVEs published in the bucket
critical high medium low integer Breakdown by severity
unscored integer Severity NONE or UNKNOWN
kev integer CVEs from the bucket present in the KEV catalog
poc integer CVEs with at least one known public PoC
avg_cvss float|null Mean CVSS score, null when nothing is scored
avg_epss float|null Mean EPSS score, as a percentage (stored internally as a 0–1 probability)
pct_critical_high float Share of CRITICAL + HIGH in the total

On axis=kev, only total, critical, high and poc are returned.

Code Detail Cause
422 Granularité inconnue… Value outside the allowed list
422 Période « … » non reconnue Invalid period format
422 La borne de début est postérieure à la borne de fin. from > to

GET /api/v1/statistics/catalog returns the available granularities, dimensions, metrics and period formats. Useful for building a UI without hard-coding those lists.

Weekly volume for 2026, and the three busiest weeks:

Fenêtre de terminal
curl -s \
-H "Authorization: Bearer twa_your_key_here" \
"https://app.techwatchalert.com/api/v1/statistics/timeseries?granularity=week&period=2026" \
| jq '.points | sort_by(-.total) | .[0:3] | map({week: .period, total, critical})'