メインコンテンツへスキップ
記載されているエラーは、いずれも同じ 3 フィールドの JSON 構造で返ります。
{
  "code": "invalid_param",
  "message": "user is required",
  "status": 400
}
status は HTTP ステータスと同じ値です。code は分岐処理に使える安定した識別子で、message は人間が読むための詳細です。各エンドポイントページには、返る可能性のある code がすべて記載されています。

ステータスクラスの概要

ステータス意味主な code
400リクエストまたはアプリの設定が無効invalid_parambad_requestapp_unavailable、プロバイダーエラー(後述)
401API キーの欠落または無効unauthorized
403このキーでは実行できない操作(アクセス制限)forbidden
404リソースが存在しないか、このキーまたは user からは見えないnot_found
413 / 415ファイルが大きすぎるか、サポート外のタイプfile_too_largeunsupported_file_type
429このアプリへの同時リクエストが多すぎるtoo_many_requests
500Dify 側での失敗internal_server_error

プロバイダーエラーは設定の問題

よくある 2 つの 400 code は、リクエストではなくアプリのモデル設定の問題を示します。
  • provider_not_initialize:有効なモデル認証情報がない
  • completion_request_error:テキスト生成リクエストの実行中にエラーが発生した
これらのエラーは再試行しても解決しません。Dify でアプリのモデル設定を修正してください。

レート制限

429 の codetoo_many_requests で、同時実行数の上限を示します。このアプリへの同時リクエストが今は多すぎる状態です。バックオフして再試行してください。

ストリーム内のエラー

ストリームが開いた時点で、HTTP ステータスはすでに 200 です。失敗は error イベントとして届き、ストリームを終了させます。イベントの code の値はこのページに記載のものと同じで、同じルールで分類できます。詳細は ストリーミングレスポンスの処理 を参照してください。

再試行の判断

  • バックオフして再試行too_many_requests500、ネットワーク障害。
  • そのまま再試行しない:バリデーションエラー(まずリクエストを修正)と認可の失敗。
  • 再試行ではなく修正:再開呼び出しの 404 は、user の誤りか実行が存在しないことを意味します。再試行せず、識別子を修正してください。