MailLandDocs
Referencia

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.

EndpointLímiteVentana
API General300 solicitudesPor minuto
Inicio de sesión de administrador10 solicitudesPor minuto
Invitaciones de equipo10 solicitudesPor minuto
Verificaciones de dominio SSO15 solicitudesPor 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ámetroValor
Máx. intentos fallidos5
Ventana de rastreo15 minutos
Duración de bloqueo15 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ónMáx. FallosVentanaDuración de Bloqueo
Por prefijo de clave10 intentos15 minutos15 minutos
Por dirección IP20 intentos15 minutos15 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

VentanaCómo se deriva
Por segundoTasa 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 minutoDesde su plan (TransactionalRatePerMin)
Por horaTasa por minuto del plan × 60
Por día1,000,000 (valor predeterminado de la plataforma)
Por mes10,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

VentanaCómo se deriva
Por segundoNo se verifica: los envíos de marketing siempre omiten la verificación por segundo, sea por lotes o no
Por minutoDesde su plan (MarketingRatePerMin)
Por horaTasa por minuto del plan × 60
Por día100,000 (valor predeterminado de la plataforma)
Por mes1,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ónTransaccionalMarketingEntrante
SandboxSolo destinatarios en lista de permitidosNoNo
BasicVerified / SenderVerifiedSíNoSí
BusinessVerifiedSí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:

EncabezadoDescripción
X-RateLimit-LimitMáximo de solicitudes permitidas en la ventana actual
X-RateLimit-RemainingSolicitudes restantes en la ventana actual

Un 429 basado en IP añade además:

EncabezadoDescripción
X-RateLimit-ResetMarca de tiempo UTC en ISO-8601 cuando se restablece la ventana actual
Retry-AfterNú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:

Respuesta de error de límite de velocidad
{
  "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:

Respuesta de límite de velocidad 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

retry-with-backoff.sh
#!/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 1

Mejores 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ámetroValor
Tiempo de espera entre solicitudes60 segundos
Máx. solicitudes por día5

Próximos Pasos

En esta página