Limites de taxa e cotas
Quantas requisições você pode fazer e o que acontece quando atinge um limite.
Os limites dependem do seu plano e são contados por chave de API.
Requisições por minuto#
Uma janela móvel de um minuto por chave. Toda resposta bem-sucedida traz X-RateLimit-Remaining com as requisições restantes na janela atual. Acima do limite, você recebe 429 rateLimited com error.retryAfter em segundos.
X-RateLimit-Remaining: 59{
"error": {
"code": "rateLimited",
"message": "Rate limit exceeded",
"retryAfter": 12
}
}Cota mensal#
Cada chave tem uma cota mensal de requisições, que é zerada no dia 1º de cada mês às 00:00 UTC. Quando ela se esgota, as requisições retornam 429 rateLimited com error.reason igual a quota até o mês seguinte.
{
"error": {
"code": "rateLimited",
"message": "Monthly quota exceeded",
"reason": "quota"
}
}Scans diários#
Uma chamada a POST /scans que de fato inicia um scan consome um scan do limite diário do seu plano, compartilhado com os scans que você inicia no app. A leitura de relatórios e as chamadas de scan que retornam um relatório recente do cache não consomem o limite de scans (mas continuam contando como requisições à API).
Limites por plano#
| Plano | Requisições / minuto | Requisições / mês |
|---|---|---|
Pro | 60 | 100.000 |
Boas práticas#
- Faça cache dos relatórios de token do seu lado; um relatório continua atualizado por vários minutos.
- Ao receber 429, aguarde
retryAftersegundos e depois tente de novo com backoff exponencial e jitter. - Consulte os scans a cada 3–5 segundos, e não em um loop sem pausa.
- Distribua as tarefas em lote ao longo do tempo, em vez de dispará-las em paralelo.