ドキュメントエラーと対処

エラーと対処

Echo Token Station が返すエラー本文の形式と、状況ごとの HTTP ステータス、エラー本文、対処(動画生成を含む)をまとめています。

Echo の API は、リクエストを処理できなかったとき、HTTP ステータス(結果を表す 3 桁の番号)と JSON のエラー本文を返します。

まず確かめること

  1. 接続先 URL:OpenAI 形式は https://token.echohub.io/v1、Anthropic 形式は https://token.echohub.io です。呼び出し先のパスに /v1 がないと、キーが正しくても 404 になります(JSON ではなく、Web サイトの HTML ページが返ります)
  2. API キー:コンソールの「APIキー」で、停止していないか、利用上限が残っているかを確認します
  3. 残高:コンソールの「残高とチャージ」で確認します
  4. モデル ID:モデル一覧の ID と一致しているかを確認します

エラー本文の形式

呼び出したエンドポイントの形式に合わせて、2 つの形式で返します。

エンドポイント形式
/v1/messages(Anthropic 形式)Anthropic の API と同じ形式。error.type にエラーの種類が入ります
そのほか(/v1/chat/completions、/v1/responses など)OpenAI の API と同じ形式。error.code にエラーの種類が入ることがあります

Anthropic 形式の例(キーが違うとき):

JSON
{"type":"error","error":{"type":"authentication_error","message":"Invalid API key"}}

OpenAI 形式の例(残高が足りないとき):

JSON
{"error":{"message":"Insufficient balance","type":"api_error","param":"","code":"insufficient_quota"}}
  • エラーの種類は、HTTP ステータスと、error.type(Anthropic 形式)または error.code(OpenAI 形式)で判断してください。message の文言は変わることがあるため、プログラムの分岐には使わないでください
  • 経由先の API(モデルを実際に動かしている各社の API)が返したエラーは、message に経由先の文言をそのまま入れることがあります
  • 項目の並び順は、エラーによって異なります
HTTP ステータスAnthropic 形式の error.typeOpenAI 形式の error.code(主なもの)
400invalid_request_error空の文字列、invalid_request、経由先の値(例:context_length_exceeded)、動画生成の task_not_found・task_not_ready・task_failed・upstream_error
401authentication_error空の文字列
403permission_errorinsufficient_quota(残高や利用上限が足りない)
404not_found_error空の文字列、動画生成の task_not_found
410—artifact_gone(動画生成で、提供元がファイルを残す期間を過ぎた)
429rate_limit_errorrate_limit_exceeded
500・502・503・504api_errorserver_error、service_unavailable、model_not_found
529overloaded_error—

OpenAI 形式の error.type は、Echo が返すエラーでは主に api_error です。経由先のエラーをそのまま返す場合は、経由先の値が入ります。動画生成のエンドポイント(/v1/videos)では、error.type は HTTP ステータスに合わせた値です(400 は invalid_request_error、401 は authentication_error、403 は permission_error、404 と 410 は not_found_error、500 以上は api_error)。

状況ごとの原因と対処

状況HTTP ステータスエラー本文の message対処
呼び出し先のパスに /v1 がない404なし(JSON ではなく、Web サイトの HTML ページが返ります)接続先 URL を直す
呼び出し先のパスに /v1 が 2 回入っている404Invalid URL (POST /v1/v1/…)接続先 URL を直す
対応していないエンドポイントを呼んだ404Invalid URL (POST /v1/…)API リファレンスで対応状況を確認する
キーが違う、ない、停止中、有効期限切れ、削除済み、または利用上限を使い切った401Invalid API keyコンソールでキーの状態と利用上限を確認する
残高が足りない403Insufficient balanceチャージする
このリクエストの見込み額が、キーの残りの利用上限より多い403This API key has reached its spending limit上限とレート制限を見る
モデル ID が違う、または Echo が提供していないモデル503The model {モデル ID} does not exist or is not availableモデル ID を確認する
リクエストが JSON として読めない400Invalid request: invalid JSON request bodyリクエストを直す
リクエスト本文が 128 MB を超えた400Invalid request: request body exceeds 128 MB: request body too largeリクエストを小さくする
必須の項目がない400項目名を含む文言(例:field messages is required)リクエストを直す
入力がモデルのコンテキスト長(一度に扱えるトークン数)を超えた400経由先の文言(例:prompt is too long: 250000 tokens > 200000 maximum)入力を減らす
アカウントのレート制限を超えた429Rate limit exceeded for your account, please retry after 60 secondsRetry-After ヘッダーの秒数(60 秒)待ってから送り直す
同じ IP アドレスからのリクエストが多すぎる429Too many requests from your IP address, please retry after the number of seconds in the Retry-After headerRetry-After ヘッダーの秒数待ってから送り直す
経由先の API のレート制限を超えた429The model service is temporarily rate limited, please retry after 60 secondsRetry-After ヘッダーの秒数(60 秒)待ってから送り直す
経由先の API に接続できない500The model service is temporarily unavailable, please try again later少し待ってから送り直す
経由先の API がエラーを返した500経由先の文言(例:Internal server error)少し待ってから送り直す
経由先の API が JSON 以外を返した502Anthropic 形式は The model service returned an error (HTTP 502), please try again later、OpenAI 形式は The model service returned an invalid response, please try again later少し待ってから送り直す
経由先の API が一時的に使えない、または経由先の API で Echo のアカウント側に問題がある503The model service is temporarily unavailable, please try again later少し待ってから送り直す。続く場合は問い合わせる
Echo のサーバーが一時的に止まっている、または混み合っている(メンテナンスなど)503The service is temporarily unavailable, please try again later少し待ってから送り直す
経由先の API が混雑している529Overloaded(Anthropic 形式)少し待ってから送り直す
上のどれにも当たらない、処理できないリクエスト400・403The request could not be completedリクエスト ID を添えて問い合わせる

動画生成のエラー

動画生成(/v1/videos)に特有のエラーです。手順と、モデルごとに使える値は動画生成にあります。

状況HTTP ステータスと error.codeエラー本文の message対処
長さ・解像度などの値が、そのモデルでは使えない400、invalid_request または空の文字列理由を書いた英文(例:MiniMax-H3 duration must be an integer between 4 and 15 seconds)値を直す
提供元がリクエストを受け付けなかった400、upstream_errorThe model service rejected the request, check the parameters and try again値と、画像などの URL を確かめる
タスクの ID が違う、または別のアカウントのタスク400(ファイルの受け取りでは 404)、task_not_foundTask not foundID を確かめる
完了する前にファイルを受け取ろうとした400、task_not_readyThe video is not ready yetstatus が completed になってから受け取る
失敗したタスクのファイルを受け取ろうとした400、task_failedThe video generation failedもう一度申し込む
提供元がファイルを残す期間を過ぎた410、artifact_goneArtifact content is no longer available受け取れません。もう一度申し込む

申し込みの時点で返したエラーに、料金はかかりません。生成に失敗したタスクは、進み具合を確かめると status が failed になっていて、料金は全額返金しています。

再試行するエラー

再試行する再試行しない
429、500、502、503(モデル ID の誤りを除く)、504、529400、401、403、404、410
  • 待ち時間を少しずつ延ばしながら、回数の上限を決めて再試行します
  • Retry-After ヘッダーが付いている場合は、その秒数以上待ちます。アカウントのレート制限と経由先の API のレート制限による 429 には Retry-After: 60、接続元の IP アドレスごとの制限による 429 には待つ秒数、503 には Retry-After: 5 が付きます(経由先の API 側で Echo のアカウントに問題があるときの 503 は Retry-After: 60 のことがあります)
  • モデル ID の誤りも 503 で返ります。OpenAI 形式では error.code が model_not_found になります。Anthropic 形式では message に does not exist or is not available が入ります
  • OpenAI と Anthropic の SDK は、429 と 500 以上のエラーを既定で 2 回まで自動で再試行します。モデル ID の誤りでも 2 回再試行してからエラーになります。Claude Code は 1 分以上再試行を続けます(Claude Code)

ストリーミングの途中で止まったとき

ストリーミング(回答を少しずつ受け取る方法)では、最初に HTTP 200 を返してから回答を送ります。そのあとで経由先の API がエラーを返したり、接続が切れたりすると、次のように届きます(2026-09-27 時点。修正予定:[ ])。

形式途中で経由先の API がエラーを返したとき途中で接続が切れたとき回答が最後まで届いたかの確かめ方
Anthropic 形式エラーは届かず、回答が途中で終わります回答が途中で終わりますmessage_stop が届き、message_delta の stop_reason に値が入っていること
OpenAI 形式(Chat Completions)error を含むデータが届きますfinish_reason に値が入ったデータがないまま、data: [DONE] で終わりますfinish_reason に値が入ったデータが届いていること
OpenAI 形式(Responses API)確認していません確認していませんresponse.completed が届いていること

最後まで届いていない場合は、同じリクエストをもう一度送ってください。接続が切れた場合も、切れるまでに生成された分の料金がかかります(料金とチャージ)。

問い合わせるとき

Echo の API が処理した応答には、成功・失敗にかかわらず、リクエスト ID(1 回の呼び出しを見分ける番号)が付きます。レスポンスヘッダーの X-Request-Id と request-id に同じ値が入ります。

使っているものリクエスト ID の見方
curl-i を付けて実行し、ヘッダーの x-request-id を見る
OpenAI の Python SDK応答の _request_id
Anthropic の Python SDK応答の _request_id

次の情報を添えて、https://echohub.io/contact から問い合わせてください。問い合わせフォームは Echo AI Hub のページで、会員サイトの公開後に使えます。

  • エラーが起きた日時(日本時間)
  • リクエスト ID
  • 使ったモデル ID と、エンドポイントのパス
  • キーの名前(キーそのものは送らないでください)
  • HTTP ステータスとエラー本文

確認した情報源

内容情報源確認日
エラー本文、HTTP ステータス、Retry-After、リクエスト ID のヘッダー、/v1 がないときの 404(2026-10-11 に確認し直しました)、ストリーミングが途中で止まったときの届き方、SDK の再試行Echo の検証環境での実測。エラー本文の形式をそろえる修正を入れた中継設定で、経由先の API の代わりに試験用の応答を返すサーバーを使いました2026-09-27
レート制限の 429 の本文と Retry-After、503 の Retry-After、128 MB を超えるリクエストの 400、利用上限を使い切ったキー・停止中・期限切れ・削除済みのキーで 401 が返ることEcho の検証環境での実測(本番と同じ中継設定)2026-09-28
接続元の IP アドレスごとのレート制限Echo の中継サーバーの設定(2026-09-28 時点)2026-09-28
OpenAI SDK の自動再試行と _request_idhttps://github.com/openai/openai-python2026-09-27
Anthropic SDK の _request_id(request-id ヘッダーから読むこと)https://github.com/anthropics/anthropic-sdk-python2026-09-27
Anthropic 形式のエラーの種類https://platform.claude.com/docs/en/api/errors2026-09-27
動画生成のエラー本文と HTTP ステータスEcho の検証環境での実測(本番と同じ中継設定。提供元の API の代わりに試験用の応答を返すサーバーを使いました)2026-10-01