Límites de Velocidad
Comprenda los límites de velocidad de la API, los límites de envío de correo electrónico y cómo manejar las respuestas con límite de velocidad
MailLand aplica límites de velocidad en múltiples niveles para garantizar un uso justo y la estabilidad de la plataforma. Los límites varían según el tipo de stream (transaccional vs marketing), el método de autenticación y el nivel del plan.
Límites de Solicitudes a la API
Límites Basados en IP
Cada solicitud está sujeta a limitación de velocidad basada en IP, aplicada antes de la autenticación. Estos límites protegen contra abuso y ataques DDoS.
| Endpoint | Límite | Ventana |
|---|---|---|
| API General | 300 solicitudes | Por minuto |
| Inicio de sesión de administrador | 10 solicitudes | Por minuto |
| Invitaciones de equipo | 10 solicitudes | Por minuto |
| Verificaciones de dominio SSO | 15 solicitudes | Por minuto |
El inicio de sesión de usuario (no administrador) no está regido por esta ventana de IP: consulte Limitación de Velocidad de Inicio de Sesión más abajo para el bloqueo de 5 intentos/15 minutos que se le aplica.
Los límites basados en IP se aplican por dirección IP de origen. Si opera detrás de un proxy compartido, todos los clientes comparten el mismo límite.
Limitación de Velocidad de Inicio de Sesión
Los intentos de inicio de sesión fallidos se rastrean por combinación de IP + correo electrónico:
| Parámetro | Valor |
|---|---|
| Máx. intentos fallidos | 5 |
| Ventana de rastreo | 15 minutos |
| Duración de bloqueo | 15 minutos |
Después de 5 intentos de inicio de sesión fallidos dentro de 15 minutos, el par IP + correo electrónico se bloquea por 15 minutos. Un inicio de sesión exitoso restablece el contador.
Autenticación con API Key
Los intentos fallidos de autenticación con API key se rastrean en dos dimensiones:
| Dimensión | Máx. Fallos | Ventana | Duración de Bloqueo |
|---|---|---|---|
| Por prefijo de clave | 10 intentos | 15 minutos | 15 minutos |
| Por dirección IP | 20 intentos | 15 minutos | 15 minutos |
Si cualquiera de las dimensiones excede su umbral, la autenticación se bloquea temporalmente.
Límites de Envío de Correo Electrónico
Los límites de envío de correo electrónico se aplican por espacio de trabajo y varían según el tipo de stream. Los correos electrónicos transaccionales (recibos, restablecimiento de contraseñas) obtienen límites más altos que los correos electrónicos de marketing (boletines, campañas). El límite por minuto es el valor que realmente proviene de su plan (consulte el Resumen de Política); los límites por segundo y por hora se derivan de él, no se establecen de forma independiente, y solo los límites por día y por mes usan valores predeterminados fijos de la plataforma.
Stream Transaccional
| Ventana | Cómo se deriva |
|---|---|
| Por segundo | Tasa por minuto del plan ÷ 60 (mínimo 1); se acepta una solicitud de hasta 5 destinatarios en un segundo sin otra solicitud aceptada, ver abajo |
| Por minuto | Desde su plan (TransactionalRatePerMin) |
| Por hora | Tasa por minuto del plan × 60 |
| Por día | 1,000,000 (valor predeterminado de la plataforma) |
| Por mes | 10,000,000 (valor predeterminado de la plataforma) |
Solicitudes con varios destinatarios. Cada destinatario cuenta en todas las ventanas. Una solicitud transaccional (5 destinatarios como máximo) cuyo número de destinatarios supera su límite por segundo se acepta igualmente si no se aceptó ninguna otra solicitud en ese segundo; cualquier otra solicitud en el mismo segundo recibe 429 con Retry-After: 1. Por ejemplo, en un plan de 60 por minuto (1 por segundo), se acepta una solicitud a 3 destinatarios y otra solicitud en ese segundo se rechaza hasta el segundo siguiente. Los límites por minuto, hora, día y mes, el calentamiento y su cuota mensual siguen contando a los 3 destinatarios. SMTP aplica la misma regla a cada mensaje, contando sus direcciones RCPT TO únicas.
Stream de Marketing
| Ventana | Cómo se deriva |
|---|---|
| Por segundo | No se verifica: los envíos de marketing siempre omiten la verificación por segundo, sea por lotes o no |
| Por minuto | Desde su plan (MarketingRatePerMin) |
| Por hora | Tasa por minuto del plan × 60 |
| Por día | 100,000 (valor predeterminado de la plataforma) |
| Por mes | 1,000,000 (valor predeterminado de la plataforma) |
Las tasas por minuto son específicas del plan: consulte sus límites actuales en la página de Facturación, que se apoya en la ruta de API GET /v1/account/subscription/policy-summary.
Prioridad de Stream
Los correos electrónicos transaccionales tienen mayor prioridad (prioridad 1) que los correos electrónicos de marketing (prioridad 2). Cuando el sistema está bajo carga, los correos electrónicos transaccionales se procesan primero.
Operaciones por Lotes
Las operaciones de envío por lotes (por ejemplo, POST /v1/transactional/send-batch) son exclusivas de marketing y omiten las verificaciones de velocidad por segundo igual que cualquier envío de marketing, pero siguen sujetas a los límites por minuto, por hora, por día y por mes.
Límites de Envío del Espacio de Trabajo
El nivel de verificación no establece un tope de volumen, controla qué funciones están disponibles. Su volumen de envío diario/mensual proviene de su plan (consulte el Resumen de Política), no de su nivel de verificación.
| Nivel de Verificación | Transaccional | Marketing | Entrante |
|---|---|---|---|
| Sandbox | Solo destinatarios en lista de permitidos | No | No |
| BasicVerified / SenderVerified | Sí | No | Sí |
| BusinessVerified | Sí | Sí | Sí |
Los límites del espacio de trabajo se verifican antes que los límites de velocidad del stream. Puede ver sus límites y uso actuales en la página de Facturación, que se alimenta de GET /v1/account/subscription/policy-summary.
Calentamiento de IP
El calentamiento depende de la familia de plan, no es un calendario fijo. Los planes Free ejecutan 6 etapas de 5 días cada una (50 → 100 → 250 → 500 → 750 → 1,000/día) durante 30 días en total; los planes Pro ejecutan 500 → 1,000 → 2,500 → 5,000 → 10,000 → 25,000/día durante 14 días; los planes Max no tienen calentamiento. Consulte el calendario de calentamiento de su plan en la página de Facturación indicada arriba.
Encabezados de Límite de Velocidad
La mayoría de las respuestas de la API incluyen:
| Encabezado | Descripción |
|---|---|
X-RateLimit-Limit | Máximo de solicitudes permitidas en la ventana actual |
X-RateLimit-Remaining | Solicitudes restantes en la ventana actual |
Un 429 basado en IP añade además:
| Encabezado | Descripción |
|---|---|
X-RateLimit-Reset | Marca de tiempo UTC en ISO-8601 cuando se restablece la ventana actual |
Retry-After | Número de segundos a esperar antes de reintentar |
Manejo de Respuestas 429
Cuando recibe una respuesta 429 Too Many Requests, el cuerpo contiene detalles sobre qué límite fue excedido:
{
"code": "IP_RATE_LIMIT_EXCEEDED",
"message": "Too many requests from this IP. Retry after 45 seconds.",
"details": {
"limit": 300,
"current": 301,
"retryAfter": 45,
"resetAt": "2026-02-18T12:35:00Z"
}
}Para límites de velocidad de envío de correo electrónico:
{
"code": "RATE_LIMIT_EXCEEDED",
"message": "Per-minute rate limit exceeded (transactional)"
}El texto de message anterior es un ejemplo: se genera a partir del motivo de decisión del motor de políticas y no es una cadena literal garantizada. Compare por code, no por message.
Estrategia de Reintentos
#!/bin/bash
MAX_RETRIES=3
ATTEMPT=0
while [ $ATTEMPT -le $MAX_RETRIES ]; do
RESPONSE=$(curl -s -D - -o /tmp/body -w "%{http_code}" -X POST https://api.mail.land/v1/transactional/send \
-H "X-API-Key: ml_pet_Ab3Kx9mN2pQ7rT4wL8yD..." \
-H "Content-Type: application/json" \
-d '{ "from": {"email": "[email protected]"}, "to": [{"email": "[email protected]"}], "subject": "Hello", "htmlContent": "<p>Hi</p>" }')
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
if [ "$HTTP_CODE" -ne 429 ]; then
cat /tmp/body
exit 0
fi
# Read the Retry-After header, not the response body - not every 429 has a `details` block.
RETRY_AFTER=$(echo "$RESPONSE" | grep -i '^Retry-After:' | tr -d '\r' | cut -d' ' -f2)
RETRY_AFTER=${RETRY_AFTER:-60}
ATTEMPT=$((ATTEMPT + 1))
echo "Rate limited. Retrying in ${RETRY_AFTER}s (attempt ${ATTEMPT}/${MAX_RETRIES})"
sleep "$RETRY_AFTER"
done
echo "Max retries exceeded"
exit 1Mejores Prácticas
Monitoree su uso. Verifique el encabezado X-RateLimit-Remaining de forma proactiva para limitar las solicitudes antes de alcanzar los límites.
Use retroceso exponencial. Al reintentar después de un 429, siempre respete el encabezado Retry-After. Si no está presente, use retroceso exponencial comenzando en 1 segundo.
Prefiera los endpoints por lotes. Para envío de alto volumen (marketing), use POST /v1/transactional/send-batch en lugar de llamar a POST /v1/transactional/send en un bucle. Los endpoints por lotes omiten las verificaciones por segundo, como todo envío de marketing, y son más eficientes.
Separe transaccional y marketing. Use credenciales de API separadas para correos electrónicos transaccionales y de marketing. Esto asegura que el envío de marketing nunca impacte la entrega transaccional.
Distribuya el envío en el tiempo. Para campañas grandes, MailLand distribuye automáticamente la entrega. Para envíos masivos por API, distribuya las solicitudes de manera uniforme en lugar de enviar en ráfagas.
Límites de Restablecimiento de Contraseña
Las solicitudes de restablecimiento de contraseña tienen límites de velocidad separados:
| Parámetro | Valor |
|---|---|
| Tiempo de espera entre solicitudes | 60 segundos |
| Máx. solicitudes por día | 5 |
Próximos Pasos
- Códigos de Error: referencia completa de códigos de error
- API Keys: cree y administre credenciales de API
- Facturación: vea su uso y límites actuales