API para agentes e LLMs
Não é uma API separada: é exatamente a superfície que o navegador chama quando você roda o teste de velocidade neste site, documentada para que um script, um agente ou uma ferramenta de LLM também possa chamá-la. Sem chave, sem cadastro, sem CORS.
Não existe uma “API pública” separada aqui: são os mesmos quatro endpoints que o navegador deste site chama para rodar um teste de velocidade, sem chave de API, sem conta, e — veja abaixo — sem cabeçalho CORS.
Endpoints
/api/speed/pingSem limiteUma sondagem mínima de ida e volta.
O campo t da resposta é só para diagnóstico. Os Workers congelam Date.now() entre operações de E/S, então não é um relógio confiável para medir latência — meça a requisição você mesmo.
/api/speed/metaSem limiteReflete o que a Cloudflare vê de quem chama: IP, ISP, ASN, cidade, país, e a borda (colo) que respondeu.
Nada disso é armazenado. É devolvido só para quem chama.
/api/speed/down600 tokens / hora / IPTransmite bytes (parâmetro de consulta, 1 MB por padrão, limite de 100 MB) de dados aleatórios, para medir a velocidade de download.
A resposta é no-store, no-transform — nada a comprime nem a coloca em cache, e qualquer uma das duas coisas inflaria a velocidade medida.
/api/speed/up600 tokens / hora / IPAceita um corpo de requisição de até 100 MB e informa quantos bytes chegaram e quanto tempo levou, para medir a velocidade de upload.
Um Content-Length declarado acima de 100 MB é rejeitado com 413 antes de ler o corpo.
O limite de uso, em números
/api/speed/down e /api/speed/up compartilham um bucket de 600 tokens por IP, recarregando um token a cada 6 segundos. Isso é mais ou menos 10 testes de velocidade completos por hora — um teste completo usa bem menos de 60 requisições. /api/speed/ping e /api/speed/meta não têm limite: suas respostas são triviais, e limitá-las adicionaria uma leitura no KV bem no caminho que elas existem para medir.
A maior requisição que qualquer um dos dois endpoints serve ou aceita é 100 MB.
Sem CORS — de propósito
Esses endpoints não enviam cabeçalho Access-Control-Allow-Origin, e nenhum deles passa pela verificação de mesma origem que este site usa nas rotas de conta e cobrança. Essa combinação é deliberada: quem chama do lado do servidor — curl, um agente, uma ferramenta de LLM — já funciona hoje, enquanto um navegador rodando JavaScript de origem cruzada contra esses endpoints já é bloqueado pelo próprio navegador. Adicionar CORS com * deixaria qualquer site gastar a largura de banda deste site a partir dos navegadores dos próprios visitantes; documentar a forma atual não custa nada e não muda nada.
Um exemplo — curl
Baixe 5 MB e cronometre — a forma padrão de um teste manual de velocidade.
curl -o /dev/null -w "%{time_total}s for %{size_download} bytes\n" \
"https://mysygnal.net/api/speed/down?bytes=5000000"Um exemplo — um agente ou ferramenta de LLM
A mesma medição, cronometrada por quem chama em vez de confiar na resposta — veja a nota sobre /api/speed/ping acima.
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;Tudo mais que este site oferece a quem chama por código
llms.txt indexa as ferramentas, os guias e cada página de roteador deste site em um único arquivo de texto simples, feito para ser lido por um modelo e não por um navegador.