Zum Inhalt springen

API-Fehler und Antworten

Dieser Referenzartikel behandelt die verschiedenen Fehler und Server-Antworten, die bei der Verwendung der Braze API auftreten können, und wie Sie diese beheben können.

Serverantworten

Wenn Ihr POST-Payload von unseren Servern akzeptiert wurde, werden erfolgreiche Nachrichten mit der folgenden Antwort quittiert:

{
  "message" : "success"
}

Beachten Sie, dass „success“ lediglich bedeutet, dass der RESTful-API-Payload korrekt formatiert war und an unsere Push-Benachrichtigungs-, E-Mail- oder andere Messaging-Dienste weitergeleitet wurde. Es bedeutet nicht, dass die Nachrichten tatsächlich zugestellt wurden, da zusätzliche Faktoren die Zustellung verhindern können (z. B. könnte ein Gerät offline sein, das Push-Token könnte von Apples Servern abgelehnt werden, oder Sie haben möglicherweise eine unbekannte Nutzer-ID angegeben).

Warum gibt meine Anfrage „success“ zurück, obwohl keine Nachricht zugestellt wurde?

Eine message: success- oder 2XX-Antwort bedeutet, dass Braze die Anfrage für die betroffenen Endpunkte akzeptiert und in die Warteschlange eingereiht hat – nicht, dass jede Empfängerin bzw. jeder Empfänger eine Nachricht erhalten hat. Beim Messaging hängt die Zustellung weiterhin von der Kanalberechtigung, Tokens, Anbieterfehlern und der Inhaltsvalidierung ab. Informationen zu HTTP-Fehlern, die den Versand blockieren, finden Sie in der Tabelle der schwerwiegenden Fehler. Nachgelagerte Zustellungsmetriken finden Sie in Ihren Campaign- oder Canvas-Analytics.

Bei Endpunkten wie /users/identify, die keine Nachrichten senden, bedeutet eine Erfolgsantwort lediglich, dass Braze die Anfrage zur Verarbeitung akzeptiert hat. Wenn kein:e Nutzer:in mit dem angegebenen Alias existiert oder der Alias zu einem Profil gehört, das bereits eine external_id hat, überspringt Braze die Identifizierung. Die API gibt dennoch die anfängliche Erfolgsantwort zurück; es wird kein Fehler ausgegeben, der darauf hinweist, dass der Alias nicht zugeordnet wurde. Da alias_name case-sensitiv ist, führt eine Abweichung in der Groß- und Kleinschreibung zum selben Ergebnis.

Wenn Ihre Nachricht erfolgreich ist, aber nicht schwerwiegende Fehler enthält, erhalten Sie die folgende Antwort:

{
  "message" : "success", "errors" : [<minor error message>]
}

Im Erfolgsfall werden alle Nachrichten, die nicht von einem Fehler im errors-Array betroffen sind, weiterhin zugestellt. Wenn Ihre Nachricht einen schwerwiegenden Fehler enthält, erhalten Sie die folgende Antwort:

{
  "message" : <fatal error message>, "errors" : [<minor error message>]
}

Antworten für nachverfolgte Sende-IDs

Analytics sind immer für Campaigns verfügbar. Darüber hinaus sind Analytics für eine bestimmte Campaign-Sendeinstanz verfügbar, wenn die Campaign als Broadcast gesendet wird. Wenn Tracking für eine bestimmte Campaign-Sendeinstanz verfügbar ist, erhalten Sie die folgende Antwort:

{
  "message": "success", "send_id" : "example_send_id"
}

Die bereitgestellte Sende-ID kann als Parameter für den /send/data_series-Endpunkt verwendet werden, um sendespezifische Analytics abzurufen.

Fehler

Das Statuscode-Element einer Server-Antwort ist eine dreistellige Zahl, wobei die erste Ziffer des Codes die Klasse der Antwort definiert.

  • Die 2XX-Klasse des Statuscodes (nicht schwerwiegend) zeigt an, dass Ihre Anfrage erfolgreich empfangen, verstanden und akzeptiert wurde.
  • Die 4XX-Klasse des Statuscodes (schwerwiegend) weist auf einen Client-Fehler hin. Im Chart der schwerwiegenden Fehler finden Sie eine vollständige Liste der 4XX-Fehlercodes und Beschreibungen.
  • Die 5XX-Klasse des Statuscodes (schwerwiegend) weist auf einen Server-Fehler hin. Es gibt mehrere mögliche Ursachen, z. B. ist der Server, auf den Sie zugreifen möchten, nicht in der Lage, die Anfrage auszuführen, der Server befindet sich in Wartung und kann die Anfrage nicht ausführen, oder der Server verzeichnet ein hohes Traffic-Aufkommen. In diesem Fall empfehlen wir, Ihre Anfrage mit exponentiellem Backoff erneut zu versuchen. Im Falle eines Vorfalls oder Ausfalls kann Braze keine REST-API-Aufrufe wiederholen, die während des Vorfallszeitraums fehlgeschlagen sind. Sie müssen alle während des Vorfallszeitraums fehlgeschlagenen Aufrufe selbst erneut senden.
    • Ein 502-Fehler ist ein Fehler, bevor die Anfrage den Zielserver erreicht.
    • Ein 503-Fehler bedeutet, dass die Anfrage den Zielserver erreicht hat, aber die Anfrage nicht abgeschlossen werden kann, weil nicht genügend Kapazität vorhanden ist, ein Netzwerkproblem vorliegt oder Ähnliches.
    • Ein 504-Fehler zeigt an, dass ein Server keine Antwort von einem anderen vorgelagerten Server erhalten hat.

Schwerwiegende Fehler

Die folgenden Statuscodes und zugehörigen Fehlermeldungen werden zurückgegeben, wenn Ihre Anfrage einen schwerwiegenden Fehler verursacht.

Fehlercode Beschreibung
5XX Internal Server Error Versuchen Sie Ihre Anfrage mit exponentiellem Backoff erneut.
400 Bad Request Fehlerhafte Syntax. Ungültiges JSON gibt HTTP 400 zurück. Das Feld error kann eine Meldung enthalten, dass Sie gültiges application/json im Anfragekörper übergeben müssen, oder Error while parsing request body. Please check your syntax. Siehe Fehler beim Parsen des Anfragekörpers.
400 No Recipients Es sind keine externen IDs, Segment-IDs oder Push-Token in der Anfrage vorhanden.
400 Invalid Campaign ID Für die angegebene Campaign-ID wurde keine Messaging-API-Campaign gefunden.
400 Message Variant Unspecified Sie geben eine Campaign-ID an, aber keine Nachrichtenvarianten-ID.
400 Invalid Message Variant Sie haben eine gültige Campaign-ID angegeben, aber die Nachrichtenvarianten-ID stimmt mit keiner der Nachrichten dieser Campaign überein.
400 Mismatched Message Type Sie haben eine Nachrichtenvariante des falschen Nachrichtentyps für mindestens eine Ihrer Nachrichten angegeben.
400 Invalid Extra Push Payload Sie geben den Schlüssel extra für apple_push oder android_push an, aber es handelt sich nicht um ein Dictionary.
400 Max Input Length Exceeded Für /users/track wird dieser Fehler verursacht, wenn die maximale Anzahl der in einer einzelnen Anfrage zulässigen Objekte überschritten wird. Das Limit hängt vom Rate-Limit-Modell ab: Für die meisten Kund:innen unterstützt jede Anfrage bis zu 75 Objekte insgesamt, verteilt auf attributes, events und purchases. Für Kund:innen mit älteren Rate-Limits unterstützt jedes Array bis zu 75 Objekte unabhängig voneinander. Weitere Informationen finden Sie unter POST: Nutzer:innen erstellen und aktualisieren.
400 The max number of external_ids and aliases per request was exceeded Wird verursacht, wenn mehr als 50 externe IDs aufgerufen werden.
400 The max number of ids per request was exceeded Wird verursacht, wenn mehr als 50 externe IDs aufgerufen werden.
400 No message to send Es wurde kein Payload für die Nachricht angegeben.
400 Slideup Message Length Exceeded Die Slideup-Nachricht enthält mehr als 140 Zeichen.
400 Apple Push Length Exceeded Der JSON-Payload ist größer als 1.912 Bytes.
400 Android Push Length Exceeded Der JSON-Payload ist größer als 4.000 Bytes.
400 Bad Request Der send_at-Datetime-Wert kann nicht geparst werden.
400 Bad Request In Ihrer Anfrage ist in_local_time auf „true“ gesetzt, aber time liegt bereits in der Zeitzone Ihres Unternehmens in der Vergangenheit.
401 Unauthorized Ungültiger API-Schlüssel. Häufige Ursachen sind:

- Fehlender oder fehlerhafter Authorization-Header. Der Header-Wert muss Bearer gefolgt von einem Leerzeichen und Ihrem API-Schlüssel sein: Authorization: Bearer YOUR-API-KEY. Häufige Fehler sind das Weglassen von Bearer, das Weglassen des Schlüssels nach Bearer oder das Einschließen des Werts in Anführungszeichen.
- Falscher REST-Endpunkt. Sie senden die Anfrage an die falsche Instanz. Wenn sich Ihr Konto beispielsweise auf unserer EU-Instanz befindet (https://dashboard-01.braze.eu), sollte die Anfrage an https://rest.fra-01.braze.eu gesendet werden.
- Unzureichende Berechtigungen. Jeder API-Schlüssel ist auf einen bestimmten Workspace und bestimmte Berechtigungen beschränkt. Überprüfen Sie die Berechtigungen des Schlüssels unter Einstellungen > API-Schlüssel im Dashboard.
- Falscher API-Schlüssel. API-Schlüssel sind workspace-spezifisch. Ein Schlüssel aus einem Workspace kann nicht zur Authentifizierung von Anfragen für einen anderen Workspace verwendet werden.
403 Forbidden Der Tarifplan unterstützt dies nicht, oder das Konto ist anderweitig deaktiviert.
403 Access Denied Der von Ihnen verwendete REST-API-Schlüssel verfügt nicht über ausreichende Berechtigungen. Häufige Ursachen sind:
  • API-Schlüssel wurde vor dem Feature erstellt. Wenn der API-Schlüssel erstellt wurde, bevor ein Feature veröffentlicht wurde (z. B. Abo-Gruppen oder Kataloge), erbt der Schlüssel diese Berechtigungen nicht automatisch. Erstellen Sie einen neuen API-Schlüssel mit den erforderlichen Berechtigungen unter Einstellungen > API-Schlüssel.
  • Fehlende endpunktspezifische Berechtigung. Jeder API-Endpunkt erfordert einen bestimmten Berechtigungsbereich (z. B. users.track oder email.status). Überprüfen Sie, ob die Berechtigungen des Schlüssels mit dem aufgerufenen Endpunkt übereinstimmen.
  • Abschließender Schrägstrich oder Tippfehler in der URL. Beispielsweise kann /users/track/ (mit abschließendem Schrägstrich) anstelle von /users/track unerwartete Fehler verursachen.
404 Not Found Ungültige URL.
415 Unsupported Media Type Der Content-Type-Anfrage-Header fehlt oder ist falsch. Fügen Sie auf der Seite Einstellungen Content-Type mit dem Wert application/json hinzu.
429 Rate Limited Rate-Limit überschritten.

Fehler beim Parsen des Anfragekörpers

Braze gibt HTTP 400 zurück, wenn der Anfragekörper kein gültiges JSON ist. Dies gilt für REST-Endpunkte, die einen JSON-Body akzeptieren, wie POST, PUT und PATCH.

Das Feld error enthält eine Meldung, dass Sie gültiges application/json im Anfragekörper übergeben müssen. Möglicherweise sehen Sie auch Error while parsing request body. Please check your syntax.

Häufige Ursachen sind nachgestellte Kommas, Kommentare innerhalb von JSON, Strings in einfachen Anführungszeichen, eine zusätzliche öffnende { vor dem Payload oder das Senden eines verketteten Strings anstelle eines JSON-kodierten Objekts.

Bevor Sie es erneut versuchen:

  1. Validieren Sie den Payload mit einem JSON-Linter.
  2. Setzen Sie Content-Type: application/json und senden Sie UTF-8-kodiertes JSON.
  3. Stellen Sie sicher, dass Ihr HTTP-Client das Objekt JSON-kodiert, anstatt rohe Strings zu verketten.

Informationen zur Payload-Größe und den Objektlimits pro Anfrage für /users/track finden Sie unter Warum erhalte ich 400 Bad Request mit einem Syntaxfehler oder Parse-Fehler?.

New Stuff!