ドキュメント
ヘルプ

エラーと制限

Markdown

レスポンスコードの意味と対処方法。すべてのエラーはJSONで返され、Request IDが付いています。

完全ガイド

エラー形式

エラーは、呼び出したAPIの形式で返されます。オブジェクト error はOpenAI、 {"type": "error", "error": {...}} はAnthropic、 error にはフィールド statusとdetails が含まれるのはGeminiです。そのため、SDKは通常のAPIエラーとして認識できます。

  • error.codeとerror.reason は、以下の表にあるエラー分類です。両者は同じ値です。error.type は、その形式の標準値です(例:invalid_request_error または server_error).
  • error.request_id (Anthropicでは request_id が最上位にあります)、ヘッダー X-Request-ID 、メッセージ末尾には、リクエストの識別子が含まれます。
  • Geminiの分類が記載されるのは error.details:ErrorInfo.reason です。同じコードが大文字で表されます(例:MODEL_OVERLOADED), domain — ailoot.ai;リクエストの識別子が記載されるのは RequestInfo.requestId。
  • Gemini形式では、自動再送してはいけない5xxエラーとresult_pending_check は、ステータス409とstatus ABORTEDで返されます。Gemini SDKやCLIが自動で再送しないようにするためです。エラー分類が記載されるのは ErrorInfo.reason (例:MODEL_TIMEOUT または RESULT_PENDING_CHECK).
  • OpenAI形式のレスポンスには、古いクライアント向けの最上位フィールドもあります:codeとmessage 。古いクライアント向けのフィールドです。
{
  "code": "API_KEY_REQUIRED",
  "error": {
    "code": "invalid_api_key",
    "message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
    "param": null,
    "reason": "invalid_api_key",
    "request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
    "type": "invalid_request_error"
  },
  "message": "No API key was sent with the request. Nothing was charged. …"
}

エラーコード

HTTP分類(reason)発生した内容対処方法
400invalid_requestリクエストが不正:ボディやパラメータが間違っている、モデルが指定されたフィールド・添付ファイル・ツールに対応していない、キーをURLで渡しているエラーテキストに従ってリクエストを修正してください。非対応のフィールド、添付ファイル、ツールを削除し、キーはヘッダーで渡してください。非対応のフィールド、添付ファイル、ツールによる拒否は仮確保前に行われ、料金は差し引かれません。
400context_length_exceededリクエストがモデルのコンテキスト長を超えている履歴を短くするか、より長いコンテキストに対応するモデルを使用してください。
400content_policy_violationモデルのルールによりリクエストが拒否されたリクエストを言い換えてください。
401invalid_api_keyキーがない、または無効キー全体が送信されていることを確認してください。
401api_key_disabledキーが無効化されているキーを有効にするか、新しいキーを作成してください。
402insufficient_balance, insufficient_quota最低限の仮確保に必要な空き残高もない (insufficient_quota は、同じ状態をOpenAI SDKで一般的な形式にしたものです)残高をチャージするか、max_tokensを小さくしてください。
402api_key_quota_exhaustedキーの総支出上限に達したダッシュボードでキーの上限を引き上げてください。
402payment_disputedアカウントに、異議申し立て対象の支払いに関する未払いがある未払いが解消されるまで、新しいリクエストは停止されます。サポートにお問い合わせください。
403api_key_expiredキーの有効期限が切れた新しいキーを作成してください。
403account_inactiveアカウントが無効化されているサポートにお問い合わせください。
403permission_deniedキーでこのリクエストが許可されていない(例:IPによる制限)キーの制限を確認してください。
404model_not_found指定されたモデルが存在しない/v1/modelsでIDを確認してください。
404unsupported_endpointモデルがこの形式に対応していない別の形式かモデルを選択してください。
404not_found指定されたパスやオブジェクトが存在しない(例:ジョブ)アドレスと識別子を確認してください。
409duplicate_request同じ冪等性キーの操作がすでに受け付けられており、完了している可能性がある最初の操作の結果を確認してください。新しい操作は送信しないでください。
409not_ready, video_not_ready動画または他のジョブが、まだ完成していない後でステータスを取得してください。
409, 503result_pending_checkリクエストの結果を確認中です。動画ジョブでは、ステータスのレスポンスのフラグ result_pending_check: true で示され、ジョブ自体の状態は in_progressリクエストを再送しないでください。ステータスは履歴(GET https://ailoot.ai/api/v1/usage)に表示されます。動画ジョブを作り直さず、後でGET /v1/videos/{id}を確認してください。
410model_retiredモデルの提供が終了したGET /v1/modelsで新しいバージョンを選択してください。
413request_too_largeリクエストボディが大きすぎるファイルや履歴を小さくしてください。
429rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_fullアカウントのリクエスト数、または同時リクエスト数が多すぎるヘッダー Retry-Afterに指定された時間(通常10秒)だけ待ってから、再試行してください。
429usage_limit_reachedキーの支出ウィンドウ(5時間、1日、7日)の上限に達したウィンドウが更新されるまで待つか、キーの上限を引き上げてください。
500internal_errorAilootのエラーRequest IDを添えてサポートにお問い合わせください。
502invalid_model_response, empty_response, incomplete_responseモデルが、不正・空・不完全なレスポンスを返したダッシュボードの履歴でRequest IDを確認してください。結果や残高の差し引きが記録されている場合、再送すると二つ目の有料リクエストになります。記録がないことは、リクエストが送信も実行もされていない証拠にはなりません。送信状態が不明なリクエストは再送せず、Request IDを添えてサポートに連絡してください。
502result_not_deliveredAilootの責任で結果が届かず、仮確保額または差し引き額が返されたリクエストを再送できます。
503model_overloadedモデルが一時的に過負荷X-Should-Retry: trueの場合はRetry-Afterに指定された秒数後に再試行してください。falseの場合は、先に履歴のRequest IDを確認してください。
503model_unavailableモデルが一時的に利用できない別のモデルを選択してください。X-Should-Retry: trueの場合は、Retry-Afterに指定された秒数後に再試行してください。falseの場合は、先に履歴のRequest IDを確認してください。
503service_unavailableAiloot側の一時的な障害X-Should-Retry: trueの場合はRetry-Afterに指定された秒数後に再試行してください。falseの場合は、先に履歴のRequest IDを確認してください。
503charge_not_confirmedレスポンスは提供されていません。残高の差し引きを確認できなかったため、仮確保額は解放され、料金は差し引かれていません。X-Should-Retry: trueの場合はRetry-Afterに指定された秒数後に再試行してください。falseの場合は、先に履歴のRequest IDを確認してください。
504model_timeoutモデルが制限時間内に応答しなかった。結果が後で届く可能性がある履歴のRequest IDを確認するまで、リクエストを再送しないでください。

モデルのレスポンスと結果の確認に関するコード(502、503、504)は、モデルまたはリクエストを指す名前になりました:model_unavailable, model_timeout, invalid_model_response, incomplete_response, charge_not_confirmedとresult_pending_check。コードで error.code を以前の値と比較している場合は、表のコードに置き換えてください。旧コードと新コードの対応関係を確認する窓口:サポート。

リクエストを再送する条件

  • まずX-Should-Retryを確認してください。値が false, result_pending_check または model_timeout の場合は、自動で再送しないでください。ダッシュボードの履歴でRequest IDを確認すると、結果と差し引き額が分かります。
  • 安全に再送できるのは、X-Should-Retry: trueが返された場合です。次の値で指定された時間だけ待ってください:Retry-After 秒。5xxでは、コードだけでは判断できません。すでに結果が返っている可能性があります。先にダッシュボードの履歴を確認するか、Request IDを添えてサポートにお問い合わせください。特に画像、動画、音楽、長いエージェントのステップでは重要です。
  • 再送しても解決しないケース:400、401、402、403、404。先にリクエスト、キー、残高を修正してください。

制限

頻度と同時リクエスト数の制限は、キー単位ではなく、アカウント全体に適用されます。超過すると429とrate_limit_exceeded 、ヘッダーは Retry-After: 10が返ります。モデル自体が過負荷の場合は503とmodel_overloaded 、 Retry-After: 30が返ります。より大きな負荷が必要な場合は、こちらへお問い合わせください:サポート。

支出上限はキーに設定します。総上限を超えると402とapi_key_quota_exhaustedが返り、5時間、1日、7日のウィンドウを超えると429とusage_limit_reachedが返ります。詳細:APIキーとAPIアドレス。

NVIDIAモデル:キュー

モデル一覧は残高ゼロでも取得できます。生成には仮確保に必要な残高が必要です。NVIDIAモデル(Nemotronなど)は共通のキューで処理されるため、負荷が高いと応答が遅れたり、Retry-Afterヘッダー付きの「モデルが一時的に過負荷」エラーが返ったりする場合があります。指定された時間後に再試行してください。料金はカタログに記載され、残高の差し引きは他のモデルと同様です。

サイズの制限はモデルごとに定められています。コンテキスト長(送信できるトークン数)と最大出力長の記載先:カタログ。

履歴と支出

履歴と支出 · GET https://ailoot.ai/api/v1/usage · JWT · Authorization: Bearer $TOKEN

JWT ≠ sk-… · ログインとセッション

ご不明な点はありますか?Request IDと状況の説明をお送りください。調査をお手伝いします。サポートに問い合わせる