Limites e uso
O RuleForge protege a plataforma e o plano do cliente com rate limiting por rota sensível. Esta página documenta os limites, os headers que você recebe e o que fazer quando é bloqueado.
Como o limite funciona
O rate limiter é aplicado por rota sensível e por sujeito autenticado (API key, usuário ou IP para não autenticados). As janelas são dupla: por minuto e por hora.
Rotas monitoradas:
| Rota | Chave interna |
|---|---|
POST /auth/login | auth.login |
POST /auth/register-organization | auth.register |
POST /analysis/validate e POST /rulesets/compile | analysis.validate |
POST /analysis/logtest-native | analysis.logtest |
POST /…/webhooks/{id}/test | webhook.test |
Rotas fora dessa lista não têm limite por rota, mas estão sujeitas ao limite global da organização definido pelo plano de cobrança.
Limites padrão
Os valores padrão configurados no servidor:
| Janela | Limite padrão | Variável de ambiente |
|---|---|---|
| Por minuto | 120 requisições | NATIVE_WAZUH_API_RATE_LIMIT_PER_MINUTE |
| Por hora | 5 000 requisições | NATIVE_WAZUH_API_RATE_LIMIT_PER_HOUR |
Planos comerciais podem ter limites maiores ou menores — consulte GET /billing/plans/public ou a página Cobrança e planos.
Headers informativos
Toda resposta de uma rota sob rate limit traz, no sucesso:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 2026-04-24T15:31:00Z
X-RateLimit-Limit: quota configurada para a janela de 1 minuto.X-RateLimit-Remaining: quantas chamadas ainda são permitidas antes do reset.X-RateLimit-Reset: ISO 8601 UTC — quando o contador reinicia.
Quando é bloqueado
Resposta 429 rate_limited:
{
"code": "rate_limited",
"message": "Rate limit excedido.",
"hint": "Aguarde o reset informado e tente novamente.",
"details": {
"route": "analysis.validate",
"reset_at": "2026-04-24T15:31:00Z"
},
"debug_id": "..."
}
Headers adicionais:
Retry-After: 30
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
Retry-After é em segundos e é o único campo que você precisa observar para reagir.