Die patchletter-API — Update-Daten direkt in deinem Tooling
patchletter liefert Produktkatalog, Release-Historie, CVE-/KEV-Treffer und End-of-Life-Zyklen als offene, kostenlose REST-API. Nur lesende GET-Endpunkte, kein Account nötig.
Auth & Rate-Limits
Lesender Zugriff funktioniert komplett ohne Anmeldung. Ein optionaler persönlicher API-Key hebt dein Rate-Limit an — in Sekunden im Dashboard angelegt.
Ohne Key
60 req/min · IP
60 Requests/Minute pro IP-Adresse. Standard für alle unauthentifizierten Anfragen.
Mit API-Key
600 req/min · Key
600 Requests/Minute pro Key — 10× mehr. Kostenlos, ein Key pro Account.
API-Key im Dashboard anlegen →Key mitschicken als Bearer-Token oder eigener Header — beide sind gleichwertig:
curl -H "Authorization: Bearer pk_live_YOUR_KEY" "https://patchletter.com/api/v1/products"
# äquivalent:
curl -H "X-API-Key: pk_live_YOUR_KEY" "https://patchletter.com/api/v1/products"Jede Antwort trägt X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset (Unix-Zeitstempel). Bei Überschreitung liefert die API 429 rate_limited inkl. Retry-After-Header:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1770000000
Retry-After: 23
{ "error": { "code": "rate_limited", "message": "Rate limit exceeded — try again later." } }Ressourcen
Alle Endpunkte liegen unter der Basis-URL https://patchletter.com/api/v1 und liefern JSON. Listen sind als { data, pagination } gekapselt; pagination.nextCursor ist ein opaker String — unverändert an ?cursor= zurückgeben, nicht selbst parsen.
/api/v1/productsProduktliste
Gefilterte, sortierte, paginierte Liste aller aktiven Produkte. Filter: category (exakter Kategorie-Slug), q (Freitextsuche über Name/Hersteller/Slug), cursor, limit (1–100, Default 50).
Beispiel
curl "https://patchletter.com/api/v1/products?category=server-datenbanken&limit=2"Beispiel-Response
{
"data": [
{
"slug": "nginx",
"name": "nginx",
"vendor": "F5 / nginx",
"category": "server-datenbanken",
"subcategory": "Reverse Proxy",
"websiteUrl": "https://nginx.org",
"isHardware": false,
"latestVersion": "1.27.4",
"latestReleasedAt": "2026-02-05T00:00:00.000Z"
},
{
"slug": "postgresql",
"name": "PostgreSQL",
"vendor": "PostgreSQL Global Development Group",
"category": "server-datenbanken",
"subcategory": null,
"websiteUrl": "https://www.postgresql.org",
"isHardware": false,
"latestVersion": "17.2",
"latestReleasedAt": "2026-01-09T00:00:00.000Z"
}
],
"pagination": { "nextCursor": "postgresql", "limit": 2 }
}/api/v1/products/{slug}Produktdetail
Einzelnes Produkt inkl. aktuellster Version, Kanal und EOL-Kurzform. eol ist null, wenn das Produkt nicht bei endoflife.date getrackt wird. Unbekannter Slug → 404.
Beispiel
curl "https://patchletter.com/api/v1/products/nginx"Beispiel-Response
{
"slug": "nginx",
"name": "nginx",
"vendor": "F5 / nginx",
"category": "server-datenbanken",
"subcategory": "Reverse Proxy",
"description": "Webserver und Reverse Proxy — überall.",
"websiteUrl": "https://nginx.org",
"isHardware": false,
"latestVersion": "1.27.4",
"latestChannel": "STABLE",
"latestReleasedAt": "2026-02-05T00:00:00.000Z",
"eol": null
}/api/v1/products/{slug}/releasesRelease-Historie
Chronologische Release-Liste eines Produkts, neueste Version zuerst. Filter: channel (STABLE, LTS, BETA, SECURITY, FIRMWARE), cursor, limit.
Beispiel
curl "https://patchletter.com/api/v1/products/nginx/releases?limit=2"Beispiel-Response
{
"data": [
{
"version": "1.27.4",
"versionNorm": "1.27.4",
"channel": "STABLE",
"releasedAt": "2026-02-05T00:00:00.000Z",
"detectedAt": "2026-02-06T03:00:12.000Z",
"notesUrl": "https://nginx.org/en/CHANGES",
"summary": "Security fix for a request-smuggling edge case in HTTP/2 handling.",
"isSecurity": true
},
{
"version": "1.27.3",
"versionNorm": "1.27.3",
"channel": "STABLE",
"releasedAt": "2025-12-16T00:00:00.000Z",
"detectedAt": "2025-12-17T03:00:05.000Z",
"notesUrl": "https://nginx.org/en/CHANGES",
"summary": null,
"isSecurity": false
}
],
"pagination": { "nextCursor": "eyJ2ZXJzaW9uTm9ybSI6IjEuMjcuMyIsImlkIjoiY2xxeHh4In0", "limit": 2 }
}/api/v1/products/{slug}/versionsBekannte Versionen
Dedupliziertes Dropdown-Vokabular aller bekannten Versionsstrings eines Produkts ("Deine Version"), priorisiert STABLE/LTS.
Beispiel
curl "https://patchletter.com/api/v1/products/nginx/versions"Beispiel-Response
{
"versions": ["1.27.4", "1.27.3", "1.26.3", "1.26.2", "1.24.0"]
}/api/v1/products/{slug}/cvesCVE-Treffer eines Produkts
CVE-/KEV-Feed eines einzelnen Produkts, neueste Erkennung zuerst. Filter: severity (CRITICAL, HIGH, MEDIUM, LOW — case-insensitiv), cursor, limit.
Beispiel
curl "https://patchletter.com/api/v1/products/nginx/cves?severity=high"Beispiel-Response
{
"data": [
{
"cveId": "CVE-2026-31337",
"title": "Example: heap buffer overflow when parsing a malformed HTTP/2 header block",
"severity": "HIGH",
"cvss": 8.6,
"knownExploited": true,
"ransomware": false,
"dueDate": "2026-08-01T00:00:00.000Z",
"publishedAt": "2026-07-10T00:00:00.000Z",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-31337"
}
],
"pagination": { "nextCursor": null, "limit": 50 }
}/api/v1/products/{slug}/eolEOL-Zyklen eines Produkts
Roh-Zyklen aus dem endoflife.date-Cache. cycles ist ein leeres Array (kein Fehler), wenn das Produkt dort nicht gelistet ist.
Beispiel
curl "https://patchletter.com/api/v1/products/postgresql/eol"Beispiel-Response
{
"slug": "postgresql",
"name": "PostgreSQL",
"cycles": [
{
"cycle": "17",
"releaseDate": "2024-09-26",
"eol": "2029-11-08",
"latest": "17.2",
"lts": false,
"support": "2027-11-11"
},
{
"cycle": "16",
"releaseDate": "2023-09-14",
"eol": "2028-11-09",
"latest": "16.6",
"lts": false,
"support": "2026-11-12"
}
]
}/api/v1/releases/recentJüngste Releases (produktübergreifend)
Neueste Release-Erkennungen über alle aktiven Produkte, optional nur sicherheitsrelevante (securityOnly=1). Filter: cursor, limit.
Beispiel
curl "https://patchletter.com/api/v1/releases/recent?securityOnly=1&limit=2"Beispiel-Response
{
"data": [
{
"product": { "slug": "nginx", "name": "nginx" },
"version": "1.27.4",
"prevVersion": "1.27.3",
"channel": "STABLE",
"isSecurity": true,
"date": "2026-02-05T00:00:00.000Z"
},
{
"product": { "slug": "fortios", "name": "FortiOS" },
"version": "7.6.3",
"prevVersion": "7.6.2",
"channel": "FIRMWARE",
"isSecurity": true,
"date": "2026-02-03T00:00:00.000Z"
}
],
"pagination": { "nextCursor": "eyJkZXRlY3RlZEF0IjoiMjAyNi0wMi0wM1QwMDowMDowMFoiLCJpZCI6ImNseXh4eHgifQ", "limit": 2 }
}/api/v1/cvesGlobaler CVE-/KEV-Feed
CVE-/KEV-Treffer über alle aktiven Produkte, inkl. Produktreferenz je Zeile. Filter: severity, cursor, limit.
Beispiel
curl "https://patchletter.com/api/v1/cves?severity=critical&limit=1"Beispiel-Response
{
"data": [
{
"cveId": "CVE-2026-31337",
"title": "Example: heap buffer overflow when parsing a malformed HTTP/2 header block",
"severity": "CRITICAL",
"cvss": 9.1,
"knownExploited": true,
"ransomware": true,
"dueDate": "2026-08-01T00:00:00.000Z",
"publishedAt": "2026-07-10T00:00:00.000Z",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-31337",
"product": { "slug": "nginx", "name": "nginx" }
}
],
"pagination": { "nextCursor": null, "limit": 1 }
}/api/v1/categoriesKategorien
Vollständige, stabile Kategorienliste inkl. Anzahl aktiver Produkte. Unpaginiert — pagination.nextCursor ist immer null.
Beispiel
curl "https://patchletter.com/api/v1/categories"Beispiel-Response
{
"data": [
{ "slug": "browser-clients", "label": "Browser & Clients", "labelEn": "Browsers & Clients", "count": 14 },
{ "slug": "betriebssysteme", "label": "Betriebssysteme", "labelEn": "Operating Systems", "count": 22 }
],
"pagination": { "nextCursor": null, "limit": 2 }
}Maschinenlesbare Spezifikation
Die vollständige OpenAPI-3.1-Spezifikation beschreibt jeden Endpunkt, jeden Parameter und jedes Feld maschinenlesbar — ideal zum Generieren von API-Clients oder zum Import in Postman/Insomnia.
GET /api/v1/openapi.json ansehen →Faire Nutzung
patchletter ist kostenlos und wird aus offenen Quellen gespeist — Hersteller-Release-Notes, dem CISA-KEV-Katalog und endoflife.date. Sei fair: cache Antworten (Cache-Control ist gesetzt), poll nicht öfter als nötig, und wenn du Daten weiterverwendest, nenn patchletter als Quelle. Für höheres Volumen: hello@patchletter.com.
Leg direkt los
Kein Account nötig für lesenden Zugriff. Für mehr Rate-Limit: leg dir einen kostenlosen API-Key an.