xcaDocs
Primeiros passos

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.

200
X-RateLimit-Remaining: 59
429
{
  "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.

429
{
  "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#

PlanoRequisições / minutoRequisições / mês
Pro60100.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 retryAfter segundos 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.