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 los límites de solicitudes por espacio de trabajo, no por clave API; los endpoints de inicio de sesión y autenticación cuentan por dirección IP. Cada límite se mide en una ventana móvil de 60 segundos, y su integración comparte ese margen con el panel. Los límites son los mismos en todos los planes. Cada respuesta incluye las cabeceras X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset, para que su aplicación sepa siempre en qué punto está. Si supera un límite, la API devuelve una respuesta 429 con una cabecera Retry-After que indica cuántos segundos debe esperar.
Para el envío masivo, le recomendamos la función integrada Reach (Campañas) de SendSeven en lugar de llamadas individuales a la API. Las campañas se procesan en el servidor: usted define la velocidad de envío y el tamaño de los lotes, y en WhatsApp puede repartir un envío grande en varios días para proteger un número nuevo. Para ello no necesita gestionar los límites por su cuenta.
Los valores actuales figuran en la documentación de la API en docs.sendseven.com. Buena práctica: vigile X-RateLimit-Remaining, reduzca el ritmo antes de que llegue a cero y gestione las solicitudes con una cola en el cliente para que un 429 nunca llegue a sus usuarios.