Rate Limiting (Limitação de Taxa)

O Rate Limiting (limitação de taxa) restringe o número de pedidos à API que um cliente pode fazer dentro de um determinado período. Protege a infraestrutura da API contra sobrecarga, garante uma utilização justa entre todos os clientes e previne abusos ou ciclos descontrolados acidentais.

O que é o Rate Limiting?

O Rate Limiting é um mecanismo de controlo de tráfego que limita quantos pedidos à REST API um único cliente (identificado pela chave de API ou endereço IP) pode fazer dentro de um período definido. Por exemplo, um limite de 100 pedidos por minuto significa que o 101.º pedido dentro desse minuto é rejeitado com o estado HTTP 429 (Too Many Requests). O cliente tem de aguardar que a janela se reponha antes de enviar novos pedidos.

O Rate Limiting funciona a vários níveis: por endpoint (por exemplo, o envio de mensagens pode ter limites mais apertados do que a leitura de contactos), por conta (total de pedidos em todas as chaves) e, por vezes, por canal (o WhatsApp impõe os seus próprios limites, separados da camada da API). Compreender estas camadas ajuda a conceber aplicações que operam dentro destes limites de forma fiável.

Por que é importante o Rate Limiting?

Sem Rate Limiting, um único script com falhas poderia inundar a API com milhões de pedidos, degradando o desempenho para todos. Os limites de taxa servem três objetivos: Proteção da infraestrutura – impedem a sobrecarga dos servidores e mantêm tempos de resposta consistentes para todos os utilizadores. Utilização justa – garantem que nenhum cliente individual monopoliza os recursos partilhados. Prevenção de abusos – travam bots de spam e chaves de API comprometidas, evitando danos em grande escala.

Para os programadores, o Rate Limiting funciona também como uma rede de segurança. Um erro num ciclo de repetição poderia enviar milhares de mensagens duplicadas – os limites de taxa detetam-no antes de se tornar um problema dispendioso. Obrigam a escrever código robusto, com tratamento de erros adequado, estratégias de backoff e gestão de filas.

Exemplo prático

Imagine que está a criar uma funcionalidade de campanha que envia mensagens de WhatsApp a 10.000 contactos. Sem consciência dos limites, o seu código poderia tentar disparar os 10.000 pedidos em simultâneo. A API rejeitaria a maioria com erros 429, a sua campanha falharia parcialmente e desperdiçaria volume incluído em repetições.

A abordagem correta: verifique os cabeçalhos da resposta para obter informação sobre os limites de taxa. A SendSeven devolve cabeçalhos como X-RateLimit-Limit (máximo de pedidos), X-RateLimit-Remaining (pedidos restantes) e X-RateLimit-Reset (quando a janela se repõe). Use-os para regular o ritmo dos seus pedidos. Implemente backoff exponencial: se receber um 429, aguarde 1 segundo, depois 2, depois 4 – não martele a API de imediato.

Arquitetura baseada em filas: para envios de grande volume, use uma fila de mensagens (Redis, RabbitMQ ou uma simples fila em memória). Coloque os 10.000 destinatários na fila e consuma a um ritmo que se mantenha abaixo do limite. Esta abordagem é resiliente, mensurável e evita chamadas de API desperdiçadas. A funcionalidade de campanhas da SendSeven (Reach) trata disto automaticamente.

Rate Limiting com a SendSeven

A SendSeven aplica limites de taxa ao nível da chave de API. Os limites atuais dependem do seu plano – planos superiores obtêm maior débito. Todas as respostas incluem cabeçalhos de limite de taxa, por isso a sua aplicação sabe sempre o seu estado atual. Quando atinge um limite, a API devolve uma resposta 429 clara, com um cabeçalho Retry-After que indica quantos segundos deve aguardar.

Para o envio em massa, recomendamos a utilização da funcionalidade integrada Reach (Campanhas) da SendSeven, em vez de chamadas individuais à API. As campanhas são processadas do lado do servidor, com débito otimizado, regulação automática por canal (respeitando os próprios limites de taxa do WhatsApp) e relatórios de entrega – sem necessidade de gerir limites de taxa do seu lado.

A documentação completa sobre limites de taxa, incluindo limites por endpoint e exemplos de código para implementar estratégias de backoff, está disponível em docs.sendseven.com.