Claude Opus 4.8 APIは、2026年5月28日のモデルリリースと同時に公開されました。モデルIDは claude-opus-4-8 で、既存のMessages APIから呼び出せます。このガイドでは、APIキーの取得、最初のリクエスト、effort、適応思考、ストリーミング、ツール利用、そしてApidogでのテスト手順までを実装ベースで説明します。
既にClaudeモデルを使っている場合、基本的にはモデル名を差し替えるだけです。新しく意識すべき点は、従来の思考バジェットに代わる effort 制御です。Claude APIが初めての場合でも、以下の手順で約10分でOpus 4.8を呼び出せます。モデルの概要はClaude Opus 4.8とは何かを参照してください。
Opus 4.8 APIで使える主な仕様
実装時に確認すべきポイントは次のとおりです。
-
モデルID:
claude-opus-4-8 - 入力コンテキスト: 100万トークン
- 最大出力: 12万8000トークン
- エンドポイント: 既存のMessages API
-
effort制御:low、medium、high、xhigh、max - 適応思考: モデルが推論の深さを自動調整
- 標準価格: 入力100万トークンあたり5ドル、出力100万トークンあたり25ドル
料金の詳細はOpus 4.8料金ガイドを参照してください。有料プランをまだ使っていない場合は、無料アクセスガイドで利用方法を確認できます。
ステップ1:Claude APIキーを取得する
- console.anthropic.comにアクセス
- サインイン、またはアカウントを作成
- Settings → API Keys を開く
- Create Key をクリック
- キー名を設定してコピー
APIキーはコードに直書きせず、環境変数に保存します。
export ANTHROPIC_API_KEY="sk-ant-..."
新規アカウントには、課金設定前にテスト用のトライアルクレジットが付与されます。このキーで claude-opus-4-8 を呼び出せます。
ステップ2:SDKをインストールする
Anthropicは、Python、TypeScript、Go、Java、C#、Ruby、PHP向けの公式SDKを提供しています。ここではPythonとNode.jsの例を使います。
# Python
pip install anthropic
# Node.js / TypeScript
npm install @anthropic-ai/sdk
SDKを使わずにREST APIを直接呼び出すこともできます。型定義や実装の詳細を確認したい場合は、Python SDKのソースが参考になります。
ステップ3:最初のOpus 4.8リクエストを送る
Python
import anthropic
client = anthropic.Anthropic() # ANTHROPIC_API_KEYを読み取る
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Explain the OAuth 2.0 PKCE flow in 3 short paragraphs."
}
],
)
print(message.content[0].text)
Node.js
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const message = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 4096,
messages: [
{
role: "user",
content: "Explain the OAuth 2.0 PKCE flow in 3 short paragraphs.",
},
],
});
console.log(message.content[0].text);
curl
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-8",
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": "Explain the OAuth 2.0 PKCE flow in 3 short paragraphs."
}
]
}'
まずはこの最小構成で疎通を確認します。以降で、effort、適応思考、ストリーミング、ツール利用を追加します。
effort 制御を設定する
Opus 4.8で重要なのが effort パラメータです。これは、モデルが応答全体にどれだけの計算リソースを使うかを指定します。
effort は output_config 内に設定します。
指定できる値は次の5つです。
lowmediumhighxhighmax
デフォルトは high です。
Python
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=8192,
messages=[
{
"role": "user",
"content": "Refactor this 600-line module for testability."
}
],
output_config={"effort": "xhigh"},
)
Node.js
const message = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 8192,
messages: [
{
role: "user",
content: "Refactor this 600-line module for testability.",
},
],
output_config: { effort: "xhigh" },
});
エフォートに関するAnthropicのドキュメントに基づく使い分けは次のとおりです。
| レベル | 用途 |
|---|---|
low |
分類、クイック検索、大量処理ジョブ、サブエージェント |
medium |
コスト重視のバランス型エージェント処理 |
high |
デフォルト。速度より品質を優先する複雑な推論 |
xhigh |
コーディング、長時間のエージェントタスク。推奨開始点 |
max |
余力を確認済みの最先端タスク |
実装時の目安は次の2つです。
- コーディングやエージェントループでは
xhighから始める -
xhighまたはmaxを使う場合は、max_tokensを大きめに設定する
特にエージェント処理では、モデルが思考し、ツール呼び出しを組み立てる余地が必要です。64K程度を開始点にすると調整しやすくなります。
適応思考を有効にする
Opus 4.8は適応思考を使用できます。
thinking: {type: "adaptive"} を指定すると、モデルがいつ、どの程度推論するかを判断します。指定しない場合、リクエストは思考なしで実行されます。
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
output_config={"effort": "xhigh"},
messages=[
{
"role": "user",
"content": "Find the race condition in this scheduler."
}
],
)
for block in message.content:
if block.type == "thinking":
print("[thinking]", block.thinking[:200])
elif block.type == "text":
print(block.text)
移行時の注意点として、budget_tokens を使った手動の拡張思考はOpus 4.8ではサポートされていません。指定すると400エラーになります。
Opus 4.5以前の実装から移行する場合は、次のように変更します。
# 削除する
# thinking={"type": "enabled", "budget_tokens": 10000}
# 代わりに使う
thinking={"type": "adaptive"}
output_config={"effort": "xhigh"}
ストリーミング応答を使う
UIでの体感速度を上げたい場合は、ストリーミングを使います。
Python
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Write a 5-step guide to writing a REST client in Go."
}
],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Node.js
const stream = client.messages.stream({
model: "claude-opus-4-8",
max_tokens: 4096,
messages: [
{
role: "user",
content: "Write a 5-step guide to writing a REST client in Go.",
},
],
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
process.stdout.write(event.delta.text);
}
}
REST APIを直接使う場合は、リクエストボディに "stream": true を追加し、Server-Sent Eventsを読み取ります。
{
"model": "claude-opus-4-8",
"max_tokens": 4096,
"stream": true,
"messages": [
{
"role": "user",
"content": "Write a 5-step guide to writing a REST client in Go."
}
]
}
ツール利用と関数呼び出しを実装する
Opus 4.8では、input_schema を持つツールを定義して関数呼び出しを行えます。effort レベルは、ツール呼び出しの計画や呼び出し回数にも影響します。
tools = [
{
"name": "get_weather",
"description": "Get the current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
},
},
"required": ["city"],
},
}
]
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
tools=tools,
messages=[
{
"role": "user",
"content": "What's the weather in Singapore right now?"
}
],
)
for block in message.content:
if block.type == "tool_use":
print(f"Call: {block.name}")
print(f"Args: {block.input}")
実際のアプリケーションでは、次の流れになります。
- Claudeが
tool_useブロックを返す - アプリケーション側で対応する関数を実行する
- 実行結果を
tool_resultとしてMessages APIに戻す - Claudeに最終回答を生成させる
低い effort では、Claudeは操作を少ない呼び出しにまとめやすくなります。高い effort では、まず計画を立ててからツールを呼び出す傾向があります。
マルチエージェント構成を設計している場合は、マネージドエージェント vs Agent SDKも参考になります。
会話途中のシステムメッセージを使う
Opus 4.8ではMessages APIに変更があり、messages 配列の途中にシステムエントリーを配置できます。従来のように先頭だけに限定されません。
これにより、タスクの途中で新しい指示や権限を挿入できます。Claude Codeのダイナミックワークフローでもこの仕組みが使われます。
サブエージェントをAPI経由でオーケストレーションする場合は、ダイナミックワークフローの詳細解説を参照してください。
ApidogでOpus 4.8インテグレーションをテストする
SDKから1回呼び出せることと、本番環境で安定して動くことは別です。
本番インテグレーションでは、次のような点を検証する必要があります。
- ストリーミングチャンクの扱い
- ツール呼び出しのスキーマ検証
-
output_configの形式 -
effort変更時の出力差分 - 適応思考ブロックの有無
- エラー時のレスポンス形式
Apidogを使うと、Messages APIのテストを1つのワークスペースで管理できます。
主な使い方は次のとおりです。
エンドポイントをリクエストとして保存
https://api.anthropic.com/v1/messagesを登録し、x-api-keyとanthropic-versionヘッダーを設定するモデルバージョンを比較
同じリクエストでclaude-opus-4-7をclaude-opus-4-8に差し替え、出力を比較するストリーミング応答を確認
ストリームされたチャンクを到着順に確認し、途中で壊れるレスポンスを検出するレスポンス形式を検証
effortやthinkingを切り替えたときの差分に対してアサーションを追加するエンドポイントをモック化
Messages APIのモック応答を作成し、クレジットを消費せずに下流コードをテストするエージェントループを検証
ツール呼び出しとtool_resultの連鎖をシナリオとして保存する
開始するには、Apidogをダウンロードし、Messagesエンドポイント用のリクエストを作成して、先ほどのcurlスニペットをインポートします。
複数のAIプロバイダーを扱っている場合も、同じテストフローをGemini 3.5 APIやQwen 3.7 APIに適用できます。
エラー処理とレート制限
Claude APIの主なエラーは次のとおりです。
| ステータス | エラー | 対応 |
|---|---|---|
| 400 | invalid_request_error |
リクエストボディを確認。Opus 4.8では budget_tokens や不正な effort 値に注意 |
| 401 | authentication_error |
APIキーの欠落または誤りを確認 |
| 403 | permission_error |
キーがモデルにアクセスできるか確認 |
| 429 | rate_limit_error |
バックオフして再試行 |
| 500 | api_error |
サーバー側エラー。バックオフして再試行 |
| 529 | overloaded_error |
APIの一時的な過負荷。バックオフして再試行 |
Pythonでは、最低限のリトライ処理を次のように実装できます。
import time
import anthropic
client = anthropic.Anthropic()
def call_with_retry(prompt, max_retries=4):
for attempt in range(max_retries):
try:
return client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": prompt
}
],
)
except anthropic.RateLimitError:
if attempt == max_retries - 1:
raise
time.sleep(2 ** attempt)
レート制限は使用ティアに応じて変わります。リアルタイム性が不要な高スループットのバッチ処理では、Batch APIの利用も検討できます。ベータヘッダーにより最大30万の出力トークンも利用できます。
Opus 4.7から4.8へ移行する
多くのプロジェクトでは、変更はモデルIDの差し替えだけです。
# Before
model="claude-opus-4-7"
# After
model="claude-opus-4-8"
差し替え後は、次の項目を確認してください。
effortレベル
動作範囲は4.7と同じですが、使用するレベルごとに評価を再実行する思考設定
budget_tokensを使っている場合は削除する。Opus 4.8では400エラーになるツールスキーマ
基本的に引き継げるが、ツール利用の評価は再実行するコスト
4.7とトークン単価は同じなので、モデル差し替えだけで予期しない単価変更は発生しない
FAQ
Claude Opus 4.8 APIのモデルIDは何ですか?
Claude APIとVertex AIでは claude-opus-4-8、AWS Bedrockでは anthropic.claude-opus-4-8 です。
Opus 4.8 APIに無料枠はありますか?
常設の無料API枠はありません。ただし、新規アカウントにはトライアルクレジットが付与されます。その他の低コストな利用方法は、無料アクセスガイドを参照してください。
effort レベルはどのように設定しますか?
リクエストに output_config を追加します。
{
"output_config": {
"effort": "xhigh"
}
}
指定できる値は low、medium、high、xhigh、max です。デフォルトは high です。
budget_tokens に関する400エラーが返るのはなぜですか?
Opus 4.8は手動の拡張思考をサポートしていません。budget_tokens を削除し、代わりに次の設定を使います。
thinking={"type": "adaptive"}
output_config={"effort": "xhigh"}
Opus 4.8はOpenAI互換SDKで動作しますか?
AnthropicはOpenAI SDK用の互換レイヤーを提供しています。ベースURLをAnthropicのエンドポイントに向け、AnthropicのAPIキーを使用し、モデル文字列は claude-opus-4-8 を指定します。
エージェント作業では max_tokens をどれくらいにすべきですか?
xhigh または max の effort を使う場合は、64Kから始めるのが実用的です。モデルが思考し、ツール呼び出しを連鎖させるための余地を確保できます。実際の使用量を見て調整してください。
Apidogでストリーミング応答をテストするには?
リクエストボディでストリーミングを有効にします。ApidogはServer-Sent Eventsのチャンクを到着順に表示するため、不完全な応答や途中で途切れるレスポンスを確認しやすくなります。
Top comments (0)