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{
"emails": [
"[email protected]",
"[email protected]",
"invalid@",
"[email protected]",
"[email protected]"
],
"verify_smtp": true
}| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
emails | array | - | Zu validierende E-Mail-Adressen (erforderlich, max. 100) |
verify_smtp | bool | true | SMTP-Postfachverifizierung durchführen |
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
{
"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
| Feld | Typ | Beschreibung |
|---|---|---|
total_count | int | Eindeutige 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_count | int | Anzahl der verarbeiteten E-Mails |
successful_count | int | Validierungen, die ohne Fehler abgeschlossen wurden |
credits_consumed | int | Verbrauchtes Guthaben (kostenpflichtige Validierungen) |
free_validations | int | Kostenlose Validierungen (Wegwerf-Adressen, Tippfehler, SMTP-Fehler) |
results | array | Ein 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| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
cursor | string | - | Opaker Cursor aus dem nextCursor der vorherigen Seite. Für die erste Seite weglassen. |
limit | int | 20 | Einträge pro Seite (max. 100) |
result | string | - | Filter: Deliverable, Risky, Unknown, Undeliverable, Invalid |
from | datetime | - | Startdatum |
to | datetime | - | Enddatum |
search | string | - | Suche nach E-Mail-Adresse |
{
"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| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
from | datetime | - | Startdatum |
to | datetime | - | Enddatum |
{
"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
| Grenzwert | Wert |
|---|---|
| Max. E-Mails pro Batch | 100 |
| Parallele Validierungen pro Batch | 10 |
| SMTP-Timeout pro E-Mail | 30 Sekunden |
| Max. E-Mail-Länge | 320 Zeichen |
Fehlerantworten
| Status | Code | Beschreibung |
|---|---|---|
400 | INVALID_REQUEST | Mindestens eine E-Mail ist erforderlich |
400 | CONTENT_TOO_LARGE | Batch überschreitet 100 E-Mails |
402 | INSUFFICIENT_CREDITS | Nicht 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 SieRisky-E-Mails mit Vorsicht und vermeiden SieUndeliverablevollständig. - Tippfehlervorschläge prüfen: Wenn
syntax.has_typoden Werttruehat, zeigen Sie dem Benutzer diesyntax.suggestionzur 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
- Einzelne E-Mail-Validierung: Echtzeit-Validierung für einzelne Adressen
- Unterdrückungslisten: Unterdrückungslisten verwalten
- IP-Aufwärmung: Domains mit sauberen, validierten Listen aufwärmen