MailLandDocs
E-Mail-Validierung

Batch-Validierung

Validieren Sie bis zu 100 E-Mail-Adressen in einer einzelnen Anfrage

Authentifizierung

Fügen Sie Ihren API-Schlüssel im Header X-API-Key ein:

X-API-Key: ml_pv_Ab3Kx9mN2pQ7rT4wL8yD...

Die Anmeldedaten müssen ein Validation-Produkt-Credential mit aktiviertem Api-Kanal sein.

Batch validieren

POST https://api.mail.land/v1/validation/batch
Batch-Validierungsanfrage
{
  "emails": [
    "[email protected]",
    "[email protected]",
    "invalid@",
    "[email protected]",
    "[email protected]"
  ],
  "verify_smtp": true
}
FeldTypStandardBeschreibung
emailsarray-Zu validierende E-Mail-Adressen (erforderlich, max. 100)
verify_smtpbooltrueSMTP-Postfachverifizierung durchführen
Batch validate
curl -X POST https://api.mail.land/v1/validation/batch \
  -H "X-API-Key: ml_pv_Ab3Kx9mN2pQ7rT4wL8yD..." \
  -H "Content-Type: application/json" \
  -d '{
    "emails": ["[email protected]", "[email protected]", "[email protected]"],
    "verify_smtp": true
  }'

Antwort

Batch-Validierungsantwort
{
  "total_count": 5,
  "processed_count": 5,
  "successful_count": 5,
  "credits_consumed": 4,
  "free_validations": 1,
  "results": [
    {
      "email": "[email protected]",
      "result": "Deliverable",
      "score": 95,
      "syntax": { "is_valid": true, "has_typo": false },
      "disposable": { "is_disposable": false },
      "role": { "is_role_account": false },
      "mx": { "has_mx": true, "records": ["mx.example.com"], "accepts_mail": true },
      "smtp": { "can_connect": true, "is_deliverable": true, "is_catch_all": false, "reachability": "safe" },
      "provider": { "name": "Unknown", "type": "unknown" },
      "cached": false,
      "verified_at": "2026-02-17T12:34:56Z"
    },
    {
      "email": "[email protected]",
      "result": "Deliverable",
      "score": 95,
      "syntax": { "is_valid": true, "has_typo": false },
      "disposable": { "is_disposable": false },
      "role": { "is_role_account": false },
      "mx": { "has_mx": true, "records": ["gmail-smtp-in.l.google.com"], "accepts_mail": true },
      "smtp": { "can_connect": true, "is_deliverable": true, "is_catch_all": false, "reachability": "safe" },
      "provider": { "name": "Gmail", "type": "consumer" },
      "cached": false,
      "verified_at": "2026-02-17T12:34:56Z"
    },
    {
      "email": "invalid@",
      "result": "Undeliverable",
      "score": 0,
      "syntax": { "is_valid": false, "has_typo": false },
      "disposable": { "is_disposable": false },
      "role": { "is_role_account": false },
      "mx": { "has_mx": false, "records": [], "accepts_mail": false },
      "smtp": null,
      "provider": { "name": "Unknown", "type": "unknown" },
      "cached": false,
      "verified_at": "2026-02-17T12:34:56Z"
    },
    {
      "email": "[email protected]",
      "result": "Undeliverable",
      "score": 10,
      "syntax": { "is_valid": true, "has_typo": false },
      "disposable": { "is_disposable": true },
      "role": { "is_role_account": false },
      "mx": { "has_mx": true, "records": ["mx.tempmail.org"], "accepts_mail": true },
      "smtp": null,
      "provider": { "name": "Unknown", "type": "unknown" },
      "cached": false,
      "verified_at": "2026-02-17T12:34:56Z"
    },
    {
      "email": "[email protected]",
      "result": "Deliverable",
      "score": 85,
      "syntax": { "is_valid": true, "has_typo": false },
      "disposable": { "is_disposable": false },
      "role": { "is_role_account": true },
      "mx": { "has_mx": true, "records": ["mx.company.com"], "accepts_mail": true },
      "smtp": { "can_connect": true, "is_deliverable": true, "is_catch_all": false, "reachability": "safe" },
      "provider": { "name": "Unknown", "type": "unknown" },
      "cached": false,
      "verified_at": "2026-02-17T12:34:56Z"
    }
  ]
}

Antwortfelder

FeldTypBeschreibung
total_countintEindeutige Adressen in der Anfrage. Exakte, groß-/kleinschreibungsabhängige Duplikate werden vor der Verarbeitung entfernt und nur einmal validiert, daher kann diese Zahl niedriger sein als die Anzahl der gesendeten E-Mails.
processed_countintAnzahl der verarbeiteten E-Mails
successful_countintValidierungen, die ohne Fehler abgeschlossen wurden
credits_consumedintVerbrauchtes Guthaben (kostenpflichtige Validierungen)
free_validationsintKostenlose Validierungen (Wegwerf-Adressen, Tippfehler, SMTP-Fehler)
resultsarrayEin Eintrag pro eindeutiger Adresse, in der Reihenfolge des ersten Auftretens. Ordnen Sie die Ergebnisse Ihrer Eingabe über das Feld email zu, nicht über die Position: Duplikate in Ihrer Anfrage haben keinen entsprechenden Eintrag.

Jedes Element in results hat die gleiche Struktur wie eine Einzelvalidierungsantwort.

Guthabenverbrauch

Das Guthaben wird vor der Verarbeitung des Batches geprüft. Wenn Sie nicht genügend Guthaben für den gesamten Batch haben, wird die Anfrage mit 402 abgelehnt.

Innerhalb des Batches gelten die gleichen Regeln für kostenlose Validierungen wie bei der Einzelvalidierung:

  • Wegwerf-Domains: kostenlos
  • Tippfehler mit hoher Konfidenz (90 %+), kostenlos
  • SMTP-Verbindungsfehler: kostenlos

Die Antwort zeigt die genaue Aufschlüsselung: credits_consumed (berechnet) + free_validations (nicht berechnet) = processed_count.

Parallelität

Batch-Validierungen führen bis zu 10 E-Mails gleichzeitig innerhalb einer einzelnen Anfrage aus. Dies gleicht den Durchsatz gegen die SMTP-Server-Ratenbegrenzungen aus. Die Ergebnisse werden unabhängig von der Verarbeitungsreihenfolge in der gleichen Reihenfolge wie das Eingabearray zurückgegeben.

Für Listen mit mehr als 100 E-Mails teilen Sie diese in mehrere Batch-Anfragen auf. Die Parallelitätsgrenze gilt pro Anfrage: Sie können mehrere Batch-Anfragen parallel von Ihrem Server ausführen.

Validierungsverlauf

Alle Validierungen (Einzel- und Batch-) werden in Ihrem Validierungsverlauf aufgezeichnet:

GET https://api.mail.land/v1/validation/history
ParameterTypStandardBeschreibung
cursorstring-Opaker Cursor aus dem nextCursor der vorherigen Seite. Für die erste Seite weglassen.
limitint20Einträge pro Seite (max. 100)
resultstring-Filter: Deliverable, Risky, Unknown, Undeliverable, Invalid
fromdatetime-Startdatum
todatetime-Enddatum
searchstring-Suche nach E-Mail-Adresse
Validierungsverlauf-Antwort
{
  "items": [
    {
      "email": "u***@example.com",
      "result": "Deliverable",
      "score": 95,
      "is_disposable": false,
      "is_role_account": false,
      "has_valid_mx": true,
      "smtp_deliverable": true,
      "provider": "Unknown",
      "was_cached": false,
      "smtp_verified": true,
      "credit_consumed": true,
      "verified_at": "2026-02-17T12:34:56Z"
    }
  ],
  "nextCursor": "eyJ2IjoxLCJzIjoidmFsaWRhdGlvbjp2ZXJpZmllZGF0OmRlc2MiLCJrIjoi...",
  "hasMore": true
}

E-Mail-Adressen im Verlauf werden aus Datenschutzgründen teilweise maskiert (z. B. u***@example.com).

Validierungsstatistiken

Rufen Sie aggregierte Statistiken für Ihre Validierungsnutzung ab:

GET https://api.mail.land/v1/validation/stats
ParameterTypStandardBeschreibung
fromdatetime-Startdatum
todatetime-Enddatum
Validierungsstatistik-Antwort
{
  "total_validations": 450,
  "deliverable": 320,
  "risky": 65,
  "undeliverable": 50,
  "unknown": 15,
  "deliverable_rate": 71.11,
  "risky_rate": 14.44,
  "undeliverable_rate": 11.11,
  "unknown_rate": 3.33,
  "credits_consumed": 380,
  "free_validations": 70
}

Grenzwerte

GrenzwertWert
Max. E-Mails pro Batch100
Parallele Validierungen pro Batch10
SMTP-Timeout pro E-Mail30 Sekunden
Max. E-Mail-Länge320 Zeichen

Fehlerantworten

StatusCodeBeschreibung
400INVALID_REQUESTMindestens eine E-Mail ist erforderlich
400CONTENT_TOO_LARGEBatch überschreitet 100 E-Mails
402INSUFFICIENT_CREDITSNicht genügend Guthaben für den Batch

Best Practices

  • Vor dem Import validieren: Führen Sie eine Batch-Validierung bei neuen Abonnentenlisten durch, bevor Sie diese importieren, um Bounce-Spitzen zu vermeiden.
  • Nach Ergebnis filtern: Importieren Sie nur Deliverable-E-Mails. Behandeln Sie Risky-E-Mails mit Vorsicht und vermeiden Sie Undeliverable vollständig.
  • Tippfehlervorschläge prüfen: Wenn syntax.has_typo den Wert true hat, zeigen Sie dem Benutzer die syntax.suggestion zur Bestätigung an, bevor Sie senden.
  • Bei der Anmeldung verwenden: Validieren Sie E-Mails in Ihrem Registrierungsprozess mit der Einzelvalidierung, um fehlerhafte Adressen von Anfang an zu verhindern.
  • Guthabenverbrauch überwachen: Prüfen Sie /validation/credits, um den Verbrauch zu verfolgen und Upgrades zu planen, bevor Sie Ihr Kontingent erreichen.

Nächste Schritte

Auf dieser Seite