beatraドキュメント

エラーとリトライ

エラーエンベロープ、retryable ルール、エラーコード一覧。

以下の表は Beatra の公開エラーコード定義から自動生成されます。

Beatra の公開エラーレスポンスはすべて、共通のエラーエンベロープを使います。error.code は下表の安定した公開値のいずれかで、error.retryable はそのまま再試行して成功する可能性があるかを示します。

エラーレスポンスの本文は次の形です。

{
  "error": {
    "code": "<machine code>",
    "type": "<error family>",
    "message": "<human description>",
    "retryable": true,
    "param": "/field",
    "details": {},
    "request_id": "req_..."
  }
}

どう分岐するか

見るものすること
retryable: true短いバックオフの後にまったく同じリクエストと同じ Idempotency-Key で再試行できます。Retry-After ヘッダーがある場合はそれに従ってください。429 レスポンスには X-RateLimit-* ヘッダーも付きます。
retryable: false再試行しても同じ結果になります。リクエストを変更する、認証情報を直す、またはユーザーにエラーを表示してください。再試行できないエラーでループするのはバグです。
error.paramある場合は、リクエスト本文の問題のあるフィールドを指す JSON Pointer(RFC 6901)です。
error.type / error.details / error.request_idそれぞれ安定したエラーの種類、修正に必要な情報、追跡用の識別子です。
error.message診断用の文章で、分岐の条件には使えません。モデルサービスの応答後にタスクが最終的に失敗した場合は、認証情報・署名付き URL・制御文字・長さに関する安全処理を施したうえで、モデルサービス側の文言をそのまま保持します。

error.details.recovery がある場合は、トップレベルのエラーエンベロープを変えずに、分岐に使える対処を示します。requires_input_change は送信した内容を変更する必要があるかどうかを示します。client_request_id: new は、修正後の作業または終了した作業が新しい論理リクエストであることを意味します。それ以外の場合は retryable とエンドポイントの冪等性ルールに従ってください。

{
  "details": {
    "recovery": {
      "action": "fix_arguments_and_resubmit",
      "requires_input_change": true,
      "client_request_id": "new"
    }
  }
}

認証とアカウント

コードHTTP再試行発生する状況と対処
unauthorized401不可認証情報がないか、形式が正しくありません。Authorization: Bearer <API key> を送信してください。
invalid_api_key401不可API キーが無効、無効化済み、取り消し済み、または存在しません。コンソールの「開発者向け → API キー」でキーを作成またはローテーションし、新しいキーで再試行してください。
api_key_region_mismatch400不可API キーのリージョン接頭辞がこのエンドポイントと一致しません。キーのリージョンに対応する API ホストを呼び出すか、このリージョン向けに発行されたキーを使用してください。
ほか 3 件
コードHTTP再試行発生する状況と対処
tenant_disabled403不可アカウントが一時停止または無効化されています。サポートにお問い合わせください。再試行しても成功しません。
forbidden403不可呼び出し元にこの操作の権限がありません。必要な権限を持つ認証情報を使用してください。そのまま再試行しても成功しません。
email_send_failed502可ログインコードのメールを一時的に送信できませんでした。少し待ってから新しいコードをリクエストしてください。

課金

コードHTTP再試行発生する状況と対処
insufficient_balance402不可クレジットが不足しています。このリクエストは開始されておらず、課金もされていません。https://console.beatra.ai/wallet?intent=buy でクレジットを追加すると、すぐに反映されます。その後、同じリクエストを再試行してください。再インストールや再承認は不要です。
billing_failed500可課金または返金が、再試行後も失敗しました。同じ Idempotency-Key / client_request_id で再試行してください。同じ識別子であれば二重課金は発生しません。
payment_provider_unavailable503不可この支払い方法の決済サービスが設定されていません。コンソールで別の支払い方法を選択してください。

容量と可用性

コードHTTP再試行発生する状況と対処
rate_limited429可呼び出し元のレート制限を超えました。Retry-After の間隔を空けてから再試行してください。X-RateLimit-* ヘッダーに現在の上限が示されます。
model_unavailable503可指定したモデルは現在利用できません。バックオフして再試行するか、選択可能な別のモデル(beatra.models.list または GET /v1/catalog/models)に切り替えるか、model=auto を使用してください。
model_request_failed502可再試行可能なサービスエラーの後も、モデルへのリクエストが失敗しました。バックオフして再試行してください。続く場合は入力を調整するか、別のモデルを選んでください。
ほか 4 件
コードHTTP再試行発生する状況と対処
model_timeout504可モデルへのリクエストがタイムアウトしました。バックオフして再試行してください。
model_rate_limited429可モデルの処理能力がレート制限されました。バックオフして再試行してください。
model_output_invalid502可モデルの生成は成功しましたが、生成されたファイルを何度試してもダウンロードできませんでした。タスクは失敗となり、結果ファイルはありません。
internal_error500可分類されていないサーバー側のエラーです。同じ冪等性の識別子で再試行してください。続く場合は request_id を添えてご報告ください。

その他のエラーコード

リクエストの検証15 件 ⌄
コードHTTP再試行発生する状況と対処
invalid_request422不可リクエスト本文が構造の検証を通過しませんでした。param は最初に問題のあるフィールドを指し、details.errors にはすべての不備とその loc、理由が含まれます。該当するフィールドを修正して再送信してください。
skill_package_format_invalid422不可Skill パッケージの識別子の形式が正しくありません。64 文字以内の小文字とハイフンからなる slug と、有効な SemVer のパッケージバージョンを使用してください。
unsupported_capability400不可この機能は存在しないか、無効になっています。現在利用できる機能は GET /v1/catalog/capabilities で確認できます。
unsupported_model400不可このモデルは存在しないか、この機能では選択できません。beatra.models.list または GET /v1/catalog/models で選択可能なモデルを確認するか、model=auto を使用してください。
unsupported_option422不可選択した具体的なモデルが、リクエストされた値またはコントロールに対応していません。param が該当するフィールドを示し、details.candidate_failures[] に unsupported_resolution、unsupported_duration、unsupported_aspect_ratio などの具体的な失敗コードと、受け取った値・対応する値が含まれます。該当するフィールドを変更するか、別のモデルを選んでください。model=auto の場合は、どの候補もリクエストを満たせないときにのみ返されます。
no_eligible_model422不可model=auto のリクエスト全体を満たせるモデルが現在ありません。details.candidate_failures[] に各候補が対応できない理由が列挙されます。互換性のないフィールドだけを変更するか、一覧にある具体的なモデルを選んでください。
voice_model_incompatible422不可指定した音声は、指定したモデルでは利用できません。model=auto、互換性のあるモデル、または音声一覧の別の音声を使用してください。
unsupported_input_modality422不可選択したモデルは、リクエストに含まれる入力の種類(画像、音声、ファイルなど)に対応していません。param が最初に問題のあるフィールドを示します。そのフィールドを削除するか、対応するモデルを選んでください。
context_length_exceeded422不可リクエストが、選択したモデルのコンテキスト長を超えています。入力を短くするか、より長いコンテキストに対応するモデルを選んでください。
safety_rejected400不可リクエストがコンテンツの安全審査を通過しませんでした。ユーザーにプロンプトとすべての入力素材を確認してもらい、安全でない可能性のある内容を修正または差し替えたうえで、新しい client_request_id で新しいタスクとして送信してください。同じ内容で再試行しても解決しません。
content_filtered502不可生成の途中で、安全フィルターが出力をブロックしました。プロンプトを言い換えるか、別のモデルに切り替えてください。同じ内容で再試行すると、通常は再びブロックされます。
not_found404不可リクエストされた HTTP リソースまたはエンドポイントが見つかりません。パスと識別子を確認してください。そのまま再試行しても成功しません。
streaming_not_yet_implemented501不可旧バージョンとの互換用のコードです。以前のデプロイでは stream=true を認識していましたが、ストリーミングは有効になっていませんでした。
invalid_window422不可期間の指定が無効です。
invalid_cursor400不可ページネーションのカーソルの形式が正しくありません。
コールバック3 件 ⌄
コードHTTP再試行発生する状況と対処
callback_url_required422不可コールバック署名キーを選択した場合は、コールバック URL が必要です。callback_url を追加するか、callback_signing_key_id を外してください。
callback_signing_key_not_found404不可コールバック署名キーが存在しないか、このアカウントからは参照できません。コンソールで署名キーの一覧を確認し、有効なキー ID を指定してください。
callback_signing_key_inactive422不可このコールバック署名キーは廃止済みのため、新しいタスクでは選択できません。有効なキーを選択するか、署名なしで配信する場合はキー ID を省略してください。
メディア入力5 件 ⌄
コードHTTP再試行発生する状況と対処
invalid_media422不可メディア入力の形式が正しくないか、デコードできません。ファイルを書き出し直すか再エンコードしてから、もう一度送信してください。param が問題のあるフィールドを示します。
unsupported_media_type422不可この機能はこのメディア形式に対応していません。対応する形式(機能ページまたはモデルの制約を参照)に変換してから再送信してください。
media_too_large413不可メディア入力がサイズの上限を超えています。入力を圧縮またはトリミングするか、先にアップロードしてアーティファクト参照を渡してください。
media_fetch_failed422可Beatra が入力リソースにアクセスできませんでした。リソースに HTTPS でアクセスできるか確認するか、アップロードしてアーティファクト参照を渡してください。
upload_stalled408可アップロードのデータ送信が長時間止まったか、アップロードの制限時間を超えました。同じアップロード URL に同じ PUT をもう一度送信してください。アップロードの許可が期限切れの場合は、beatra.assets.upload で新しく取得してください。
タスクとリソース11 件 ⌄
コードHTTP再試行発生する状況と対処
task_not_found404不可task_id が存在しないか、このアカウントのものではありません。作成時に返された task_id を使用してください。最近のタスクは GET /v1/tasks または beatra.tasks.list で一覧できます。
conflict409不可操作がリソースの現在の状態と競合しています。タスクのキャンセルの場合は、実行が継続されることを意味します。details.action に従ってください(通常は同じタスクのポーリングを続けます)。作業を再送信しないでください。
result_undeliverable502不可完了した結果を返せませんでした。サイズが大きすぎる、ネストが深すぎる、または有効な JSON ではありません。同じ照会を再送信しないでください。
artifact_not_found404不可artifact_id が存在しないか、このアカウントのものではありません。メディアをもう一度アップロードし、新しく返されたアーティファクト ID を使用してください。
voice_not_found404不可voice_id が存在しないか、このアカウントのものではありません。利用できる音声は GET /v1/voices または beatra.voices.list で一覧できます。
voice_activation_required422不可この音声は無料のプレビューです。音声合成に使うには有効化が必要です。先にユーザーへ有効化料金を確認してから、beatra.voices.activate を呼び出してください。
price_confirmation_required422不可有効化の見積もりが期限切れか、内容が変わりました。新しい見積もりをユーザーに示して同意を得てから、新しい confirmation_token と confirm_credits で beatra.voices.activate を再度呼び出してください。
voice_preview_expired422不可このプレビュー音声は期限切れのため、有効化も音声合成もできません。音声をもう一度クローンしてください。
voice_sample_rejected422不可音声サンプルは拒否されました。details.reason を確認し、サンプルを修正してから新しい client_request_id でクローンし直してください。
voice_limit_reached409不可このアカウントで有効化待ちのクローン音声が上限に達しています。1 つを有効化するか、デスクトップアプリで 1 つ削除するか、DELETE /v1/voices/{voice_id} で削除してください。待ちの音声は 7 日後に期限切れになります。
voice_activation_daily_limit429不可このアカウントは今日すでにクローン音声を 3 件有効化し、1 日の上限に達しました。今回は課金されていません。今日さらに有効化するには Beatra サポートにご連絡ください。上限は UTC 00:00(日本時間 09:00)にリセットされます。
冪等性とレスポンスモード2 件 ⌄
コードHTTP再試行発生する状況と対処
idempotency_conflict409不可同じ Idempotency-Key / client_request_id が、異なるリクエスト本文で使われました。内容を変えた作業は新しい識別子で送信し、同じ作業をそのまま再試行する場合は元の識別子を再利用してください。どちらにするか決める前に、既存のタスクを確認してください。
request_in_progress409可同じ冪等性の識別子を持つリクエストがまだ処理中です。後で同じ識別子で再試行すると、元のレスポンスが返されます。

非同期タスクの失敗

生成リクエストが正常に受け付けられた後で、status: failed で終わることがあります。REST のタスク照会、MCP の beatra.tasks.get、コールバックは、いずれも同じ Task.error オブジェクト(code、type、message、retryable、任意の param、任意の details、request_id)を返します。失敗したタスクの照会結果はタスクの最終状態であり、MCP プロトコルのエラーではありません。

model_output_invalid は、モデルの生成は成功したものの、Beatra が生成ファイルを何度試してもダウンロードできなかったことを意味します。この失敗したタスクには結果ファイルがありません。

MCP ツールのエラー

MCP ツールの呼び出しが失敗すると、isError: true のツール結果が返ります。structuredContent.error には REST のエンベロープと同じ項目(code、type、message、retryable、ツール引数を指す JSON Pointer の任意の param、任意の details)と、JSON-RPC の jsonrpc_code が入ります。REST と同様に code と retryable で分岐してください。

MCP 専用のコードは insufficient_scope の 1 つだけです。OAuth の付与に必要なスコープが不足しており、missing_scopes に不足分が示されます。Beatra のデバイス承認をやり直してください。承認し直さずに再試行しても成功しません。予期しないサーバー障害は internal_error のツール結果として返り、素の HTTP エラーにはなりません。


このページは公開ランタイムエラーコード 52 件から生成されています。内部用、管理用、またはサービス連携専用の 25 件は、公開ドキュメントには掲載していません。

このページの内容

Markdown