API Keys
Generate keys from Organization settings → API (PRO plan required, admin role). Each key belongs to the organization and is prefixed with twa_.
The TechWatchAlert API lets you programmatically access your monitoring data: alerted CVEs, watched stacks and End-of-Life tracking, all organized by project.
API Keys
Generate keys from Organization settings → API (PRO plan required, admin role). Each key belongs to the organization and is prefixed with twa_.
Base URL
All endpoints are prefixed with https://app.techwatchalert.com/api/v1
Reads, and two writes
The public API is for reading. Two writes are ticked separately on the key: uploading a scanner report (POST …/scans, scope scans) and creating or editing a workflow (POST …/workflows, scope workflows-write). TechWatchAlert does not run a scan.
Format
All responses are JSON. Dates are ISO 8601 format with UTC timezone.
| Method | Endpoint | Description |
|---|---|---|
GET |
/v1/me |
The organization the key belongs to and its plan |
GET |
/v1/organizations |
The organization the key belongs to |
GET |
/v1/organizations/{id}/projects |
Projects of an organization |
GET |
/v1/organizations/{org_id}/projects/{id} |
Project details |
GET |
/v1/organizations/{org_id}/projects/{id}/stack |
CVE monitoring stack for a project |
GET |
/v1/organizations/{org_id}/projects/{id}/alerts |
CVE alerts triggered on a project |
GET |
/v1/organizations/{org_id}/projects/{id}/alerts/{alert_id} |
CVE alert details |
GET |
/v1/organizations/{org_id}/projects/{id}/eol |
End-of-Life subscriptions for a project |
GET |
/v1/organizations/{org_id}/projects/{id}/urls |
Monitored URLs (certificates, detected tech) |
GET |
/v1/organizations/{org_id}/projects/{id}/urls/{url_id} |
Monitored URL details |
GET |
/v1/organizations/{org_id}/projects/{id}/cases |
CVE handling cases (triage) |
GET |
/v1/organizations/{org_id}/projects/{id}/cases/{cve_id} |
Case details + history |
GET |
/v1/organizations/{org_id}/projects/{id}/workflows |
A project’s workflows (no graph; there is no single-item GET) |
POST |
/v1/organizations/{org_id}/projects/{id}/workflows |
Create a workflow (scope workflows-write, Idempotency-Key, 201) |
PATCH |
/v1/organizations/{org_id}/projects/{id}/workflows/{workflow_id} |
Update a workflow (version required) |
PATCH |
/v1/organizations/{org_id}/projects/{id}/workflows/{workflow_id}/enabled |
Enable or disable a workflow |
DELETE |
/v1/organizations/{org_id}/projects/{id}/workflows/{workflow_id} |
Delete a workflow (204) |
GET |
/v1/organizations/{org_id}/projects/{id}/workflows/{workflow_id}/runs |
Workflow run history |
GET |
/v1/organizations/{org_id}/projects/{id}/stats |
Project statistics (alerts, KEV, PoC…) |
POST |
/v1/organizations/{org_id}/projects/{id}/scans |
Upload a scanner report (scope scans, 201) |
GET |
/v1/cves |
Search the CVE database |
GET |
/v1/cves/{cve_id} |
Full CVE details |
GET |
/v1/articles |
Security watch article feed |
GET |
/v1/eol/products |
Full EOL product catalog |
GET |
/v1/eol/products/{product_id}/cycles |
Life cycles for a product |
GET |
/v1/statistics/timeseries |
CVE volume by day, week, month, year |
GET |
/v1/statistics/top |
Top CWEs, vendors, products, CNAs over a period |
GET |
/v1/statistics/top-trend |
How a ranking moves over time |
GET |
/v1/statistics/delays |
Publication→KEV, reservation→publication, →PoC delays |
GET |
/v1/statistics/catalog |
Available dimensions, granularities and metrics |
GET |
/v1/statistics/distribution |
CVSS histogram, EPSS bands, attack vector, PoC coverage |
GET |
/v1/statistics/totals |
Global counters, including rejected and reserved CVEs |
| Code | Meaning |
|---|---|
200 |
Success |
201 |
Scanner report uploaded, or workflow created |
401 |
API key missing, invalid, revoked or expired |
403 |
Plan without API access, missing scope, or missing write scope (scans, workflows-write) |
404 |
Resource not found, or project outside the key (Projet introuvable) |
413 |
Scan report too large (20 MB) |
422 |
Invalid parameters or report |
429 |
API call limit exceeded |