API para agentes y LLMs
No es una API aparte: es exactamente la superficie que llama el navegador cuando corres el test de velocidad en este sitio, documentada para que un script, un agente o una herramienta de LLM también pueda llamarla. Sin clave, sin registro, sin CORS.
Aquí no hay una “API pública” aparte: son los mismos cuatro endpoints que llama el navegador de este sitio para correr un test de velocidad, sin clave de API, sin cuenta, y — mira abajo — sin encabezado CORS.
Endpoints
/api/speed/pingSin límiteUna prueba mínima de ida y vuelta.
El campo t de la respuesta es solo de diagnóstico. Los Workers congelan Date.now() entre operaciones de E/S, así que no es un reloj confiable para medir latencia — mide la petición tú mismo.
/api/speed/metaSin límiteRefleja lo que Cloudflare ve de quien llama: IP, ISP, ASN, ciudad, país, y el borde (colo) que respondió.
Nada de esto se guarda. Se devuelve a quien llama y a nadie más.
/api/speed/down600 tokens / hora / IPTransmite bytes (parámetro de consulta, 1 MB por defecto, tope de 100 MB) de datos aleatorios, para medir la velocidad de descarga.
La respuesta es no-store, no-transform — nada la comprime ni la guarda en caché, cualquiera de las dos cosas inflaría la velocidad medida.
/api/speed/up600 tokens / hora / IPAcepta un cuerpo de petición de hasta 100 MB e informa cuántos bytes llegaron y cuánto tardó, para medir la velocidad de subida.
Un Content-Length declarado por encima de 100 MB se rechaza con 413 antes de leer el cuerpo.
El límite de uso, en números
/api/speed/down y /api/speed/up comparten un cupo de 600 tokens por IP, que se recarga a razón de un token cada 6 segundos. Eso es más o menos 10 tests de velocidad completos por hora — un test completo usa bastante menos de 60 peticiones. /api/speed/ping y /api/speed/meta no tienen límite: sus respuestas son triviales, y limitarlas agregaría una lectura de KV justo al camino que existen para medir.
La petición más grande que cualquiera de los dos endpoints sirve o acepta es 100 MB.
Sin CORS — a propósito
Estos endpoints no envían encabezado Access-Control-Allow-Origin, y ninguno pasa por la verificación de mismo origen que este sitio usa en sus rutas de cuenta y facturación. Esa combinación es deliberada: quien llama desde un servidor — curl, un agente, una herramienta de LLM — ya funciona hoy, mientras que un navegador ejecutando JavaScript de otro origen contra estos endpoints ya está bloqueado por el propio navegador. Agregar CORS con * dejaría que cualquier sitio web gastara el ancho de banda de este sitio desde los navegadores de sus propios visitantes; documentar la forma actual no cuesta nada y no cambia nada.
Un ejemplo — curl
Descarga 5 MB y mide el tiempo — la forma estándar de una prueba manual de velocidad.
curl -o /dev/null -w "%{time_total}s for %{size_download} bytes\n" \
"https://mysygnal.net/api/speed/down?bytes=5000000"Un ejemplo — un agente o una herramienta de LLM
La misma medición, cronometrada por quien llama en vez de confiar en la respuesta — mira la nota sobre /api/speed/ping arriba.
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;Todo lo demás que este sitio le ofrece a quien llama por código
llms.txt indexa las herramientas, las guías y cada página de router de este sitio en un solo archivo de texto plano, pensado para que lo lea un modelo y no un navegador.