529はコードが原因ではないClaudeのエラーです。Anthropic自体が過負荷になっています。修正はできず、優雅に吸収するしかありません。つまり、忍耐強い再試行、フォールバックモデル、そして即時再試行の嵐で障害を増幅しないことが必要です。
エラー
{
"type": "error",
"error": { "type": "overloaded_error",
"message": "Overloaded" }
}原因と対処法の概要
| 原因 | 対処法 |
|---|---|
| プロバイダー側の飽和(ローンチ日、地域障害) | ジッター付きバックオフを使い、アプリを再デプロイするのではなくプロバイダーのステータスページを確認します。 |
| 軽微な障害中にバーストが到達した場合 | バッチジョブを分散します。通常、10分の遅延で解消します。 |
適切な利用者として再試行する
529はretry-afterのない429として扱います。約2秒から始める指数バックオフ、ジッター、30–60秒の上限、約5回での打ち切り、そして処理のキュー投入を行います。429ガイドのバックオフ用スニペットは、同じ分岐で529にも対応します。
失敗し続けるのではなくフェイルオーバーする
レイテンシが重要な経路ではフォールバックを定義します。同じファミリー(Sonnet → Haiku)なら挙動を近く保て、プロバイダー間(Claude → GPT)ならプロバイダー全体の障害にも耐えられます。OpenAI互換エンドポイントでは、文字列1つを変更するだけです。
PREFERRED = ["claude-sonnet-5", "claude-haiku-4-5", "gpt-5-6-terra"]
def complete(messages):
last = None
for model in PREFERRED:
try:
return client.chat.completions.create(
model=model, messages=messages, max_tokens=800)
except APIStatusError as e:
if e.status_code not in (429, 500, 529):
raise
last = e # saturated — try the next tier
raise lastKunavo経由で呼び出している場合
KunavoはClaudeを複数の上流経路に振り分け、マルチモデルカタログにより、同じキーとウォレットのままモデル文字列を変更してプロバイダー間フェイルオーバーを行えます。上記のフェイルオーバーパターンに2つ目のアカウントは不要です。到達した529に対しても請求は発生しません。 容量と価格は別の問題です。後者については、モデルごとの料金が Anthropic Claude API料金表.
よくある質問
529は私のミスですか?
いいえ。プロバイダー側の容量問題です。あなたの責任は、バックオフとジッターで障害を増幅しないこと、そして障害がレイテンシ予算を超えた場合にフェイルオーバー先を用意することだけです。
529と429の違いは?
429は自分の制限を超えたことを意味します(サーバーは正常)。529はサーバー自体が過負荷であることを意味します(クォータは正常)。どちらも再試行可能ですが、retry-afterのヒントが付くのは429だけです。