一般的な HTTP エラーと SDK の例外については、共通のエラーコードガイドを参照してください。
エラーの確認方法
リクエストが失敗した場合は、HTTP レスポンスを確認してください。ターンの実行中や環境のセットアップ中に失敗した場合は、イベントと保存済みの状態を確認してください。
| 失敗箇所 | 確認方法 |
|---|---|
| API リクエスト | HTTP ステータスとレスポンスの error オブジェクトを確認します。 |
| ターン | agent.session.turn.failed を受信したら、ターンを取得し、status と error を確認します。 |
| セッション | agent.session.failed を受信したら、セッションを取得し、status と error を確認します。 |
| 環境 | environment.error の内容を agent.session.environment.failed イベントで確認します。サンドボックスのトラブルシューティングを参照してください。 |
構造化されたエラーでは、アプリケーション内の判定に error.code を使い、失敗の理由を説明するには error.message を使います。リクエストの検証エラーでは、error.param から修正すべきフィールドを特定できる場合があります。未知のコードを受け取った場合や param がない場合でも、エラーハンドラーが正常に動作するようにしてください。
ベータ版 API(OpenAI-Beta: agents=v1)では、セッションの error はメッセージ文字列または null です。セッションが失敗したときのエラーコードは、失敗に伴って送られる SSE の error イベントで確認してください。
API リクエストのエラー
これらは Agents API へのリクエストに関するエラーです。処理開始後に返されるターンのエラーとは区別されます。
| コード | 概要 |
|---|---|
400: invalid_request_error |
原因: 入力または設定値が無効か、大きすぎます。 対処方法: error.param または error.message が示すフィールドを修正してください。無効な入力の修正を参照してください。 |
400: invalid_beta |
原因: OpenAI-Beta ヘッダーの値が無効です。 対処方法: 使用している API バージョンで必要なヘッダーを確認してください。 |
400: agent_not_persisted |
原因: 指定した agent_id は、そのセッション内でのみ使用できるエージェントの ID です。 対処方法: セッション間で再利用できるエージェントを作成して保存し、その ID を使用してください。 |
400: invalid_otlp_endpoint, invalid_otlp_header |
原因: トレーシングのエンドポイントまたはヘッダーが無効です。 対処方法: トレーシングの設定を修正してください。 |
401: unauthorized、403: forbidden |
原因: 認証に失敗したか、呼び出し元にアクセス権限がありません。 対処方法: 共通ガイドの認証と権限に関する説明を参照してください。 |
404: not_found_error, model_not_found |
原因: このリクエストでは、指定したリソースまたはモデルを利用できません。 対処方法: ID、モデル、プロジェクトを確認し、リソースが削除されていないか調べてください。 |
409: conflict_error |
原因: 操作がリソースの現在の状態と競合しています。 対処方法: 再試行する前に、メッセージを読み、リソースの現在の状態を取得してください。 |
409: executor_version_incompatible |
原因: エグゼキューターのバージョンがサポート対象外です。 対処方法: エグゼキューターをアップグレードしてから再試行してください。 |
424: mcp_server_startup_failed |
原因: MCP サーバーの起動に失敗しました。 対処方法: サーバーの設定と認証情報を確認してください。接続のトラブルシューティングを参照してください。 |
429: files_api_rate_limit_exceeded |
原因: ファイルにアクセスするリクエストが、ユーザーに適用される Files API のレート制限を超えました。 対処方法: 同時リクエスト数を減らし、Files API のレート制限に記載された手順に従ってください。 |
500: internal_error |
原因: サービスで予期しないエラーが発生しました。 対処方法: 再試行する前に保存済みの作業内容を確認してください。共通ガイドのサーバーエラーに関する説明を参照してください。 |
503: service_unavailable_error, server_is_overloaded |
原因: サービスまたはその依存先が一時的に利用できないか、過負荷状態です。 対処方法: 共通ガイドの 503 エラーの対処方法に従い、再試行する前に保存済みの作業内容を確認してください。 |
Files API のレート制限
セッションの作成やファイルの添付をリクエストすると、HTTP 429 とともに files_api_rate_limit_exceeded が返される場合があります。Agents API は Files API を通じてファイルを確認します。この確認は、認証済みユーザーの Files API 利用枠を消費します。添付ファイルごとに個別の確認が必要になる場合があります。
{
"error": {
"type": "rate_limit_error",
"code": "files_api_rate_limit_exceeded",
"message": "The Files API rate limit for your user has been exceeded. Reduce the rate of requests that access files, then try again.",
"param": null
}
}ファイルに同時にアクセスするリクエスト数を減らしてください。再試行には指数バックオフを使用し、試行回数に上限を設けてください。すぐに再試行すると、利用枠を使い切った状態が続く可能性があります。
この HTTP レスポンスは、リクエストした操作が失敗したことを示します。作成成功のレスポンスが返された後で、セッションやターンが非同期に失敗する場合とは異なります。このエラーの判定には、メッセージ本文の照合ではなく error.code を使用してください。
ターンのエラー
失敗したターンでは status: "failed" となり、error に code と message が含まれます。たとえば、モデルが過負荷状態になると、次のエラーが返されることがあります。
{
"code": "server_overloaded",
"message": "The model is temporarily overloaded. Please retry your request after a brief delay."
}ターンのエラーコードには、固有の HTTP ステータスはありません。たとえば、過負荷でターンが失敗した場合は server_overloaded が使われますが、HTTP レスポンスでは server_is_overloaded が使われることがあります。
| コード | 概要 |
|---|---|
invalid_request |
原因: 入力または設定が無効です。 対処方法: メッセージが示す入力を修正してから再試行してください。 |
context_length_exceeded |
原因: 入力がモデルのコンテキストウィンドウを超えています。 対処方法: 入力を短くしてください。会話が長すぎる場合は、短い要約を使って新しいセッションを開始してください。 |
session_budget_exceeded |
原因: セッションの使用量が予算の上限に達しました。 対処方法: 作業を続けるには、新しいセッションを開始してください。 |
credit_balance_exhausted |
原因: 組織の API クレジット残高がなくなりました。 対処方法: クレジット残高に関する説明を参照してください。 |
project_spend_limit_exceeded |
原因: プロジェクトの支出が、適用されている上限に達しました。 対処方法: プロジェクトの支出上限に関する説明を参照してください。 |
organization_spend_limit_exceeded |
原因: 組織の支出が、適用されている上限に達しました。 対処方法: 組織の支出上限に関する説明を参照してください。 |
organization_usage_limit_exceeded |
原因: 組織の使用量が、OpenAI が設定した上限に達しました。 対処方法: 組織の使用量上限に関する説明を参照してください。 |
usage_limit_exceeded |
原因: 請求額または使用量が上限に達しました。どの上限に達したかを示す個別のコードはありません。 対処方法: 共通ガイドの請求関連のエラーの対処方法に従ってください。 |
rate_limit_exceeded |
原因: リクエスト数が適用されるレート制限を超えました。 対処方法: 再試行の手順に従ってください。 |
server_overloaded |
原因: モデルを提供するサービスが一時的に過負荷状態です。 対処方法: しばらく待ってから、未完了の作業を再試行してください。過負荷が続く場合は、以降のターンで使用するモデルを変更してください。 |
flex_unavailable |
原因: Flex 処理を一時的に利用できません。 対処方法: 時間を置いて再試行するか、以降のターンに向けてセッションのサービスティアを変更し、標準処理( default)に切り替えてください。 |
connection_failed, request_timeout, server_error, internal_error |
原因: 接続障害、タイムアウト、またはサービス障害により処理を完了できませんでした。 対処方法: 保存済みの作業内容を確認してから、試行回数に上限を設けて再試行してください。 |
authentication_error |
原因: 認証情報または権限の問題により、モデルにアクセスできませんでした。 対処方法: 共通ガイドの認証と権限に関する説明を参照してください。 |
resource_not_found |
原因: リクエストしたモデルまたはリソースを利用できません。 対処方法: 再試行する前に、モデルとセッションの設定を確認してください。 |
sandbox_error |
原因: 環境内で操作を完了できませんでした。 対処方法: 環境のエラーを確認し、設定または接続の問題を解消してください。 |
executor_version_incompatible |
原因: エグゼキューターがこのターンを実行できません。 対処方法: エグゼキューターをアップグレードしてください。セッションが失敗していなければ、同じセッションで再試行してください。 |
active_turn_not_steerable |
原因: 実行中のターンは追加入力を受け付けられません。 対処方法: ターンが終了してから次のメッセージを送信してください。 |
cyber_policy, misalignment_policy_violation |
原因: 安全システムがリクエストをブロックしました。 対処方法: 適用される安全要件に照らしてリクエストを見直してから、修正した入力を送信してください。 |
セッションと環境のエラー
ターンが失敗しても、セッションまで失敗したとは限りません。セッションを取得し、続行できるかどうかを確認してください。status が requires_action の場合は、必要なアクションを実行してください。セッションが失敗した場合は、原因を解消し、引き続き必要な入力を指定して新しいセッションを作成してください。
| コード | 概要 |
|---|---|
environment_connection_failed, environment_connection_timeout |
原因: サンドボックスが接続できなかったか、接続に時間がかかりすぎました。 対処方法: エグゼキューターの起動状況とネットワークへのアクセスを確認してください。セルフホスト環境の場合は、接続設定を確認してください。 |
sandbox_error |
原因: サンドボックスのセットアップまたはサンドボックス内での処理に失敗しました。 対処方法: セットアップコマンド、パッケージ、入力ファイル、環境のエラーを確認してください。 |
executor_version_incompatible |
原因: セッションで使用しているエグゼキューターのバージョンがサポート対象外です。 対処方法: 新しいセッションを作成する前に、エグゼキューターをアップグレードしてください。 |
idle_timeout |
原因: 操作がない状態が続いたため、ホスト環境の有効期限が切れました。 対処方法: 新しいセッションを作成し、入力を再度指定してください。 |
internal_error |
原因: 内部障害により、セッションまたは環境の準備が完了しませんでした。 対処方法: しばらく待ってからセットアップを再試行してください。失敗が続く場合は、サポートにお問い合わせください。 |
復旧手順
一時的な障害時の再試行
レート制限、過負荷、タイムアウト、一時的なサービス障害が発生した場合は、次の手順に従ってください。入力が無効な場合や、認証情報または請求額の上限に問題がある場合は、原因を解消してから再試行してください。
- 処理結果を確認します。 セッションが作成されている場合は、そのセッション、ターン、保存済みの項目を取得してください。ターンがまだ実行中であれば、引き続き進行状況を確認してください。完了していれば、その結果を使用してください。
- 実行済みの操作を確認します。 ターンが失敗していても、すでにファイルが変更されたり、外部ツールが呼び出されたりしている可能性があります。エージェントに同じ作業を依頼する前に、これらの操作の影響を確認してください。
- 再試行には間隔と上限を設けます。 共通の再試行ガイドに従い、HTTP レスポンスの
Retry-Afterが指定する待機時間を守ってください。試行回数の上限または再試行の期限も設定してください。 - リクエストを再試行するか、新しいターンを開始します。 HTTP エラーの場合は、元の操作の結果を確認してから、その操作を再試行してください。ターンが失敗した場合は、セッションが
idleになるまで待ち、追加のメッセージを送信して、未完了の作業だけを続けるよう依頼してください。既存の会話を引き継いで新しいターンが始まります。
ターンが完了した場合も、ツールの実行結果を確認してください。エラーが変わった場合や再試行回数が上限に達した場合は、自動再試行を停止してください。
無効な入力の修正
error.param または error.message が示すフィールドを修正してから再送信してください。
サイズに関するエラーの場合は、入力と出力スキーマまたはツールの実行結果のサイズを小さくしてから再試行してください。エージェントの設定が大きすぎる場合は、指示とツール定義を短くして、新しいセッションを作成してください。
アップロードの要件と例については、アップロードエラーの解決方法を参照してください。メッセージが画像の問題を示している場合は、画像データまたは URL を確認してください。
ストリーム切断時の対処
error イベントを受信した場合やストリームが切断された場合、それだけではターンの最終状態を判断できません。切断されたストリームの復旧手順に従って再接続し、保存済みの作業内容を確認してから入力を再送信してください。取得したセッションが status: "failed" の場合、または agent.session.failed を受信した場合は、再接続を中止し、セッションの復旧手順に従ってください。
エラーが解消しない場合は、サポートへの問い合わせにリクエスト ID、セッション ID、ターン ID を記載してください。