Rate Limiting (límite de solicitudes)
El rate limiting es un mecanismo de protección que limita el número de solicitudes a la API por unidad de tiempo para garantizar un uso justo y la estabilidad del sistema. Si supera el límite, recibe una respuesta HTTP 429 con una cabecera Retry-After.
¿Qué es el rate limiting?
El rate limiting (limitación de la tasa de solicitudes) es un mecanismo de control de tráfico que limita cuántas solicitudes a la API puede realizar un mismo cliente (identificado por su clave API o dirección IP) dentro de una ventana de tiempo definida. Por ejemplo, un límite de 100 solicitudes por minuto significa que la solicitud número 101 dentro de ese minuto se rechaza con el código de estado HTTP 429 (Too Many Requests). El cliente debe esperar a que la ventana se reinicie antes de enviar nuevas solicitudes.
El rate limiting opera en varios niveles: por endpoint (por ejemplo, el envío de mensajes puede tener límites más estrictos que la lectura de contactos), por cuenta (total de solicitudes de todas las claves) y, a veces, por canal (WhatsApp impone sus propios límites independientes de la capa de la API). Entender estas capas le ayuda a diseñar aplicaciones que funcionen dentro de los límites de forma fiable.
¿Por qué existe el rate limiting?
Sin rate limiting, un único script defectuoso podría inundar la API con millones de solicitudes y degradar el rendimiento para todos. Los límites cumplen tres funciones: protección de la infraestructura: evitan la sobrecarga de los servidores y mantienen tiempos de respuesta constantes para todos los usuarios. Uso justo: garantizan que ningún cliente monopolice los recursos compartidos. Prevención de abusos: frenan a los bots de spam y a las claves API comprometidas para que no causen daños a gran escala.
Para los desarrolladores, el rate limiting también actúa como red de seguridad. Un error en un bucle de reintentos podría enviar miles de mensajes duplicados; los límites lo detienen antes de que se convierta en un problema costoso. Le obligan a escribir código robusto con un manejo de errores adecuado, estrategias de reintento y gestión de colas.
Ejemplo práctico
Imagine que está creando una función de campañas que envía mensajes de WhatsApp a 10.000 contactos. Sin tener en cuenta los límites, su código podría intentar lanzar las 10.000 solicitudes simultáneamente. La API rechazaría la mayoría con errores 429, su campaña fallaría parcialmente y desperdiciaría saldo en reintentos.
El enfoque correcto: revise las cabeceras de respuesta en busca de información sobre los límites. SendSeven devuelve cabeceras como X-RateLimit-Limit (máximo de solicitudes), X-RateLimit-Remaining (solicitudes restantes) y X-RateLimit-Reset (cuándo se reinicia la ventana). Úselas para regular el ritmo de sus solicitudes. Implemente un backoff exponencial: si recibe un 429, espere 1 segundo, luego 2, luego 4; no bombardee la API de inmediato.
Arquitectura basada en colas: para envíos de gran volumen, utilice una cola de mensajes (Redis, RabbitMQ o una simple cola en memoria). Inserte los 10.000 destinatarios en la cola y procéselos a un ritmo que se mantenga por debajo del límite. Este enfoque es resistente, medible y evita llamadas a la API desperdiciadas. La función de campañas de SendSeven (Reach) gestiona esto automáticamente.
Rate limiting con SendSeven
SendSeven aplica límites de solicitudes a nivel de clave API. Los límites actuales dependen de su plan: los planes superiores ofrecen mayor capacidad. Todas las respuestas incluyen cabeceras de límite para que su aplicación conozca siempre su estado actual. Cuando alcanza un límite, la API devuelve una respuesta 429 clara con una cabecera Retry-After que indica cuántos segundos debe esperar.
Para el envío masivo, recomendamos utilizar la función integrada Reach (Campañas) de SendSeven en lugar de llamadas individuales a la API. Las campañas se procesan del lado del servidor con una capacidad optimizada, regulación automática del ritmo por canal (respetando los propios límites de WhatsApp) e informes de entrega, sin necesidad de gestionar límites por su parte.
La documentación completa sobre los límites, incluidos los límites por endpoint y ejemplos de código para implementar estrategias de backoff, está disponible en docs.sendseven.com.