h3check.de HTTP/3 · QUIC · Check
powered by

API-Dokumentation

Kostenlose JSON-API für HTTP/3-Prüfungen – ohne Anmeldung, ohne Key, mit CORS.

Überblick

Die API ist kostenlos, braucht keine Anmeldung und keinen Key. Sie antwortet JSON und sendet Access-Control-Allow-Origin: * – du kannst sie also direkt aus dem Browser aufrufen.

Rate Limit: 15 Anfragen / 60s je IP-Adresse.

GET /api/v1/check

Führt eine echte Prüfung durch: liest den Alt-Svc-Header und baut anschließend eine echte QUIC-Verbindung auf. Dauert ein paar Sekunden, weil dabei mit dem Zielserver gesprochen wird.

curl "https://h3check.de/api/v1/check?domain=example.org"
ParameterWerteBedeutung
domainPflichtZu prüfende Domain. https://, Pfade und Ports werden automatisch entfernt.
hostauto · root · wwwWie angegeben prüfen, ohne www. erzwingen oder mit. Standard auto.
share0 · 1Standard 0. Mit 1 erscheint die Domain in der öffentlichen Liste und bekommt eine Seite unter /check/.

Hinweis zum Datenschutz: API-Aufrufe veröffentlichen standardmäßig nichts. Wenn du Kundendomains prüfst, lass share einfach weg.

Antwort

{
  "domain": "example.org",
  "ok": true,
  "advertised": {
    "alt_svc": "h3=\":443\"; ma=86400",
    "advertises_h3": true
  },
  "connection": {
    "tls_version": "TLS 1.3",
    "tls_cipher": "TLS_AES_256_GCM_SHA384",
    "negotiated_version": "2",
    "has_ipv6": true
  },
  "verified": {
    "http3_only": true,
    "curl_http_version": "3",
    "http_code": 200,
    "effective_url": "https://example.org/",
    "hint": null,
    "response_headers": "HTTP/3 200 ...",
    "has_headers": true
  },
  "self_check": { "detected": false, "hint": null }
}

Die zwei entscheidenden Felder: advertised.advertises_h3 sagt, dass der Server HTTP/3 verspricht, verified.http3_only sagt, dass er es auch geliefert hat. Versprechen ohne Lieferung ist fast immer eine Firewall, die UDP/443 blockt – siehe HTTP/3 aktivieren.

verified.response_headers enthält die Rohheader und kann ein paar Kilobyte groß sein. Wenn du sie nicht brauchst, ignorier das Feld.

GET /api/v1/cached

Liefert das gespeicherte Ergebnis der letzten öffentlichen Prüfung – ohne Live-Verbindung, antwortet sofort und belastet dein Rate Limit kaum. Ideal für Dashboards und Badges.

curl "https://h3check.de/api/v1/cached?domain=example.org"
{
  "ok": true,
  "cached": true,
  "domain": "example.org",
  "checked_at": 1785421715,
  "checked_at_iso": "2026-07-30T14:28:35+00:00",
  "http3": { "working": true, "advertised": true, "alt_svc": "h3=\":443\"; ma=86400" },
  "connection": { "tls_version": "TLS 1.3", "has_ipv6": true, "http_code": 200 },
  "stack": { "server": "cloudflare", "cdn": "Cloudflare" }
}

advertised und has_ipv6 können null sein – das heißt „nicht gemessen“, nicht „nein“.

Fehler

Statuserror_codeWann
400invalid_domainKeine gültige Domain oder eine Beispiel-Domain.
404not_cachedNur /cached: noch kein gespeichertes Ergebnis.
429rate_limitedRate Limit erreicht. Retry-After nennt die Wartezeit.

Auch Fehler kommen als JSON und tragen immer "ok": false.

Beispiele

// JavaScript – dank CORS direkt aus dem Browser
const r = await fetch('https://h3check.de/api/v1/check?domain=example.org');
const data = await r.json();
console.log(data.verified.http3_only ? 'HTTP/3 läuft' : 'kein HTTP/3');
<?php // PHP
$d = json_decode(file_get_contents(
    'https://h3check.de/api/v1/cached?domain=example.org'
), true);
echo $d['http3']['working'] ? 'ja' : 'nein';

Badge

Jede öffentlich geprüfte Domain hat ein SVG-Badge, das sich selbst aktualisiert:

<img src="https://h3check.de/badge/example.org.svg" height="30">

Stabilität

Der Pfad /api/v1/ ist versioniert: Felder können dazukommen, bestehende ändern ihre Bedeutung nicht und verschwinden nicht. Die ältere Form /?domain=…&format=json funktioniert weiter und liefert dasselbe Objekt wie /api/v1/check.

← Zum HTTP/3 Check