APIのエラーとレスポンス
この参考記事では、Braze APIの使用中に発生する可能性のあるさまざまなエラーとサーバーレスポンス、およびそれらのトラブルシューティング方法について説明する。
サーバーの応答
POSTペイロードがサーバーに受け入れられた場合、成功したメッセージには次のようなレスポンスが返される:
1
2
3
{
"message" : "success"
}
成功とは、RESTful API ペイロードが正しく形成され、プッシュ通知やメール、またはその他のメッセージングサービスに渡されたことだけを意味することに注意してください。これは、メッセージが実際に配信されたことを意味するものではない。メッセージが配信されるのを妨げる要因が追加される可能性があるからだ(たとえば、デバイスがオフラインになっていたり、プッシュトークンがアップルのサーバーによって拒否されたり、不明なユーザーIDを入力した可能性がある)。
メッセージは成功したが、致命的でないエラーがあった場合、次のようなレスポンスが返ってくる:
1
2
3
{
"message" : "success", "errors" : [<minor error message>]
}
成功した場合、errors
配列内のエラーの影響を受けなかったメッセージはすべて配信されます。メッセージに致命的なエラーがあった場合、次のような応答が返ってくる:
1
2
3
{
"message" : <fatal error message>, "errors" : [<minor error message>]
}
追跡された送信 ID に対する応答
アナリティクスは常にキャンペーンで利用できる。さらに、キャンペーンがブロードキャストとして送信された場合、特定のキャンペーン送信インスタンスに対してアナリティクスが利用できる。特定のキャンペーン送信インスタンスでトラッキングが利用可能な場合、以下のようなレスポンスが返ってくる:
1
2
3
{
"message": "success", "send_id" : "example_send_id"
}
指定された送信 id は、/send/data_series
エンドポイントのパラメーターとして使用して、送信固有の分析をプルすることができます。
エラー数
サーバーレスポンスのステータスコード要素は3桁の数字であり、コードの最初の桁がレスポンスのクラスを定義する。
- 2XX クラスのステータスコード (致命的ではない) は、リクエストが正常に受信され、理解され、受け入れられたことを示します。
- 4XX クラスのステータスコード (致命的) は、クライアントのエラーを示します。4XXエラーコードの全リストと説明については、致命的エラーチャートを参照のこと。
- 5XX クラスのステータスコード (致命的) は、サーバーエラーを示します。考えられる原因はいくつかあります。たとえば、アクセスしようとしているサーバーがリクエストを実行できない、サーバーがメンテナンス中でリクエストを実行できない、サーバーのトラフィックが高いレベルになっているなどです。このような場合、エクスポネンシャルバックオフでリクエストを再試行することを推奨する。インシデントまたは停止が発生した場合、Braze はインシデント期間中に失敗した REST API 呼び出しを再実行することはできません。インシデント期間中に失敗した呼び出しを再試行する必要があります。
致命的なエラー
リクエストが致命的なエラーに遭遇した場合、以下のステータスコードと関連するエラーメッセージが返される。
以下のエラーコードはすべて、メッセージが送信されないことを示している。
エラーコード | 説明 |
---|---|
5XX Internal Server Error |
指数バックオフでリクエストを再試行してください。 |
400 Bad Request |
構文が正しくありません。 |
400 No Recipients |
リクエストに外部 ID やセグメント ID、プッシュトークンがありません。 |
400 Invalid Campaign ID |
入力されたキャンペーンIDに該当するメッセージングAPIキャンペーンが見つからなかった。 |
400 Message Variant Unspecified |
キャンペーンIDは提供されているが、メッセージのバリエーションIDは提供されていない。 |
400 Invalid Message Variant |
有効なキャンペーンIDを入力したが、メッセージのバリエーションIDがそのキャンペーンのどのメッセージとも一致しない。 |
400 Mismatched Message Type |
少なくとも1つのメッセージに、誤ったメッセージタイプのメッセージバリエーションを指定しました。 |
400 Invalid Extra Push Payload |
apple_push または android_push のいずれかに extra キーを指定しますが、これはディクショナリではありません。 |
400 Max Input Length Exceeded |
/users/track エンドポイントにヒットしたときに、75を超える外部ID を呼び出すことによって発生します。 |
400 The max number of external_ids and aliases per request was exceeded |
50以上の外部IDを呼び出したことが原因。 |
400 The max number of ids per request was exceeded |
50以上の外部IDを呼び出したことが原因。 |
400 No message to send |
メッセージにペイロードが指定されていない。 |
400 Slideup Message Length Exceeded |
スライドアップメッセージには140文字以上が含まれる。 |
400 Apple Push Length Exceeded |
JSONペイロードは1,912バイトを超える。 |
400 Android Push Length Exceeded |
JSONペイロードは4,000バイトを超える。 |
400 Bad Request |
send_at 日時を解析できません。 |
400 Bad Request |
リクエストでは、in_local_time は true ですが、会社のタイムゾーンで time が経過しています。 |
401 Unauthorized |
API キーが無効である。 |
403 Forbidden |
料金プランが対応していない、またはアカウントが無効になっている。 |
403 Access Denied |
使用しているREST APIキーに十分なパーミッションがないため、設定ページでAPIキーのパーミッションを確認する。 |
404 Not Found |
無効な URL です。 |
429 Rate Limited |
レート制限を超える。 |