API リファレンス

API エラーコードと再試行

エラーは標準の HTTP ステータスと共通の JSON 形式で返ります。code はコードで分岐できる安定した値、message は人向けの説明です。

API キーを取得Wan 3 API チーム ·

JSON

json
{
  "error": {
    "code": "insufficient_credits",
    "message": "This render costs 30 credits; you have 12."
  }
}
ステータスコード意味
400invalid_requestボディまたはヘッダーが不正です。message にどの項目かが書かれます。
400media_unreachableメディア URL をダウンロードできないか、対応していないファイルです。
401invalid_api_keyキーがない・形式が違う・無効化済みです。
402insufficient_creditsクレジットが足りません。課金されていません。
403account_disabledアカウントが停止されています。
404not_foundそのタスクがアカウントにないか、ルートが存在しません。
409task_processingタスクがまだ生成中のため削除できません。
422content_blockedプロンプトまたはメディアがコンテンツフィルターでブロックされました。課金されていません。
429rate_limitedこのキーのリクエストが多すぎます。Retry-After まで待ってください。
429too_many_running_tasks同時に処理中の生成が多すぎます。1 つ終わるまで待ってください。
502upstream_error生成サービスがタスクを受け付けませんでした。クレジットは返金済みです。
503service_unavailableAPI またはモデルが一時的に停止しています。

失敗したタスク

受け付け後に失敗したタスクは status が failed、refunded が true で、error.code は次のいずれかです:

error.code意味
content_blocked出力がコンテンツフィルターでブロックされました。
media_rejectedリファレンスやフレームの画像が拒否されました(実在の人物が写っていることが多い)。
timeout生成に時間がかかりすぎて停止しました。
service_unavailable生成サービスが利用できませんでした。
failedその他。プロンプトを変えて再試行すると通ることが多いです。

無料コールと 402

新規アカウントには、最も安い設定で使える無料コールが 2 回あります。対象はモデルの最低解像度、最長 5 秒、テキストまたは画像入力です。無料コールの消費は 0 クレジットで、生成に失敗した場合は回数が戻ります。支払いができないリクエストには、API が 402 を返し、理由、必要なクレジット、購入用のリンクを含めます。

json
{
  "error": {
    "code": "insufficient_credits",
    "reason": "free_calls_exhausted",
    "message": "Insufficient credits: this request costs 15 credits and the balance is 0. Nothing was charged. Your 2 free calls are used. Buy credits: …/credits/purchase?ref=api_402",
    "required_credits": 15,
    "balance": 0,
    "free_calls_remaining": 0,
    "purchase_url": "…/credits/purchase?ref=api_402"
  }
}
error.reason意味
free_calls_exhausted無料コールを使い切っており、クレジットも不足しています。
free_call_not_eligibleリクエストが無料コールの条件(解像度、長さ、参照動画)を満たしていないか、アカウントが無料コールの対象外です。
insufficient_balance残高がこの生成の料金を下回っています。

再試行

429・500・502・503 はバックオフして再試行し、同じ Idempotency-Key を送れば二重生成になりません。400・401・402・403・422 はリクエストを変えずに再試行しないでください。