Skip to main content
O rate limit (limite de requisições) controla quantas chamadas você pode fazer à API da Zapster em um intervalo de tempo. Quando você passa desse limite, a API responde com o status 429 Too Many Requests em vez de processar a requisição.

Por que o rate limit existe

O limite protege duas coisas ao mesmo tempo:
  • A plataforma, mantendo a API estável e justa para todos os clientes, sem que um único integrador consiga sobrecarregar o serviço.
  • O seu número de WhatsApp, evitando rajadas de envio que o WhatsApp interpreta como comportamento de spam. Enviar devagar e de forma constante é mais seguro para a saúde do seu número do que disparar tudo de uma vez.

Limite padrão

O limite padrão é de 3 requisições por segundo, contadas por token de acesso (ou seja, por conta). Como toda chamada à API é autenticada, a cota é sempre atrelada ao seu token.
O limite é aplicado a todas as rotas da API, não só ao envio de mensagens. As chamadas de listagem, consulta de destinatário e gestão de instância também consomem a mesma cota.

Flexibilidade por plano

O limite padrão atende à maioria das integrações. Se o seu volume exige mais, a cota da sua conta pode ser ampliada de acordo com o seu plano ou mediante contratação. Fale com o suporte para avaliarmos o limite ideal e a melhor condição para o seu caso.
Antes de pedir um limite maior, trate o rate limit no seu lado. O jeito mais robusto de integrar é nunca depender do 429: controle o ritmo de envio no seu código (fila e throttling) para se manter dentro do limite. Um limite maior ajuda em picos, mas não substitui o controle de ritmo no cliente.

Headers de rate limit

Toda resposta da API traz headers de rate limit que informam o estado atual da sua cota. Eles seguem o padrão de cabeçalhos RateLimit para HTTP proposto pela IETF.

Exemplo de resposta 200

Uma requisição bem-sucedida, ainda dentro da cota:

Exemplo de resposta 429

Quando você passa do limite, a API responde:
O campo code é sempre rate_limited, e o texto de messages reflete o limite atual da sua conta e o tamanho da janela.

Como tratar o rate limit

A estratégia recomendada tem duas camadas. 1. Controle o ritmo antes de enviar (preferencial). Para integrações de alto volume (disparos em lote, filas de mensagens), limite o seu próprio ritmo de saída para nunca ultrapassar o limite. Use uma fila com throttling (por exemplo, bottleneck ou p-queue no Node.js, ou rate.Limiter em Go) configurada para o mesmo teto da sua conta. Assim você não depende de receber um 429. 2. Trate o 429 quando ele acontecer (rede de segurança). Mesmo com throttling, mantenha um retry:
  • Ao receber 429, espere o número de segundos indicado em Retry-After (ou, na falta dele, em RateLimit-Reset) e tente de novo.
  • Se não houver header, use um backoff exponencial com jitter (espere 1s, depois 2s, 4s, e assim por diante, com um teto).
  • Antes de enviar, você também pode olhar RateLimit-Remaining: se estiver perto de zero, aguarde RateLimit-Reset segundos antes da próxima chamada.

Exemplos de código

Os exemplos abaixo enviam uma mensagem e tratam o 429 respeitando os headers. Troque YOUR_API_TOKEN pelo seu token e YOUR_INSTANCE_ID pelo ID da instância.

Em resumo

  • O padrão é 3 requisições por segundo por token de acesso, válido para toda a API.
  • Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz também Retry-After. RateLimit-Reset e Retry-After são contados em segundos.
  • O 429 devolve { "errors": [{ "code": "rate_limited", ... }] }.
  • Controle o ritmo no seu código (fila e throttling) para não depender do 429, e mantenha um retry com backoff como rede de segurança.
  • Precisa de mais volume? Fale com o suporte para avaliar um limite maior.