Versão 1.1 — Janeiro 2026

API Pública

Integre verificação de disponibilidade nas suas aplicações. Nossa API retorna JSON limpo, com suporte a API Keys para limites maiores.

Sem API Key
30 req/hora
Por IP — Janela deslizante
Gratuito Identificado por IP
Com API Key
300+ req/hora
Configurável por chave
Gratuito Solicitar chave
Para solicitar uma API Key, envie um e-mail para contato@foradoarounao.com.br descrevendo seu projeto e volume esperado.

Endpoint

GET https://foradoarounao.com.br/api.php?dominio={dominio}

Autenticação (opcional)

Envie sua API Key via header HTTP (recomendado) ou parâmetro de URL:

# Via header (recomendado — não aparece em logs de URL) curl -H "X-API-Key: fdao_sua_chave_aqui" \ "https://foradoarounao.com.br/api.php?dominio=google.com" # Via parâmetro de URL curl "https://foradoarounao.com.br/api.php?dominio=google.com&api_key=fdao_sua_chave"

Headers de Rate Limit

Toda resposta da API inclui headers informando o estado atual do seu limite:

Response Headers
X-RateLimit-Tier anonymous Tier do cliente: anonymous ou key
X-RateLimit-Limit 30 Limite total de requisições na janela
X-RateLimit-Remaining 27 Requisições restantes nesta janela
X-RateLimit-Reset 1737493600 Timestamp Unix do próximo reset
X-RateLimit-Window 3600 Tamanho da janela em segundos (1h)
Retry-After 1842 Segundos para aguardar (apenas no 429)

Resposta ao atingir o limite — HTTP 429

{ "success": false, "error": "Limite de requisições excedido.", "details": { "tier": "anonymous", "limit": 30, "window": "1 hora (janela deslizante)", "retry_after": "1842 segundos (~31 min)", "reset_at": "17/01/2026 15:26:40", "upgrade": "Precisa de mais? Solicite uma API Key em foradoarounao.com.br/api" } }

Resposta normal — HTTP 200

{ "success": true, "domain": "google.com", "status": "online", "is_online": true, "verdict": "Site online e acessível globalmente", "http_code": 200, "dns_ok": true, "dns_ip": "142.250.78.46", "response_ms": 142, "perf_label": "Excelente", "server_header": "gws", "checked_at": "17/01/2026 às 14:32:08", "_ratelimit": { "tier": "anonymous", "remaining": 26, "reset_at": "17/01/2026 15:32:08" } }

Janela deslizante vs. janela fixa

Usamos Sliding Window Log, não janela fixa por hora. A diferença prática: se você enviou 30 requisições às 14:00, não precisa esperar até 15:00 exato. Cada requisição expira individualmente 60 minutos após ser feita. Às 14:30 já estará disponível a cota das 13:30, e assim sucessivamente.

Isso é mais justo e elimina o padrão de "burst no início da hora" comum em janelas fixas.

Cota consumida apenas em requisições válidas

Chamadas que retornam erro 400 (domínio inválido, parâmetro ausente) não consomem cota. O contador só é incrementado após a validação bem-sucedida dos parâmetros e imediatamente antes da verificação real do domínio.

Exemplos de integração

JavaScript (fetch)

async function checkSite(domain, apiKey = null) { const headers = apiKey ? { 'X-API-Key': apiKey } : {}; const res = await fetch( `https://foradoarounao.com.br/api.php?dominio=${domain}`, { headers } ); // Lê os headers de rate limit const remaining = res.headers.get('X-RateLimit-Remaining'); const resetAt = res.headers.get('X-RateLimit-Reset'); if (res.status === 429) { const err = await res.json(); throw new Error(`Rate limit: aguarde ${err.details.retry_after}`); } return res.json(); }

PHP

function check_with_api(string $domain, string $api_key = ''): array { $ch = curl_init("https://foradoarounao.com.br/api.php?dominio={$domain}"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15, CURLOPT_HTTPHEADER => $api_key ? ["X-API-Key: {$api_key}"] : [], CURLOPT_HEADERFUNCTION => function($ch, $header) use (&$headers) { // captura headers de rate limit if (str_starts_with($header, 'X-RateLimit')) { [$k, $v] = explode(':', $header, 2); $headers[trim($k)] = trim($v); } return strlen($header); }, ]); $body = curl_exec($ch); curl_close($ch); return json_decode($body, true); }

Códigos de resposta HTTP

200 200 OK — verificação realizada com sucesso
400 400 Bad Request — domínio inválido ou parâmetro ausente
401 401 Unauthorized — API Key fornecida é inválida
403 403 Forbidden — API Key desativada
429 429 Too Many Requests — limite de requisições excedido
500 500 Internal Server Error — erro inesperado no servidor