チュートリアル
HiAPI invalid_request:モデルインターフェースの誤用をどう修正するか?
モデル ID、サポートされるエントリポイント、リクエストボディを照合し、インターフェース・パラメータ・キーのエラーを区別します。読み取り専用の診断コード付き。
TL;DR
invalid_request はリクエスト系のエラーです。インターフェースの選択ミスは考えられる原因の一つであり、エラーメッセージと合わせてリクエストボディとモデル ID も確認する必要があります。まずモデルがサポートするエントリポイントを確認し、そのエントリポイントに従ってフィールドを組み立てます。
Python のサンプルを実行する前に、同じ Python 環境で python -m pip install requests を実行してください。
3 つのエントリポイントの選び方
HiAPI でよく使われる 3 つの生成エントリポイントは以下のとおりです。個々のモデルがどのエントリポイントをサポートするかは、そのモデルページと公開モデルカタログで確認してください。
| エントリポイント | リクエストボディの要点 | 用途 |
|---|---|---|
/v1/tasks |
model + input |
画像・動画・音声タスク |
/v1/chat/completions |
model + messages |
チャットプロトコルをサポートするモデル |
/v1/responses |
model + input |
Responses をサポートするモデル |
supported_endpoint_types の task、openai、openai-response はそれぞれ上記 3 つのエントリポイントに対応します。カタログには他のプロトコルタイプが現れることもあります。一覧にないタイプに遭遇した場合は、そのモデルの接続ドキュメントを開いてください。
モデルがサポートするエントリポイントを読み取り専用で確認する
HIAPI_MODEL をモデルページ上の完全なモデル ID に設定し、以下のスクリプトを実行します。公開カタログを読み取るだけで、生成タスクは送信しません。
import os
import requests
model_id = os.environ["HIAPI_MODEL"]
response = requests.get("https://api.hiapi.ai/api/pricing", timeout=30)
response.raise_for_status()
models = response.json()["data"]
model = next((m for m in models if m.get("model_name") == model_id), None)
if model is None:
raise SystemExit("Model not present in the public catalog; check its exact model ID")
print("model:", model["model_name"])
print("supported_endpoint_types:", model.get("supported_endpoint_types", []))
リクエストを修正する 4 つのステップ
- 実際にリクエストしたドメインとパスを確認し、Base URL に
/v1が重複して付加されていないことを確かめます。 - モデルページの完全な ID とサポートされるエントリポイントを照合します。表示名をそのまま API の model ID の代わりにすることはできません。
- リクエストボディも同期的に調整します。チャットの
messagesをそのままタスクインターフェースにコピーすることはできません。タスクのパラメータはinput内に配置する必要があります。 - 返された HTTP ステータスとエラーフィールドを再度読みます。それでも失敗する場合は、リクエスト ID、モデル ID、エントリポイントのパス、およびマスク処理済みのリクエストボディを保管します。
インターフェース・パラメータ・キーのエラーを区別する
| 症状 | 次のステップ |
|---|---|
| 400、リクエストが不正というメッセージ | インターフェース、JSON、必須フィールド、フィールド型を確認する |
| 現在のプロトコルがサポートされていないことが明確に示される | モデルがサポートを宣言しているエントリポイントを使用する |
| 401、キーが無効または欠落 | Bearer リクエストヘッダーと実行時の環境変数を確認する |
タスクインターフェースが MODEL_UNAVAILABLE を返す |
モデル ID、利用可能状態、アカウントのアクセス権限を確認する |
タスクインターフェースの拒否レスポンスにはトップレベルの error_code が含まれることがあります。他のエントリポイントでは error.code が使われる場合があります。単一のフィールドだけで全てのエラーを判断しないでください。
よくある質問
invalid_request は必ずインターフェースの選択ミスですか?
いいえ。リクエストフィールド、JSON、必須項目の欠落によってもリクエストが拒否されることがあります。まず message を読み、次にエントリポイントを確認してください。
URL を変更するだけで修正できますか?
対応するインターフェースに合わせてリクエストボディも調整する必要があります。messages とタスクインターフェースの input では構造が異なります。
モデルが公開カタログにない場合はどうすればよいですか?
完全な ID、モデルページ、アカウントの可視範囲を確認してください。名前が似ているモデルに自動的に置き換えないでください。
この確認コードはコンテンツを生成しますか?
いいえ。コードは公開カタログを読み取るだけです。実際に生成リクエストを送信したときに初めてタスクフローに入ります。
さらに調査を続ける
関連記事
すべての記事を見る →-
チュートリアル
Recraft Creative Upscale 事例:風景と水彩のアップスケール
山小屋、湖、水彩の町のテクスチャ変化を確認し、完全な結果とプレビューを区別して、描き直された細部をチェックします。
-
チュートリアル
OpenAI API キーが無効:401、環境変数とプロジェクト設定の調査
OpenAI の 401、403、429 を区別し、環境変数、組織とプロジェクトの設定を確認し、読み取り専用リクエストで認証情報を検証します。
-
チュートリアル
Kling 4.0 プロンプト大全:6つのシーンをそのままコピーして動画を生成
EC商品、グルメ、旅行風景、日常のワンシーン、音声付きの空撮カット、イメージ・トゥ・ビデオ。各シーンに実写動画、完全なプロンプト、ワンクリックで自動入力されるリンクをご用意。