Referenz
Fehler
Wie die Emailit-API Fehler meldet. Formate des Antwort-Bodys, HTTP-Statuscodes und ihre Bedeutung sowie Lösungen für die häufigsten Fehlermeldungen.
Die Emailit-API zeigt mit HTTP-Statuscodes an, ob eine Anfrage funktioniert hat. Codes im Bereich 2xx bedeuten Erfolg, 4xx-Codes bedeuten, dass sich an der Anfrage etwas ändern muss, und 5xx-Codes bedeuten, dass auf unserer Seite etwas schiefgelaufen ist. Diese Seite beschreibt die Fehler-Bodys, alle Statuscodes, die die API zurückgibt, und wie Sie die häufigsten Fehler beheben.
Formate von Fehlerantworten
Jeder Fehler-Body ist ein JSON-Objekt mit dem Feld error. Die genaue Form hängt davon ab, wo die Anfrage fehlgeschlagen ist. Schreiben Sie Ihre Fehlerbehandlung so, dass sie zuerst error liest, dann message, sofern vorhanden, und dann alle zusätzlichen Felder, die der Endpunkt dokumentiert.
Anfragefehler
Authentifizierungsfehler, Berechtigungsfehler, fehlerhaftes JSON und andere Fehler, die auftreten, bevor ein Endpunkt läuft, verwenden das Standardformat für HTTP-Fehler:
{
"statusCode": 401,
"error": "Unauthorized",
"message": "API key required"
}| Feld | Beschreibung |
|---|---|
statusCode |
Der HTTP-Statuscode. |
error |
Der HTTP-Statustext, etwa Unauthorized oder Forbidden. |
message |
Was schiefgelaufen ist, in verständlicher Sprache. |
Validierungsfehler
Hat ein Query-Parameter oder Body-Feld den falschen Typ, fehlt es oder liegt es außerhalb des zulässigen Bereichs, lehnt die API die Anfrage mit 400 ab, bevor sie ausgeführt wird, und listet jedes Problem in details auf:
{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation error",
"details": [
{
"instancePath": "/limit",
"schemaPath": "#/properties/limit/maximum",
"keyword": "maximum",
"params": { "comparison": "<=", "limit": 100 },
"message": "must be <= 100"
}
]
}instancePath verweist auf das Feld (/limit, /to, /attachments/0/filename), und message beschreibt die verletzte Regel. Bei einigen Endpunkten, etwa E-Mail senden, geben diese Fehler nur {"error": "Bad Request"} zurück.
Ressourcenfehler
Fehler, die ein Endpunkt auslöst, etwa bei einem fehlenden Objekt oder einem doppelten Namen, geben error und oft message zurück:
{
"error": "Email not found",
"message": "Email with ID 'em_4KYof1ZzXndZE2VPi0DgULiekG8' not found in your workspace"
}Einige Fehler enthalten zusätzliche Felder, die Ihnen bei der Behebung helfen:
| Feld | Zurückgegeben bei | Enthält |
|---|---|---|
existing |
409, wenn Sie eine Domain, einen API-Schlüssel, eine Kontaktliste, einen Kontakt oder einen Abonnenten doppelt erstellen |
Das bereits vorhandene Objekt, damit Sie stattdessen dieses verwenden können. |
usage |
422, wenn ein Tariflimit erreicht ist |
used, limit und bei Kontaktlisten plan. |
required_plan |
403 mit error: "plan_required" |
Der niedrigste Tarif, der die Funktion enthält, etwa pro. |
code |
Einige 403- und 422-Fehler |
Ein stabiler, maschinenlesbarer Code, etwa unverified_workspace_recipient oder events_offset_too_large. |
missing |
404 von Kontakte gesammelt aktualisieren |
Die Kontakt-IDs, die nicht gefunden wurden. |
Validierungsfehler beim Senden
E-Mail senden und E-Mail weiterleiten prüfen die gesamte Nachricht auf einmal und geben alle Probleme in validation_errors zurück:
{
"error": "Validation failed",
"validation_errors": [
"Missing required field: subject",
"Invalid to email address at index 1: ada@example"
]
}Feldfehler
Vorlagen, Kampagnen und Automatisierungen geben Validierungsprobleme nach Feld gruppiert zurück:
{
"message": "Validation failed",
"errors": {
"alias": ["Alias must contain only lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-)"]
}
}Rate-Limit-Fehler
429-Antworten der Sende-Endpunkte enthalten das erreichte Limit und die Wartezeit. Siehe Rate Limits.
{
"error": "Rate limit exceeded",
"message": "Too many requests. Maximum 2 messages per second allowed.",
"limit": 2,
"current": 2,
"retry_after": 1
}HTTP-Statuscodes
| Code | Bedeutung | Typische Ursachen in der Emailit-API |
|---|---|---|
200 |
OK | Die Anfrage hat funktioniert. Sendungen, Aktualisierungen, Löschungen und Lesezugriffe geben 200 zurück. |
201 |
Created | Eine Domain, ein API-Schlüssel, eine Kontaktliste, ein Abonnent, ein Kontakt, eine Vorlage, ein Webhook oder ein anderes Objekt wurde erstellt. |
202 |
Accepted | Ein hochgeladener DMARC-Bericht wurde zur Verarbeitung angenommen. |
204 |
No Content | Ein Formular wurde gelöscht. Die Antwort hat keinen Body. |
400 |
Bad Request | Ungültiges JSON, ein fehlendes Pflichtfeld, ein Wert mit falschem Typ oder außerhalb des zulässigen Bereichs, ein ungültiger Idempotency-Key oder keine Felder zum Aktualisieren. |
401 |
Unauthorized | Der API-Schlüssel fehlt, ist ungültig, wurde gelöscht oder neu generiert, oder ein OAuth-Token ist abgelaufen. Siehe Authentifizierung. |
402 |
Payment Required | Der Workspace hat nicht genug Credits für die Sendung, das erneute Senden oder die Verifizierung. |
403 |
Forbidden | Der Scope des Schlüssels erlaubt den Endpunkt nicht, ein auf eine Domain beschränkter Schlüssel hat von einer anderen Domain gesendet, der Workspace ist gesperrt oder noch nicht verifiziert, die Versanddomain ist pausiert, oder die Funktion erfordert einen höheren Tarif. |
404 |
Not Found | Das Objekt existiert in diesem Workspace nicht, oder ein Vorlagen-Alias hat keine veröffentlichte Version. |
409 |
Conflict | Ein Objekt mit demselben Namen oder derselben E-Mail-Adresse existiert bereits, oder eine Anfrage mit demselben Idempotency-Key läuft noch. |
413 |
Payload Too Large | Die zusammengesetzte E-Mail ist größer als 40 MB, oder ein hochgeladener DMARC-Bericht ist größer als 10 MB. |
422 |
Unprocessable Entity | Die Anfrage ist gültig, lässt sich aber gerade nicht ausführen: Die Domain in from ist nicht verifiziert, ein Anhang konnte nicht abgerufen werden, der Status der E-Mail erlaubt kein Stornieren oder erneutes Senden, ihr Inhalt wurde bereits gelöscht, oder ein Tariflimit wurde erreicht. |
429 |
Too Many Requests | Der Workspace hat sein Versandlimit pro Sekunde, sein Tageslimit oder das stündliche Limit für Weiterleitungen erreicht. |
500 |
Internal Server Error | Auf unserer Seite ist etwas fehlgeschlagen. Wiederholen Sie die Anfrage mit Backoff, und wenden Sie sich an den Support, wenn der Fehler bestehen bleibt. |
503 |
Service Unavailable | Ein vorübergehender Ausfall einer Abhängigkeit, etwa des Idempotenzspeichers oder der Authentifizierungsdatenbank. Wiederholen Sie die Anfrage mit Backoff. |
Häufige Fehler und ihre Behebung
| Status | error |
Ursache | Lösung |
|---|---|---|---|
400 |
Validation failed |
Einer Sendung fehlt from, to, subject oder Inhalt, oder sie enthält eine ungültige Adresse oder einen ungültigen Anhang. |
Beheben Sie jeden Punkt, der in validation_errors aufgeführt ist. |
400 |
Invalid JSON in request body (in message) |
Der Body ist kein gültiges JSON. | Prüfen Sie Anführungszeichen und abschließende Kommas, und senden Sie Content-Type: application/json. |
400 |
Invalid Idempotency-Key |
Der Schlüssel ist länger als 256 Zeichen oder enthält andere Zeichen als Buchstaben, Ziffern, - und _. |
Verwenden Sie eine UUID oder einen ähnlich sicheren Wert. |
402 |
Insufficient credits |
Die Credits sind aufgebraucht. Jeder Empfänger kostet einen Credit. | Kaufen Sie Credits oder aktivieren Sie die automatische Aufladung. |
403 |
Workspace not verified |
Der Workspace ist im Sandbox-Modus, und ein Empfänger ist kein Mitglied des Workspaces. | Beantragen Sie den Produktionszugang. |
403 |
Domain paused |
Der Versand von dieser Domain ist wegen ihrer Versandgesundheit pausiert. | Beheben Sie das Bounce- oder Beschwerdeproblem und wenden Sie sich dann an den Support. |
403 |
Domain not authorized |
Der API-Schlüssel ist auf eine andere Versanddomain beschränkt. | Senden Sie von der Domain des Schlüssels oder verwenden Sie einen anderen Schlüssel. |
403 |
plan_required |
Die Funktion, etwa DMARC-Berichte oder Webhook-Filter, ist in Ihrem Tarif nicht enthalten. | Wechseln Sie in den Tarif aus required_plan. |
403 |
mjml_alpha |
Die Anfrage erstellt oder ändert MJML oder ruft einen MJML-Endpunkt auf. MJML ist in der Alpha und steht nur dem Emailit-Team offen. | Verwenden Sie einen anderen Editor oder Inhaltstyp. Siehe MJML-Editoren und API. |
404 |
Template not found |
Die Vorlagen-ID existiert nicht, oder der Alias hat keine veröffentlichte Version. | Veröffentlichen Sie eine Version der Vorlage. |
409 |
… already exists |
Sie haben ein Objekt mit einem Namen oder einer E-Mail-Adresse erstellt, die bereits vergeben ist. | Verwenden Sie das Objekt in existing oder wählen Sie einen anderen Namen. |
409 |
Idempotency key in progress |
Eine andere Anfrage mit demselben Schlüssel ist noch nicht abgeschlossen. | Warten Sie einen Moment und wiederholen Sie die Anfrage mit demselben Schlüssel. |
413 |
Message too large |
Die E-Mail ist einschließlich Anhängen größer als 40 MB. | Senden Sie große Dateien als Links statt als Anhänge. |
422 |
Domain not verified |
Die Adresse in from gehört nicht zu einer verifizierten Versanddomain dieses Workspaces. |
Verifizieren Sie die Domain oder ändern Sie from. |
422 |
Attachment error |
Die url eines Anhangs konnte nicht innerhalb von 30 Sekunden abgerufen werden, ist nicht erreichbar oder ist größer als 25 MB. |
Prüfen Sie, ob die URL öffentlich und die Datei klein genug ist, oder senden Sie stattdessen content. |
422 |
Cannot cancel email, Cannot retry email, Cannot update email |
Der Status der E-Mail erlaubt die Aktion nicht, ihr geplanter Zeitpunkt ist weniger als 3 Minuten entfernt, oder ihr Inhalt wurde gelöscht. | Prüfen Sie den status der E-Mail. Die Regeln finden Sie beim jeweiligen Endpunkt. |
422 |
Page is too deep |
Sie haben bei Events auflisten über Offset 2.500 hinaus geblättert. | Grenzen Sie die Ergebnisse mit den Filtern type oder created_at ein. |
429 |
Rate limit exceeded, Daily limit exceeded |
Der Workspace hat sein Versandlimit erreicht. | Warten Sie retry_after Sekunden. Siehe Rate Limits. |
Sicher wiederholen
- Wiederholen Sie Anfragen mit den Antworten
429,500und503nach einer Wartezeit. Verwenden Sie den Headerretry-after, wenn er vorhanden ist, andernfalls exponentielles Backoff. Beispielcode finden Sie unter Rate Limits. - Wiederholen Sie Anfragen mit anderen
4xx-Fehlern nicht unverändert. Sie schlagen auf dieselbe Weise fehl, bis Sie die Anfrage korrigieren. - Wenn Sie eine Sendung nach einem Timeout oder einem
5xx-Fehler wiederholen, verwenden Sie denselbenIdempotency-Keyerneut, damit die E-Mail nicht zweimal gesendet wird.