API Reference
Complete email checker API reference. Endpoints, parameters, response codes for email verification and validation.
Die EmailVerify API ist ein RESTful-Dienst, der leistungsstarke E-Mail-Verifizierungsfunktionen bereitstellt. Alle API-Anfragen sollten über HTTPS erfolgen.
Basis-URL
https://api.emailverify.ai/v1Authentifizierung
Alle API-Anfragen erfordern eine Authentifizierung mit einem Bearer-Token im Authorization-Header:
Authorization: Bearer YOUR_API_KEYHolen Sie sich Ihren API-Schlüssel aus dem EmailVerify Dashboard.
Beispiel
curl -X POST https://api.emailverify.ai/v1/verify \
-H "Authorization: Bearer bv_live_xxx" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com"}'Ratenlimits
| Plan | Anfragen/Stunde | Anfragen/Tag |
|---|---|---|
| Free | 100 | 1.000 |
| Starter | 1.000 | 10.000 |
| Professional | 10.000 | 100.000 |
| Enterprise | Individuell | Individuell |
Ratenlimit-Informationen sind in den Antwort-Headern enthalten:
| Header | Beschreibung |
|---|---|
X-RateLimit-Limit | Maximal erlaubte Anfragen |
X-RateLimit-Remaining | Verbleibende Anfragen im Zeitfenster |
X-RateLimit-Reset | Unix-Zeitstempel, wann das Limit zurückgesetzt wird |
Bei Überschreitung des Ratenlimits erhalten Sie eine 429 Too Many Requests Antwort:
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please try again later.",
"retry_after": 3600
}
}Endpunkte
Einzelne E-Mail-Verifizierung
Verifizieren Sie eine einzelne E-Mail-Adresse mit detaillierten Ergebnissen.
POST /verifyAnfrage
{
"email": "user@example.com",
"smtp_check": true,
"timeout": 5000
}Parameter
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
email | string | Ja | - | Zu verifizierende E-Mail-Adresse |
smtp_check | boolean | Nein | true | SMTP-Postfachverifizierung durchführen |
timeout | integer | Nein | 5000 | Anfrage-Timeout in Millisekunden (max: 30000) |
Antwort
{
"email": "user@example.com",
"status": "valid",
"result": {
"deliverable": true,
"valid_format": true,
"valid_domain": true,
"valid_mx": true,
"disposable": false,
"role": false,
"catchall": false,
"free": false,
"smtp_valid": true
},
"score": 0.95,
"reason": null,
"credits_used": 1
}Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
email | string | Die verifizierte E-Mail-Adresse |
status | string | Verifizierungsstatus: valid, invalid, unknown, accept_all |
result | object | Detaillierte Verifizierungsergebnisse |
score | number | Konfidenzbewertung (0,0 - 1,0) |
reason | string | Grund für ungültigen/unbekannten Status (nullable) |
credits_used | integer | Anzahl verbrauchter Credits |
Result-Objekt-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
deliverable | boolean | Ob E-Mail Nachrichten empfangen kann |
valid_format | boolean | Ob E-Mail gültige Syntax hat |
valid_domain | boolean | Ob Domain existiert |
valid_mx | boolean | Ob Domain MX-Einträge hat |
disposable | boolean | Ob E-Mail von Einweg-Dienst stammt |
role | boolean | Ob E-Mail rollenbasiert ist (info@, support@) |
catchall | boolean | Ob Domain alle E-Mails akzeptiert |
free | boolean | Ob E-Mail von kostenlosem Anbieter stammt |
smtp_valid | boolean | Ob SMTP-Verifizierung erfolgreich war |
Massen-E-Mail-Verifizierung
Senden Sie mehrere E-Mail-Adressen zur Verifizierung. Gibt eine Job-ID zur Verfolgung des Fortschritts zurück.
POST /verify/bulkAnfrage
{
"emails": [
"user1@example.com",
"user2@example.com",
"user3@example.com"
],
"smtp_check": true,
"webhook_url": "https://your-app.com/webhooks/emailverify"
}Parameter
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
emails | array | Ja | - | Array von E-Mail-Adressen (max: 10.000) |
smtp_check | boolean | Nein | true | SMTP-Verifizierung durchführen |
webhook_url | string | Nein | - | URL für Abschlussbenachrichtigung |
Antwort
{
"job_id": "job_abc123xyz",
"status": "processing",
"total": 3,
"processed": 0,
"valid": 0,
"invalid": 0,
"unknown": 0,
"credits_used": 3,
"created_at": "2025-01-15T10:30:00Z"
}Massen-Job-Status abrufen
Überprüfen Sie den Status eines Massen-Verifizierungsjobs.
GET /verify/bulk/{job_id}Antwort (In Bearbeitung)
{
"job_id": "job_abc123xyz",
"status": "processing",
"total": 1000,
"processed": 450,
"valid": 380,
"invalid": 50,
"unknown": 20,
"progress_percent": 45,
"created_at": "2025-01-15T10:30:00Z"
}Antwort (Abgeschlossen)
{
"job_id": "job_abc123xyz",
"status": "completed",
"total": 1000,
"processed": 1000,
"valid": 850,
"invalid": 100,
"unknown": 50,
"progress_percent": 100,
"created_at": "2025-01-15T10:30:00Z",
"completed_at": "2025-01-15T10:35:00Z"
}Job-Statuswerte
| Status | Beschreibung |
|---|---|
pending | Job ist in Warteschlange |
processing | Job wird bearbeitet |
completed | Job erfolgreich abgeschlossen |
failed | Job fehlgeschlagen (siehe Fehlerfeld) |
Massen-Job-Ergebnisse abrufen
Rufen Sie Verifizierungsergebnisse für einen abgeschlossenen Massen-Job ab.
GET /verify/bulk/{job_id}/resultsAbfrageparameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
limit | integer | 100 | Ergebnisse pro Seite (max: 1.000) |
offset | integer | 0 | Startposition |
status | string | - | Nach Status filtern: valid, invalid, unknown |
Antwort
{
"job_id": "job_abc123xyz",
"total": 1000,
"limit": 100,
"offset": 0,
"results": [
{
"email": "user1@example.com",
"status": "valid",
"result": {
"deliverable": true,
"disposable": false,
"role": false
},
"score": 0.95
},
{
"email": "user2@example.com",
"status": "invalid",
"result": {
"deliverable": false,
"reason": "mailbox_not_found"
},
"score": 0.10
}
]
}Credits überprüfen
Abrufen des aktuellen Credit-Guthabens und der Nutzungsinformationen.
GET /creditsAntwort
{
"available": 9500,
"used": 500,
"total": 10000,
"plan": "Professional",
"resets_at": "2025-02-01T00:00:00Z",
"rate_limit": {
"requests_per_hour": 10000,
"remaining": 9850
}
}Webhooks
Webhook erstellen
POST /webhooks{
"url": "https://your-app.com/webhooks/emailverify",
"events": ["verification.completed", "bulk.completed"],
"secret": "your-webhook-secret"
}Webhooks auflisten
GET /webhooksWebhook löschen
DELETE /webhooks/{webhook_id}Webhook-Ereignisse
| Ereignis | Beschreibung |
|---|---|
verification.completed | Einzelne E-Mail-Verifizierung abgeschlossen |
bulk.completed | Massen-Job abgeschlossen |
bulk.failed | Massen-Job fehlgeschlagen |
credits.low | Credits unter Schwellenwert |
Webhook-Payload
{
"event": "bulk.completed",
"timestamp": "2025-01-15T10:35:00Z",
"data": {
"job_id": "job_abc123xyz",
"status": "completed",
"total": 1000,
"valid": 850,
"invalid": 100,
"unknown": 50
},
"signature": "sha256=..."
}Verifizierungsstatus
| Status | Bedeutung | Empfohlene Aktion |
|---|---|---|
valid | E-Mail existiert und kann Nachrichten empfangen | Sicher zu senden |
invalid | E-Mail existiert nicht oder kann nicht empfangen | Von Liste entfernen |
unknown | Gültigkeit konnte nicht ermittelt werden | Später erneut versuchen oder mit Vorsicht verwenden |
accept_all | Domain akzeptiert alle E-Mails (Catch-All) | Auf Bounces überwachen |
Fehlerantworten
Alle Fehler folgen einem einheitlichen Format:
{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"details": "Additional context (optional)"
}
}HTTP-Statuscodes
| Code | Beschreibung |
|---|---|
200 | Erfolg |
400 | Bad Request - Ungültige Parameter |
401 | Unauthorized - Ungültiger oder fehlender API-Schlüssel |
403 | Forbidden - Unzureichende Berechtigungen |
404 | Not Found - Ressource existiert nicht |
429 | Too Many Requests - Ratenlimit überschritten |
500 | Internal Server Error |
503 | Service Unavailable |
Fehlercodes
| Code | HTTP-Status | Beschreibung |
|---|---|---|
INVALID_API_KEY | 401 | API-Schlüssel ist ungültig oder fehlt |
RATE_LIMIT_EXCEEDED | 429 | Zu viele Anfragen |
INSUFFICIENT_CREDITS | 403 | Nicht genug Credits |
INVALID_EMAIL | 400 | E-Mail-Format ist ungültig |
INVALID_REQUEST | 400 | Anfragekörper ist fehlerhaft |
JOB_NOT_FOUND | 404 | Massen-Job-ID nicht gefunden |
TIMEOUT | 504 | Verifizierung hat Zeitüberschreitung erreicht |
Best Practices
1. Umgebungsvariablen verwenden
Niemals API-Schlüssel hartkodieren:
// Gut
const apiKey = process.env.EMAILVERIFY_API_KEY;
// Schlecht - nicht tun
const apiKey = 'bv_live_xxx';2. Ratenlimits behandeln
Implementieren Sie exponentielles Backoff:
async function verifyWithRetry(email, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await verify(email);
} catch (error) {
if (error.code === 'RATE_LIMIT_EXCEEDED') {
await sleep(Math.pow(2, i) * 1000);
continue;
}
throw error;
}
}
}3. Bulk für mehrere E-Mails verwenden
Für die Verifizierung von mehr als 10 E-Mails verwenden Sie den Bulk-Endpunkt:
// Gut - einzelner API-Aufruf
const job = await client.verifyBulk(emails);
// Schlecht - viele einzelne Aufrufe
for (const email of emails) {
await client.verify(email);
}4. Webhooks für Massen-Jobs implementieren
Nicht ständig abfragen; verwenden Sie Webhooks:
// Mit Webhook übermitteln
const job = await client.verifyBulk(emails, {
webhookUrl: 'https://your-app.com/webhook',
});SDKs
Verwenden Sie unsere offiziellen SDKs für eine einfachere Integration: