API für Agenten und LLMs
Das ist keine separate API: Es ist genau die Oberfläche, die der Browser aufruft, wenn Sie den Geschwindigkeitstest auf dieser Website ausführen — dokumentiert, damit ein Skript, ein Agent oder ein LLM-Werkzeug sie ebenfalls aufrufen kann. Kein Schlüssel, keine Anmeldung, kein CORS.
Es gibt hier keine separate „öffentliche API“: Das sind dieselben vier Endpunkte, die der Browser dieser Website aufruft, um einen Geschwindigkeitstest auszuführen — ohne API-Schlüssel, ohne Konto, und — siehe unten — ohne CORS-Header.
Endpunkte
/api/speed/pingUnbegrenztEine minimale Round-Trip-Sonde.
Das Feld t in der Antwort dient nur der Diagnose. Workers frieren Date.now() zwischen E/A-Operationen ein, daher ist es keine verlässliche Uhr zur Latenzmessung — messen Sie die Anfrage selbst.
/api/speed/metaUnbegrenztSpiegelt, was Cloudflare über den Aufrufer sieht: IP, ISP, ASN, Stadt, Land und den antwortenden Edge-Standort (Colo).
Nichts davon wird gespeichert. Es wird nur an den Aufrufer zurückgegeben, sonst an niemanden.
/api/speed/down600 Tokens / Stunde / IPStreamt bytes (Query-Parameter, Standard 1 MB, Obergrenze 100 MB) an Zufallsdaten, zur Messung der Download-Geschwindigkeit.
Die Antwort ist no-store, no-transform — nichts komprimiert oder cacht sie, beides würde die gemessene Geschwindigkeit künstlich erhöhen.
/api/speed/up600 Tokens / Stunde / IPNimmt einen Anfragetext von bis zu 100 MB entgegen und meldet, wie viele Bytes angekommen sind und wie lange das gedauert hat, zur Messung der Upload-Geschwindigkeit.
Ein deklarierter Content-Length über 100 MB wird mit 413 abgelehnt, bevor der Text gelesen wird.
Die Nutzungsgrenze, als Rechnung
/api/speed/down und /api/speed/up teilen sich ein Kontingent von 600 Tokens pro IP, das sich alle 6 Sekunden um ein Token auffüllt. Das sind etwa 10 vollständige Geschwindigkeitstests pro Stunde — ein vollständiger Test verbraucht deutlich weniger als 60 Anfragen. /api/speed/ping und /api/speed/meta sind unbegrenzt: Ihre Nutzlasten sind trivial, und eine Begrenzung würde genau auf dem Pfad, den sie messen sollen, einen KV-Lesezugriff hinzufügen.
Die größte Anfrage, die einer der beiden Endpunkte liefert oder annimmt, beträgt 100 MB.
Kein CORS — mit Absicht
Diese Endpunkte senden keinen Access-Control-Allow-Origin-Header, und keiner von ihnen unterliegt der Same-Origin-Prüfung, die diese Website bei ihren Konto- und Abrechnungsrouten verwendet. Diese Kombination ist beabsichtigt: Ein serverseitiger Aufrufer — curl, ein Agent, ein LLM-Werkzeug — funktioniert bereits heute, während ein Browser, der Cross-Origin-JavaScript gegen diese Endpunkte ausführt, bereits vom Browser selbst blockiert wird. Ein *-CORS würde es jeder Website erlauben, die Bandbreite dieser Website über die Browser ihrer eigenen Besucher zu verbrauchen; die aktuelle Form zu dokumentieren kostet nichts und ändert nichts.
Ein durchgerechnetes Beispiel — curl
Laden Sie 5 MB herunter und stoppen Sie die Zeit — die übliche Form einer manuellen Durchsatzprüfung.
curl -o /dev/null -w "%{time_total}s for %{size_download} bytes\n" \
"https://mysygnal.net/api/speed/down?bytes=5000000"Ein durchgerechnetes Beispiel — ein Agent oder LLM-Werkzeug
Dieselbe Messung, vom Aufrufer selbst gestoppt statt der Antwort zu vertrauen — siehe den Hinweis zu /api/speed/ping oben.
const t0 = performance.now();
const res = await fetch("https://mysygnal.net/api/speed/down?bytes=5000000");
await res.arrayBuffer();
const seconds = (performance.now() - t0) / 1000;
const mbps = (5_000_000 * 8) / seconds / 1_000_000;Alles andere, was diese Website einem Aufrufer bietet
llms.txt indiziert die Werkzeuge, die Anleitungen und jede Router-Seite dieser Website in einer einzigen Klartextdatei, gedacht zum Lesen durch ein Modell statt durch einen Browser.