Visão geral
A caBRAPI aplica limites de requisição (rate limit) para garantir estabilidade, segurança e desempenho da plataforma para todos os clientes.- Os limites são aplicados por plano contratado e medidos em janela fixa de 1 minuto.
- Cada rota possui um contador independente — o consumo de um endpoint não afeta o limite dos demais.
- O consumo é contado por credencial de API (sua
apiKey) — cada integração mede o próprio uso.
Limites por plano
Básico
Até 60 requisições por minuto.
Profissional
Até 120 requisições por minuto.
Hyper
Até 1.600 requisições por minuto.
Caso o limite seja ultrapassado, novas requisições são temporariamente bloqueadas, retornando erro
429 até que a janela seja reiniciada.Headers de controle
Toda resposta inclui headers que permitem acompanhar o consumo em tempo real:
Quando o limite é atingido, a resposta de erro também inclui:
Quando o limite é excedido
Ao ultrapassar o limite, a API responde429 Too Many Requests e recusa novas requisições até a janela reiniciar:
A resposta usa o mesmo envelope
status/code dos demais erros da API. Veja Erros.Boas práticas
- Monitore o header
X-RateLimit-Remainingpara se autorregular antes de atingir o limite. - Ao receber um
429, respeite oRetry-Aftere só tente novamente após o tempo indicado. - Implemente retentativa com backoff exponencial para lidar com picos de tráfego.
- Evite polling agressivo: consulte dados em intervalos maiores ou use webhooks para receber eventos em tempo real.
Paginação
Nos endpoints de listagem, use os parâmetrospage e limit para controlar o volume de dados por resposta.
page: inteiro maior ou igual a1limit: inteiro entre1e100
400 INVALID_PAGINATION_LIMIT400 INVALID_PAGINATION_PAGE
Paginação por cursor
Em listas grandes (mais de ~100 itens), prefira a paginação por cursor, que mantém a performance em qualquer volume de dados:- Faça a primeira chamada sem
cursore use o camponextCursorda resposta. - Envie o
nextCursorcomocursorna próxima requisição para avançar na lista. - O fim da lista é indicado por
nextCursor: null+hasMore: false(a API responde200com array vazio). - No modo offset, as respostas também incluem
nextCursor/hasMore, permitindo migrar para cursor sem recomeçar do zero.