エラーとステータスコード
CLI の終了コード、SDK 例外、REST API エラーレスポンスのリファレンス。
最終更新
役に立ちましたか?
CLI の終了コード、SDK 例外、REST API エラーレスポンスのリファレンス。
Roboflowの開発者向けツールは、少数のエラーカテゴリを共有しており、各ツールで異なる形で表示されます。このページは、それらを横断的に参照するためのものです。
CLIは4つの明確に定義された終了コードを使用するため、スクリプトやAIエージェントは出力を解析せずに結果に応じて分岐できます:
0
成功
1
一般エラー(不正な入力、ネットワーク障害、予期しないサーバー応答)
2
認証失敗(APIキーがない、または無効、ワークスペースが選択されていない)
3
リソースが見つかりません(project、version、workflow、deployment などが存在しない、またはキーから見えない)
では、 --json モードでは、CLIは成功時に構造化された出力をstdoutへ書き込み、失敗時にJSONエラーオブジェクトをstderrへ書き出します。そのためstdoutは空のままになり、パイプラインを安全に解析できます:
roboflow --json project get nonexistent 2>error.json
echo $? # 3
cat error.json
# {"error": {"message": "Project 'nonexistent' not found", "hint": "'roboflow project list' を実行してプロジェクトを確認してください。"}}Python SDKは失敗時にPython例外を送出します。最もよく遭遇する型は次のとおりです:
RuntimeError
操作が論理的に不正です - たとえば、 restore() Trash にないプロジェクトに対して呼び出す場合や、まだ生成されていない version でトレーニングする場合など。
ValueError
渡された引数が不正な形式です - たとえば、認識されない model_format の Version.download().
roboflow.adapters.rfapi.RoboflowError
REST APIが2xx以外の応答を返しました。例外の文字列にはサーバーのエラー本文が含まれます。
roboflow.adapters.deploymentapi.DeploymentApiError
に相当します RoboflowError 専用デプロイメントサービス向けのものです。
requests.exceptions.HTTPError / ConnectionError
ネットワークレベルの障害(DNS、TLS、タイムアウト)。
経験則としては、 RuntimeError は論理的な問題に対して、 RoboflowError はサーバー側の拒否に対してキャッチし、それ以外はすべてそのまま伝播させます。
参照 ログ記録とデバッグ 例外だけでは不十分な場合に、基盤となるHTTPリクエストを確認する方法について。
REST APIは標準のHTTPステータスコードを使用します。Roboflow固有の動作:
200
成功。レスポンス本文はJSONです。
204
成功、本文なし(いくつかの PATCH / DELETE エンドポイントで使用されます)。
400
不正なリクエスト - 必須フィールドの欠落、形状の不正、無効な値。
401
認証失敗。 api_key、無効なもの、またはその操作に必要なスコープを持たないキーです。
402
支払いが必要です。ワークスペースのプランでは要求された操作をサポートしていません。推論の場合、モデルまたはアーキテクチャがクレジットベースのプランでのみ利用可能であるか、ワークスペースの月次Hosted API推論クォータに達したことを意味します。レスポンス本文には AccessException のエラー型が含まれます。
403
禁止されています。キーは認証されましたが、対象のワークスペースまたはリソースへのアクセス権がありません。
404
見つかりません。ワークスペース、project、version、workflow、その他のリソースが存在しないか(またはキーから見えません)。
409
競合。リソースが、要求された操作を妨げる状態にあります(たとえば、親プロジェクトもTrashにあるversionを復元しようとした場合など)。
423
ロックされています。ワークスペースの請求が一時停止されています - 理由はレスポンス本文を参照してください。
429
レート制限されています。減速し、指数バックオフで再試行してください。
5xx
サーバーエラー。バックオフ付きで安全に再試行できます。
エラーは、少なくともトップレベルの error フィールドを含むJSONで返されます:
一部のエンドポイントには hint または構造化されたエラーオブジェクトも含まれます - 詳細は REST API の各エンドポイントのドキュメントを参照してください。
APIキーにはリソースごとのスコープがあります。書き込み操作での401は、多くの場合、キーに対応する *:update または *:write スコープがないことを意味します。たとえリソースを読み取れる場合でも同様です。参照先は スコープ付き API キー スコープの説明です。
APIキーがない / 無効
2
RoboflowError ("401")
401
リソースが見つからない
3
RoboflowError ("404") / RuntimeError
404
プラン制限 / クォータ超過
1
RoboflowError ("402")
402
不正な入力 / 不正なリクエスト
1
ValueError / RoboflowError ("400")
400
サーバーエラー / 一時的
1
RoboflowError ("5xx")
5xx
リトライを設定する際はこの表を使ってください: 2 / 401 は自動再試行してはいけません(キーがさらに有効になることはありません)、a 3 / 404 は再試行してはいけませんが、a 1 5xxレスポンスからのものは、バックオフ付き再試行の候補です。
最終更新
役に立ちましたか?
役に立ちましたか?
from roboflow.adapters import rfapi
try:
project.restore()
except RuntimeError as e:
print(f"復元できません: {e}")
except rfapi.RoboflowError as e:
print(f"サーバーがリクエストを拒否しました: {e}"){
"error": "Project 'nonexistent' not found"
}