エラーコード
REST API エラーコードのリストと、エラーがアプリケーションに返される方法を以下で説明します。
例外の処理とログ
Marketo 向けに開発を行う場合、予期しない例外が発生した際にリクエストと応答がログに記録されることが重要です。期限切れの認証などの特定のタイプの例外は、再認証によって安全に処理できますが、他の例外ではサポートのインタラクションが必要になる場合があり、このシナリオでは常にリクエストと応答がリクエストされます。
エラータイプ
Marketo REST API は、通常の操作では次の 3 つの異なるタイプのエラーを返します。
- HTTP レベル:これらのエラーは、
4xx
コードで示されます。 - 応答レベル:これらのエラーは、JSON 応答の "errors" 配列に含まれます。
- レコードレベル:これらのエラーは、JSON 応答の "result" 配列に含まれ、"status" フィールドと "reasons" 配列を使用して個々のレコードごとに示されます。
応答レベルおよびレコードレベルのエラータイプの場合、HTTP ステータスコード 200 が返されます。すべてのエラータイプについて、HTTP 理由フレーズはオプションであり、変更される可能性があるので、評価しないでください。
HTTP レベルのエラー
通常の操作状況では、Marketo は、413 Request Entity Too Large
と 414 Request URI Too Long
の 2 つの HTTP ステータスコードエラーのみを返します。これらは両方とも、エラーをキャッチし、リクエストを変更して再試行することで復元できますが、スマートコードプラクティスを使用すれば、実際にこのような問題が発生することはありません。
リクエストペイロードが 1 MB を超える場合や、「リード読み込み」のケースで 10 MB を超える場合、Marketo は 413 を返します。ほとんどのシナリオでは、これらの制限に達する可能性はほとんどありませんが、リクエストのサイズを確認するチェックを追加し、制限を超える原因となるレコードを新しいリクエストに移動することで、エンドポイントからこのエラーが返される状況を防ぐことができます。
GET リクエストの URI が 8 KB を超えると 414 が返されます。これを回避するには、クエリ文字列の長さがこの制限を超えていないかどうかを確認します。リクエストが POST メソッドに変更される場合は、追加のパラメーター _method=GET
を指定して、クエリ文字列をリクエスト本文として入力します。これにより、URI の制限がなくなります。ほとんどの場合、この制限に達することはまれですが、GUID などの長い個別のフィルター値を持つ大量のレコードを取得する場合は、比較的よくで発生します。
ID エンドポイントは、401 Unauthorized エラーを返す場合があります。これは通常、クライアント ID やクライアント秘密鍵が無効であることが原因です。HTTP レベルのエラーコード
応答レベルのエラー
応答レベルのエラーは、応答の success
パラメーターが false に設定されている場合に発生し、次のように構造化されます。
{
"requestId": "e42b#14272d07d78",
"success": false,
"errors": [
{
"code": "601",
"message": "Unauthorized"
}
]
}
"errors" 配列の各オブジェクトには、601 から 799 までの引用符で囲まれた整数である code
と、エラーの理由をプレーンテキストで示す message
の 2 つのメンバーがあります。6xx コードは常に、リクエストが完全に失敗し、実行されなかったことを示します。例えば、601「アクセストークンが無効です」があります。これは、再認証して新しいアクセストークンをリクエストに渡すことで復元できます。7xx エラーは、データが返されなかったか、無効な日付が含まれている、必須パラメータが欠落しているなど、リクエストが誤ってパラメーター化されたことにより、リクエストが失敗したことを示します。
応答レベルのエラーコード
この応答コードを返す API 呼び出しは、毎日の割り当て量やレート制限に対してカウントされません。
テンプレートを使用せずにメールを作成しようとするなど、アセットの作成または更新の要件に違反しているので、呼び出しを実行できません。また、次の操作を実行しようとした際にも、このエラーが発生する可能性があります。
- ソーシャルコンテンツを含むランディングページのコンテンツを取得。
- 特定のアセットタイプを含むプログラムを複製(詳しくは、プログラムの複製を参照してください)。
- ドラフトのないアセット(つまり、既に承認済みのアセット)を承認。
レコードレベル record_level_errors
レコードレベルのエラーは、個々のレコードに対する操作は完了できなかったが、リクエスト自体は有効であったことを示します。レコードレベルのエラーを含む応答は、次のパターンに従います。
応答
{
"requestId":"e42b#14272d07d78",
"success":true,
"result":[
{
"id":50,
"status":"created"
},
{
"id":51,
"status":"created"
},
{
"status":"skipped",
"reasons":[
{
"code":"1005",
"message":"Lead already exists"
}
]
}
]
}
呼び出しの結果配列に含まれるレコードは、リクエストの入力配列と同じ方法で順序付けられます。
成功したリクエストの各レコードは、個別に成功または失敗する可能性があります。この結果は、応答の結果配列に含まれる各レコードのステータスフィールドで示されます。これらのレコードの "status" フィールドは "skipped" になり、"reasons" 配列が存在します。各理由には、"code" メンバーと "message" メンバーが含まれます。コードは常に 1xxx で、メッセージにはレコードがスキップされた理由が示されます。例えば、「リードを同期」リクエストの"action" が "createOnly" に設定されているが、送信済みレコードのキーの 1 つに対してリードが既に存在する場合です。この場合、コード 1005 が返され、上記のように「リードは既に存在します」というメッセージが表示されます。
レコードレベルのエラーコード
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3 9-row-3 10-row-3 11-row-3 12-row-3 13-row-3 14-row-3 15-row-3 16-row-3 17-row-3 18-row-3 19-row-3 20-row-3 21-row-3 22-row-3 23-row-3 24-row-3 25-row-3 26-row-3 27-row-3 28-row-3 29-row-3 30-row-3 31-row-3 32-row-3 33-row-3 34-row-3 35-row-3 36-row-3 37-row-3 html-authored no-header | ||
---|---|---|
応答コード | 説明 | コメント |
1001 | 無効な値「%s」。タイプ「%s」が必須です | パラメーター値のタイプが一致しない場合は、エラーが生成されます。例えば、整数パラメーターに指定された文字列値です。 |
1002 | 必須パラメーター「%s」の値がありません | リクエストに必須パラメーターがない場合は、エラーが生成されます |
1003 | 無効なデータ | 送信済みのデータが、指定されたエンドポイントまたはモードに対して有効なタイプではない場合(アクションが createOnly として指定されたリードに対して ID が送信された場合や、バッチキャンペーンでリクエストキャンペーンを使用している場合など)。 |
1004 | リードが見つかりません | syncLead に対して、アクションが “updateOnly” で、リードが見つからない場合 |
1005 | リードは既に存在します | syncLead に対して、アクションが “createOnly” で、リードが既に存在している場合 |
1006 | フィールド「%s」が見つかりません | 呼び出しに含まれるフィールドは、有効なフィールドではありません。 |
1007 | 複数のリードがルックアップ条件に一致しています | 複数のリードがルックアップ条件に一致しています。更新は、キーが単一のレコードに一致する場合にのみ実行できます |
1008 | パーティション「%s」へのアクセスが拒否されました | カスタムサービスのユーザには、レコードが存在するパーティションを持つワークスペースへのアクセス権がありません。 |
1009 | パーティション名を指定する必要があります | |
1010 | パーティションの更新は許可されていません | 指定されたレコードは別のリードパーティションに既に存在します。 |
1011 | フィールド「%s」はサポートされていません | ルックアップフィールドまたは「filterType」がサポートされていない標準フィールド(例:firstName、lastName)で指定されている場合 |
1012 | 無効な cookie 値「%s」 | 「cookie」パラメーターに無効な値を指定して、リードを関連付けを呼び出した場合に発生する可能性があります。 このエラーは、「filterType=cookies」と、「filterValues」パラメーターの無効な値を使用して、フィルタータイプによるリードを取得を呼び出した場合にも発生します。 |
1013 | オブジェクトが見つかりません | 「ID によるオブジェクト(リスト、キャンペーン)を取得」で、このエラーコードが返されます |
1014 | オブジェクトを作成できませんでした | オブジェクト(リスト)を作成できませんでした |
1015 | リードがリストにありません | 指定されたリードは、ターゲットリストのメンバーではありません |
1016 | 読み込みが多すぎます | キューに入れられた読み込みが多すぎます。最大 10 個まで許可されます |
1017 | オブジェクトは既に存在します | レコードが既に存在するので、作成に失敗しました |
1018 | CRM が有効になっています | インスタンスでネイティブ CRM 統合が有効になっているので、アクションを実行できませんでした。 |
1019 | 読み込み進行中 | ターゲットリストは既に読み込まれています |
1020 | プログラムする複製が多すぎます | サブスクリプションは、その日のスケジュールプログラムで割り当てられた「cloneToProgramName」の使用量に達しました |
1021 | 会社の更新は許可されていません | syncLead 中に会社の更新は許可されません |
1022 | オブジェクトが使用されています | オブジェクトが別のオブジェクトで使用されている場合、削除は許可されません |
1025 | プログラムステータスが見つかりません | 「リードのプログラムステータスを変更」に指定されたステータスは、プログラムのチャネルで使用可能なステータスと一致しませんでした。 |
1026 | カスタムオブジェクトが有効になっていません | インスタンスでカスタムオブジェクトの統合が有効になっていないので、アクションを実行できませんでした。 |
1027 | 最大アクティビティタイプ制限に達しました | サブスクリプションは、使用可能なカスタムアクティビティタイプの最大数に達しました。 |
1028 | 最大フィールド制限に達しました | カスタムアクティビティには、最大 20 個のセカンダリ属性を設定できます。 |
1029 |
|
|
1035 | サポートされていないフィルタータイプ | 一部のサブスクリプションでは、updatedAt、smartListId、smartListName のリードの一括抽出フィルタータイプはサポートされていません。 |
1036 | 入力に重複したオブジェクトが見つかりました | 同じ外部キーを使用して 2 つ以上のレコードを更新する呼び出しが行われました。例えば、複数の会社に対して同じ externalCompanyId を使用する「会社を同期」呼び出しです。 |
1037 | リードはスキップされました | リードは、既にこのステータスにあるか、このステータスを過ぎているので、スキップされました。 |
1042 | 無効な runAt の日付 | 「キャンペーンをスケジュール」に指定した runAt の日付が将来の遠すぎる日付でした(最大 2 年)。 |
1048 | カスタムオブジェクトの「ドラフトを破棄」に失敗しました | カスタムオブジェクトのドラフトバージョンを破棄する呼び出しが実行されました。 |
1049 | アクティビティを作成できませんでした | 属性の配列が長すぎます。 レコードに渡された属性の配列が最大長の 65536 バイトを超えました |
1076 | mergeInCRM フラグを使用したリードを結合呼び出しは 4 です。 | 重複したレコードを作成しています。代わりに既存のレコードを使用することをお勧めします。 これは、Salesforce で結合する際に Marketo が受信するエラーメッセージです。 |
1077 | 「SFDC フィールド」の長さが原因で、リードを結合呼び出しに失敗しました | mergeInCRM が true に設定された「リードを結合」呼び出しは、「SFDC フィールド」が許可された文字数の制限を超えたので失敗しました。修正するには、「SFDC フィールド」の長さを短くするか、mergeInCRM を false に設定します。 |
1078 | エンティティが削除された、リード/取引先責任者ではない、またはフィールドフィルター条件が一致しないので、リードを結合呼び出しが失敗しました。 | 結合失敗、ネイティブに同期された CRM で結合操作を実行できません これは、Salesforce で結合する際に Marketo が受信するエラーメッセージです。 |
1079 | 重複したレコードでパーソナライズされた URL の競合が発生したため、 リードを結合呼び出しに失敗しました | リードの結合コールで、パーソナライズされた同じ URL を持つ多くのリードが指定されました。 これを解決するには、Marketo Engage ユーザーインターフェイスを使用して、これらのレコードを結合します。 |