DE

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

GET/api/speed/pingUnbegrenzt

Eine 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.

GET/api/speed/metaUnbegrenzt

Spiegelt, 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.

GET/api/speed/down600 Tokens / Stunde / IP

Streamt 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.

POST/api/speed/up600 Tokens / Stunde / IP

Nimmt 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.

Diese Seite wurde maschinell übersetzt und kann Fehler enthalten. Englisches Original lesen