チュートリアル
hiapi API 経由で Claude Sonnet 4.6 を使用する方法
構築するもの
動作する統合の例:hiapi の OpenAI 互換 Chat Completions API を通じて Claude Sonnet 4.6 を呼び出します。1 回のリクエストで実際の補完結果が返り、さらに、デモが動いた後に実際に使うことになる本番グレードのパターン(ストリーミング出力、ツール呼び出し、適応型思考)も網羅します。
前提条件:hiapi API キーが必要です。コンソールから取得してください。これはsk-...形式の文字列で、同じキーがこのモデルだけでなく、アカウントで有効になっているすべてのモデルで共通に使えます。
以下の内容はすべて、執筆時点で実際の API に対して実行して検証済みです。
最小限の動作例
Claude Sonnet 4.6 は標準の Chat Completions エンドポイント上のテキストモデルです。hiapi が画像/動画/音声モデルで使う非同期の/v1/tasksフローではありません。1 回のリクエスト、1 回のレスポンスで、ポーリングは不要です。
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [
{"role": "user", "content": "Explain how an HTTP cache works in three short paragraphs."}
]
}'
レスポンス(抜粋):
{
"id": "msg_bdrk_011Cf8Bo25qCVFFQF5ETk8Wf",
"model": "claude-sonnet-4-6",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "..." },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 13, "completion_tokens": 4, "total_tokens": 17 }
}
同じ呼び出しを、requestsだけに依存した Python で実装すると次のようになります:
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": "Bearer sk-<your-api-key>"},
json={
"model": "claude-sonnet-4-6",
"messages": [
{"role": "user", "content": "Explain how an HTTP cache works in three short paragraphs."}
],
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
print(data["usage"]) # prompt_tokens / completion_tokens / total_tokens
構造が OpenAI 互換であるため、このコードは変更なしで公式のopenai Python/JS SDK でも動作します。base_urlをhttps://api.hiapi.ai/v1に向け、hiapi キーを渡すだけです。
本番グレードのパターン
ストリーミング出力
"stream": trueを設定し、Server-Sent Events を読み取ります。各データチャンクはdelta.contentの断片を運び、ストリームは最後のチャンクでfinish_reason: "stop"を伴って終了し、その後に[DONE]センチネルが続きます:
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Count 1 to 3"}],
"stream": true
}'
data: {"choices":[{"delta":{"content":"","role":"assistant"},"finish_reason":null,"index":0}]}
data: {"choices":[{"delta":{"content":"Here"},"finish_reason":null,"index":0}]}
data: {"choices":[{"delta":{"content":" you"},"finish_reason":null,"index":0}]}
data: {"choices":[{"delta":{},"finish_reason":"stop","index":0}]}
data: [DONE]
チャンクをまたいでchoices[0].delta.contentを累積すれば、完全なテキストを再構築できます。
ツール呼び出し
OpenAI と同じ方法で関数を宣言し、次のターンでアシスタントのtool_callsメッセージとtool結果メッセージを再送します:
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "What is the status of task demo-123?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_task_status",
"description": "Look up a task by ID.",
"parameters": {
"type": "object",
"properties": {"task_id": {"type": "string"}},
"required": ["task_id"],
"additionalProperties": false
}
}
}],
"tool_choice": "auto"
}'
レスポンスはfinish_reason: "tool_calls"を返し、関数名と JSON エンコードされた引数はchoices[0].message.tool_callsにあります。ローカルで関数を実行し、次のリクエストで結果を一致するtool_call_idを持つrole: "tool"メッセージとして返送します。モデルはそこから会話を続けます。
適応型思考
Claude Sonnet 4.6 はオプトインの推論ステップをサポートしています。"thinking": {"type": "adaptive"}を追加し、output_config.effortで努力レベル(low、medium、high、またはmax)を選択します:
{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Compare two approaches and state the trade-offs."}],
"thinking": {"type": "adaptive"},
"output_config": {"effort": "high"}
}
可読な推論トレースはchoices[0].message.reasoning_contentを介して返されます。生のreasoning_details配列には署名メタデータが含まれており、会話を続けてツール呼び出しに進む場合はこれをそのまま保持する必要があります。解析したり、表示したり、推測で作ったりせず、次のリクエストでそのまま透過的に渡すだけにしてください。
エラー処理
認証に失敗すると HTTP 401 が返り、hiapi_errorエラーエンベロープが付きます:
{
"error": {
"code": "permission_denied",
"message": "This API key is invalid. Check that it is correct or use another API key and try again.",
"type": "hiapi_error"
}
}
response.json()["choices"]にアクセスする前にresponse.status_codeを確認し、エスカレーションが必要な場合はerror.request_idを記録してください。サポートチームがこの ID で特定の呼び出しを追跡できます。
冪等性とリトライ
Chat Completions の呼び出しは、/v1/tasksジョブのようにリクエスト ID によって冪等ではありません。リトライされたリクエストは新しい補完になります。本番トラフィックでは、5xx/タイムアウトに対処するために独自のバックオフ付きリトライで呼び出しを包み、max_tokensの上限を設定して、リトライの嵐による無制限の課金を避けてください。
関連資料
- Claude Sonnet 4.6 モデルリファレンス——完全なパラメータ表、レスポンス schema、および hiapi ドキュメントに直接掲載されているその他のリクエスト例。
- 認証——hiapi API キーの仕組みとローテーション方法。
- hiapi の料金——Claude Sonnet 4.6 およびその他すべての有効なモデルのリアルタイムのトークン単価。
よくある質問
claude-sonnet-4-6は送信すべき正確なモデル ID ですか?
はい。modelフィールドに裸の文字列claude-sonnet-4-6を送信してください。hiapi は OpenAI 互換インターフェースの背後でこれを Anthropic の Claude Sonnet 4.6 にルーティングするため、プロバイダー固有のプレフィックスは不要です。
これは hiapi の画像/動画モデルと同じ/v1/tasksフローを使いますか?
いいえ。Claude Sonnet 4.6 のようなテキストモデルは同期のPOST /v1/chat/completionsエンドポイントを使います。1 回のリクエスト、1 回のレスポンス(または 1 つの SSE ストリーム)です。/v1/tasksはメディアモデル(画像、動画、音声)専用で、非同期に実行され、ポーリング可能な URL またはコールバックを返します。
ネイティブのcurl/requestsの代わりに OpenAI SDK を使えますか?
はい。エンドポイントが OpenAI 互換であるため、公式openai SDK のbase_urlをhttps://api.hiapi.ai/v1に向け、hiapi キーをapi_keyとして渡すだけで、基本的なチャット、ストリーミング出力、ツール呼び出しにコード変更は一切不要です。
Claude Sonnet 4.6 は画像入力に対応していますか?
はい。コンテンツブロックで実現できます。メッセージのcontentを配列に設定し、type: "image_url"のブロックをテキストブロックと並べて含め、image_url.urlを公開画像 URL に向けます。
thinkingを省略するとどうなりますか?
現在のバージョンでは、適応型思考はオプトインです。thinkingフィールドを省略する(またはthinking.typeをdisabledに設定する)と、モデルは直接回答し、レスポンスにreasoning_contentは含まれません。
大量バッチを実行する前に、現在の料金はどこで確認できますか? hiapi の料金ページに Claude Sonnet 4.6 のリアルタイムのトークン単価が掲載されています。単価は変動する可能性があり、本文では古くなりうる数値をハードコードしていないため、予算を立てる前に確認してください。
関連記事
すべての記事を見る →-
チュートリアル
HiAPI API で hailuo-2.3-fast/image-to-video を呼び出す方法:curl と Python の実践
高速・低コストな画像から動画へのティアにおける最初の実行可能なリクエスト — モデル ID から MP4 のダウンロードまで
-
チュートリアル
HiAPI APIでhailuo-2.3/text-to-videoを呼び出す方法:curl、Python、実行可能なリクエスト例
-
チュートリアル
HiAPI で Kandinsky 6.0 Pro のテキストto動画を使用する:curl と Python チュートリアル
リクエスト優先の実践デモ:プロンプトから動画クリップへの呼び出しを構築し、リクエストを送信し、完了状態をポーリングし、結果をダウンロードする