本文へスキップ

エラー

Webwayのエラーレスポンス、ステータスコード、安全な再試行方法について説明します。

エラーには、OpenAI互換SDKが解析できる小さなJSONエンベロープが使用されます。

json
{
  "error": {
    "message": "insufficient credit",
    "type": "insufficient_quota",
    "code": "insufficient_quota"
  }
}

typeは、クライアントライブラリが処理の分岐に使用する大まかな値です。codeはより具体的で、 プロバイダー側で障害が発生した場合にのみtypeと異なります。

エンベロープの形式はエンドポイントに従います。/v1/messagesはAnthropic形式を返すため、 Anthropic SDKとClaude Codeはこれを解析し、このゲートウェイを特別扱いすることなく 独自の再試行ロジックを適用できます。

json
{
  "type": "error",
  "error": {
    "type": "overloaded_error",
    "message": "the provider is over capacity, retry shortly (request 4f2ab910)",
    "code": "overloaded"
  }
}

ステータスコード

ステータス 意味 再試行?
400 JSON、フィールド、またはパラメーターが無効 いいえ。リクエストを修正してください
401 APIキーがない、無効、期限切れ、または取り消されている いいえ。APIキーを交換してください
402 残高がリクエストの料金を賄えない クレジットを追加した後
403 モデルで独自のプロバイダーAPIキーが必要 いいえ。ダッシュボードで追加してください
404 モデルまたはエンドポイントが見つからない いいえ。IDとパスを確認してください
413 リクエスト本文が大きすぎる いいえ。ペイロードを減らしてください
429 レート制限に達した はい。待ってから再試行してください
502 / 503 プロバイダーが利用できない はい。バックオフを使用してください
504 プロバイダーがタイムアウトした はい。バックオフを使用してください

402は必ずあなたの残高に関するものです。Webwayとプロバイダー間の請求上の問題は、 あなたが対処できるものではないため502になります。

プロバイダーの障害

リクエストではなくプロバイダーに起因する障害の場合、codeによって障害の種類が 示されます。

code ステータス 意味 再試行?
model_unavailable 502 プロバイダーがこのモデルを提供しない。Webway側で修正 いいえ
context_length_exceeded 400 リクエストがモデルのコンテキストウィンドウを超えている いいえ
content_filtered 400 プロバイダーの安全性レイヤーが拒否した いいえ
invalid_request 400 プロバイダーがリクエストを拒否した いいえ
rate_limited 429 プロバイダー側でレート制限された はい
overloaded 503 プロバイダーが処理能力を超えている はい
timeout 504 プロバイダーが時間内に応答しなかった はい
transport_error 502 プロバイダーへの接続に失敗した はい
upstream_error 502 未分類。必ず調査される 場合による

プロバイダーのエラーテキストがそのまま渡されることはありません。上流サービスは それぞれ独自の用語で障害を説明し、別の言語が使われることもあれば、あなたとは無関係な インフラストラクチャ名が含まれることも多く、そのテキストは予告なく変更されます。 すべてのエラーは上記のいずれかに分類されて書き換えられるため、受け取るメッセージは ログとの照合に使える程度に安定しています。

各メッセージの末尾にはWebwayリクエストIDが付きます。サポートへの問い合わせには このIDを記載してください。実際に検索できる識別子です。

ストリーミング中のエラー

レスポンスヘッダーの送信後にリクエストが失敗することがあります。その時点では ステータスコードを変更できないため、障害は残りのデータと同じプロトコルを使って、 ストリーム内のイベントとして届きます。/v1/messagesではevent: error/v1/responsesではerrorイベント、/v1/chat/completionsではerrorチャンクです。 codeの値は上の表と同じです。

終端イベントなしで終了したストリームは、短い回答ではなく障害として扱ってください。

再試行のルール

再試行するのは429と一時的な5xxレスポンスだけです。ジッターを加えた指数バックオフを 使用し、試行回数に上限を設け、Retry-Afterがある場合はそれに従ってください。

400401402403404413は、リクエストを変更せずに再試行しないでください。 同じリクエストは再び失敗します。

プロバイダー側の処理が始まる前に拒否されたリクエストには料金が発生しません。生成開始後に 失敗したリクエストには、それまでに生成されたトークン分の料金が発生する場合があります。 これには、ストリーミング途中でキャンセルしたリクエストも含まれます。