MailLandDocs
Referenz

Ratenbegrenzungen

Verstehen Sie API-Ratenbegrenzungen, E-Mail-Versandlimits und den Umgang mit ratenbegrenzten Antworten

MailLand erzwingt Ratenbegrenzungen auf mehreren Ebenen, um eine faire Nutzung und Plattformstabilität zu gewährleisten. Die Limits variieren je nach Stream-Typ (Transactional vs. Marketing), Authentifizierungsmethode und Planstufe.

API-Anfragelimits

IP-basierte Limits

Jede Anfrage unterliegt einer IP-basierten Ratenbegrenzung, die vor der Authentifizierung angewendet wird. Diese Limits schützen vor Missbrauch und DDoS-Angriffen.

EndpointLimitZeitfenster
Allgemeine API300 AnfragenPro Minute
Admin-Anmeldung10 AnfragenPro Minute
Team-Einladungen10 AnfragenPro Minute
SSO-Domain-Prüfungen15 AnfragenPro Minute

Die (nicht-administrative) Benutzeranmeldung unterliegt nicht diesem IP-Fenster: siehe Anmelde-Ratenbegrenzung unten für die Sperre nach 5 Versuchen/15 Minuten, die dafür gilt.

IP-basierte Limits gelten pro Quell-IP-Adresse. Wenn Sie hinter einem gemeinsamen Proxy arbeiten, teilen sich alle Clients dasselbe Limit.

Anmelde-Ratenbegrenzung

Fehlgeschlagene Anmeldeversuche werden pro IP + E-Mail-Kombination erfasst:

ParameterWert
Max. Fehlversuche5
Erfassungsfenster15 Minuten
Sperrdauer15 Minuten

Nach 5 fehlgeschlagenen Anmeldeversuchen innerhalb von 15 Minuten wird die IP + E-Mail-Kombination für 15 Minuten gesperrt. Eine erfolgreiche Anmeldung setzt den Zähler zurück.

API-Schlüssel-Authentifizierung

Fehlgeschlagene API-Schlüssel-Authentifizierungsversuche werden in zwei Dimensionen erfasst:

DimensionMax. FehlversucheZeitfensterSperrdauer
Pro Schlüssel-Präfix10 Versuche15 Minuten15 Minuten
Pro IP-Adresse20 Versuche15 Minuten15 Minuten

Wenn eine der beiden Dimensionen ihre Schwelle überschreitet, wird die Authentifizierung vorübergehend blockiert.

E-Mail-Versandlimits

E-Mail-Versandlimits werden pro Workspace durchgesetzt und variieren je nach Stream-Typ. Transaktionale E-Mails (Quittungen, Passwortzurücksetzungen) erhalten höhere Limits als Marketing-E-Mails (Newsletter, Kampagnen). Das Pro-Minute-Limit ist der Wert, der tatsächlich aus Ihrem Plan stammt (siehe Richtlinienübersicht); Pro-Sekunde und Pro-Stunde werden davon abgeleitet und nicht unabhängig festgelegt, und nur Tag/Monat verwenden feste Plattform-Standardwerte.

Transactional-Stream

ZeitfensterWie es abgeleitet wird
Pro SekundePro-Minute-Rate des Plans ÷ 60 (mindestens 1); eine Anfrage mit bis zu 5 Empfängern wird in einer Sekunde ohne andere angenommene Anfrage angenommen – siehe unten
Pro MinuteAus Ihrem Plan (TransactionalRatePerMin)
Pro StundePro-Minute-Rate des Plans × 60
Pro Tag1.000.000 (Plattform-Standard)
Pro Monat10.000.000 (Plattform-Standard)

Anfragen mit mehreren Empfängern. Jeder Empfänger zählt in jedem Zeitfenster. Eine transaktionale Anfrage (höchstens 5 Empfänger), deren Empfängerzahl über Ihrem Pro-Sekunde-Kontingent liegt, wird trotzdem angenommen, wenn in dieser Sekunde keine andere Anfrage angenommen wurde; jede weitere Anfrage in derselben Sekunde erhält 429 mit Retry-After: 1. Beispiel: Bei einem Plan mit 60 pro Minute (1 pro Sekunde) wird eine Anfrage an 3 Empfänger angenommen und eine weitere Anfrage in dieser Sekunde bis zur nächsten Sekunde abgelehnt. Die Limits pro Minute, Stunde, Tag und Monat, das Warm-up und Ihr Monatskontingent zählen weiterhin alle 3 Empfänger. SMTP wendet dieselbe Regel auf jede Nachricht an und zählt deren eindeutige RCPT TO-Adressen.

Marketing-Stream

ZeitfensterWie es abgeleitet wird
Pro SekundeWird nicht geprüft: Marketing-Versand überspringt die Pro-Sekunde-Prüfung immer, ob Batch oder nicht
Pro MinuteAus Ihrem Plan (MarketingRatePerMin)
Pro StundePro-Minute-Rate des Plans × 60
Pro Tag100.000 (Plattform-Standard)
Pro Monat1.000.000 (Plattform-Standard)

Pro-Minute-Raten sind planabhängig: prüfen Sie Ihre aktuellen Limits auf der Seite Abrechnung, die auf der API-Route GET /v1/account/subscription/policy-summary basiert.

Stream-Priorität

Transaktionale E-Mails haben eine höhere Priorität (Priorität 1) als Marketing-E-Mails (Priorität 2). Bei Systemlast werden transaktionale E-Mails zuerst verarbeitet.

Batch-Operationen

Batch-Versandoperationen (z. B. POST /v1/transactional/send-batch) sind Marketing-exklusiv und überspringen die Pro-Sekunde-Ratenprüfung genauso wie jeder Marketing-Versand: unterliegen aber weiterhin den Pro-Minute-, Pro-Stunde-, Pro-Tag- und Pro-Monat-Limits.

Workspace-Versandlimits

Die Verifizierungsstufe legt keine Volumenobergrenze fest: sie steuert, welche Funktionen verfügbar sind. Ihr tägliches/monatliches Versandvolumen stammt aus Ihrem Plan (siehe Richtlinienübersicht), nicht aus Ihrer Verifizierungsstufe.

VerifizierungsstufeTransaktionalMarketingEingehend
SandboxNur zugelassene EmpfängerNeinNein
BasicVerified / SenderVerifiedJaNeinJa
BusinessVerifiedJaJaJa

Workspace-Limits werden vor den Stream-Ratenbegrenzungen geprüft. Sie können Ihre aktuellen Limits und die Nutzung auf der Seite Abrechnung einsehen, die von GET /v1/account/subscription/policy-summary gespeist wird.

IP-Aufwärmung

Die Aufwärmung erfolgt pro Plan-Familie, nicht nach einem festen Zeitplan. Free-Pläne durchlaufen 6 Stufen zu je 5 Tagen (50 → 100 → 250 → 500 → 750 → 1.000/Tag) über insgesamt 30 Tage; Pro-Pläne durchlaufen 500 → 1.000 → 2.500 → 5.000 → 10.000 → 25.000/Tag über 14 Tage; Max-Pläne haben keine Aufwärmung. Den Aufwärmplan Ihres Plans finden Sie über die oben genannte Seite Abrechnung.

Ratenbegrenzungs-Header

Die meisten API-Antworten enthalten:

HeaderBeschreibung
X-RateLimit-LimitMaximal erlaubte Anfragen im aktuellen Zeitfenster
X-RateLimit-RemainingVerbleibende Anfragen im aktuellen Zeitfenster

Ein IP-basiertes 429 fügt zusätzlich hinzu:

HeaderBeschreibung
X-RateLimit-ResetISO-8601-UTC-Zeitstempel, wann das aktuelle Zeitfenster zurückgesetzt wird
Retry-AfterAnzahl der Sekunden bis zum nächsten Versuch

Umgang mit 429-Antworten

Wenn Sie eine 429 Too Many Requests-Antwort erhalten, enthält der Body Details darüber, welches Limit überschritten wurde:

Ratenbegrenzungs-Fehlerantwort
{
  "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"
  }
}

Für E-Mail-Versand-Ratenbegrenzungen:

E-Mail-Ratenbegrenzungsantwort
{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Per-minute rate limit exceeded (transactional)"
}

Der obige message-Text ist ein Beispiel: er wird aus dem Entscheidungsgrund der Richtlinien-Engine generiert und ist keine garantierte wörtliche Zeichenkette. Prüfen Sie auf code, nicht auf message.

Retry-Strategie

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

Best Practices

Nutzung überwachen. Prüfen Sie den X-RateLimit-Remaining-Header proaktiv, um Anfragen zu drosseln, bevor Sie Limits erreichen.

Exponentielles Backoff verwenden. Wenn Sie nach einem 429-Fehler erneut versuchen, respektieren Sie immer den Retry-After-Header. Falls dieser nicht vorhanden ist, verwenden Sie exponentielles Backoff ab 1 Sekunde.

Batch-Endpoints bevorzugen. Für Massen-Versand (Marketing) verwenden Sie POST /v1/transactional/send-batch anstatt POST /v1/transactional/send in einer Schleife aufzurufen. Batch-Endpoints überspringen Pro-Sekunde-Prüfungen, wie jeder Marketing-Versand, und sind effizienter.

Transactional und Marketing trennen. Verwenden Sie separate API-Anmeldedaten für transaktionale und Marketing-E-Mails. So wird sichergestellt, dass Marketing-Versand niemals die transaktionale Zustellung beeinträchtigt.

Versand über die Zeit verteilen. Für große Kampagnen regelt MailLand die Zustellung automatisch. Für API-gesteuerte Massen-Versendungen verteilen Sie Anfragen gleichmäßig, anstatt sie stoßweise zu senden.

Passwort-Zurücksetzungslimits

Anfragen zum Zurücksetzen des Passworts haben separate Ratenbegrenzungen:

ParameterWert
Abklingzeit zwischen Anfragen60 Sekunden
Max. Anfragen pro Tag5

Nächste Schritte

Auf dieser Seite