エラー
Webwayのエラーレスポンス、ステータスコード、安全な再試行方法について説明します。
エラーには、OpenAI互換SDKが解析できる小さなJSONエンベロープが使用されます。
{
"error": {
"message": "insufficient credit",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}
typeは、クライアントライブラリが処理の分岐に使用する大まかな値です。codeはより具体的で、
プロバイダー側で障害が発生した場合にのみtypeと異なります。
エンベロープの形式はエンドポイントに従います。/v1/messagesはAnthropic形式を返すため、
Anthropic SDKとClaude Codeはこれを解析し、このゲートウェイを特別扱いすることなく
独自の再試行ロジックを適用できます。
{
"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がある場合はそれに従ってください。
400、401、402、403、404、413は、リクエストを変更せずに再試行しないでください。
同じリクエストは再び失敗します。
プロバイダー側の処理が始まる前に拒否されたリクエストには料金が発生しません。生成開始後に 失敗したリクエストには、それまでに生成されたトークン分の料金が発生する場合があります。 これには、ストリーミング途中でキャンセルしたリクエストも含まれます。