クロード・フェーブル 5.1 API 使い方 (Apidogでステップバイステップ解説)

Claude Fable 5.1 API ステップバイステップガイド:初回リクエスト、労力、ストリーミング、forced tool_choiceの代わりに厳格なツール、フォールバック、進捗アップデート、キャッシュ確認。

Ashley Innocent

Ashley Innocent

2 9月 2026

クロード・フェーブル 5.1 API 使い方 (Apidogでステップバイステップ解説)

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

Claude Fable 5.1は2026年9月1日にリリースされ、APIモデルIDはclaude-fable-5-1という正確な文字列で、日付サフィックスはありません。Fable 5と同じく、入力トークン100万あたり10ドル、出力トークン100万あたり50ドルですが、キャッシュ読み取りは100万あたり0.25ドルに削減され、Fable 5にはなかった3つの破壊的変更が加えられています。

このガイドでは、キーの取得、初回リクエストの送信、処理レベルの制御、ストリーミング、tool_choiceの強制なしでのツール使用、拒否時のフォールバック、進捗状況の更新、そして新しい料金でのキャッシュ動作を確認するためのusageオブジェクトの読み取りまで、全体的な手順を説明します。すべてのリクエストはJSONを使用したプレーンなHTTPであり、アプリケーションコードに組み込む前にApidogで構築およびデバッグできます。

新規に開始するのではなく、既存のFable 5またはOpus 5サービスを移行する場合は、このガイドと合わせて完全な移行ガイドをお読みください。モデルの概要については、Claude Fable 5.1とは何かから始めてください。

最初の呼び出しの前に: 400を返す3つのこと

1. 推論は設定できず、指示のみが可能。 Fable 5.1はすべてのリクエストで適応型推論を実行します。thinkingフィールドを省略するか、{"type": "adaptive"}を送信してください。{"type": "disabled"}{"type": "enabled", "budget_tokens": N}も400を返します。Opus 5から移行している場合、Opus 5ではhigh以下の努力レベルでdisabledが受け入れられていましたが、Fable 5.1ではそれを削除し、代わりにoutput_config.effortで支出を制御してください。

2. 強制ツール使用は廃止されました。 tool_choice: {"type": "any"}{"type": "tool", "name": "..."}は、tool_choice: type "tool" and "any" are not supported for this model.を返します。解決策は以下のツール使用のステップで説明されています。

3. 組織は30日間のデータ保持が必要です。 Fable 5.1は対象モデルです。ゼロデータ保持の組織またはワークスペースからのリクエストは、他のヒントなしに400 invalid_request_errorを返します。最初の呼び出しが失敗し、ボディが正しく見える場合は、何よりもまず保持期間を確認してください。

これら3つはすべて、AnthropicのClaude Fable 5.1の新機能で文書化されています。

ステップ1: APIキーを取得する

Claude Consoleにサインインし、組織設定のAPIキーセクションを開いて、キーを作成します。一度コピーしたら、後で読み取ることはできません。コードに貼り付けるのではなく、エクスポートしてください:

export ANTHROPIC_API_KEY="sk-ant-..."

Apidogでは、ANTHROPIC_API_KEYという名前の環境変数として保存し、ヘッダーで{{ANTHROPIC_API_KEY}}として参照することで、キーが保存されたリクエストボディに決して入らないようにします。

ステップ2: 初回リクエストを送信する

https://api.anthropic.com/v1/messagesに対して、3つのヘッダー(x-api-keyanthropic-version: 2023-06-01content-type: application/json)を持つPOSTリクエストを作成します。

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-fable-5-1",
    "max_tokens": 16000,
    "messages": [
      {"role": "user", "content": "Explain the difference between idempotent and safe HTTP methods, with one example each."}
    ]
  }'

公式SDKを使用したPythonでの同じ呼び出し:

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Explain the difference between idempotent and safe HTTP methods, with one example each."}],
)

if response.stop_reason == "refusal":
    print("declined:", response.stop_details.category if response.stop_details else None)
else:
    for block in response.content:
        if block.type == "text":
            print(block.text)

最初の呼び出しから身につけるべき2つの習慣があります。コンテンツを読み取る前にstop_reasonを確認してください。なぜなら、分類器による拒否は、空のコンテンツ配列を持つHTTP 200だからです。また、max_tokensには十分な余裕を持たせてください。これは、推論トークンと応答トークンを合わせて上限を設定し、推論は常にオンになっているため、推論を行わないモデルに合わせて調整された厳密な値では、ここで切り捨てられてしまいます。

応答にはthinkingブロックが含まれており、デフォルトのdisplay"omitted"の場合、そのテキストは空になります。これは予期される動作です。次のターンで変更せずにそのまま返してください。

ステップ3: 処理レベル(effort)でコストと深さを制御する

処理レベル(effort parameter)は、Fable 5.1の主要な制御レバーです。これはトップレベルではなくoutput_config内に配置され、lowmediumhighxhigh、およびmaxを受け入れます。デフォルトはhighです。

{
  "model": "claude-fable-5-1",
  "max_tokens": 16000,
  "output_config": {"effort": "medium"},
  "messages": [{"role": "user", "content": "Summarize this changelog in five bullets."}]
}

Anthropicのガイダンス: まずhighから始めて、独自の評価で他のレベルを試してみてください。Fable 5で試したことがあっても、レベル名がモデル間で同じ量の推論に対応しているわけではないため、再度試す必要があります。Anthropicの主張によると、mediumはFable 5と同等の結果をより低コストで提供し、lowはタスクあたりのコストでOpusやSonnetと競合することがよくあります。知っておくべき2つの処理レベル固有の動作: lowでは、Fable 5.1は検索および取得ツールを呼び出す頻度が少なくなり、記憶から回答することが多くなります。xhighmaxでは、推論で長い成果物をドラフトしてから再度書き出すことができるため、max_tokensは両方に対応する設定が必要です。

会話途中で処理レベルを変更する (ベータ版)。 Fable 5では、リクエスト間でトップレベルの処理レベルを変更すると、キャッシュされたプレフィックスが破棄されました。Fable 5.1では、空のコンテンツとoutput_configを持つrole: "system"メッセージが、キャッシュを無効にすることなく、次のユーザーターンから処理レベルを変更します。これにはmid-conversation-output-config-2026-07-01ベータヘッダーとclient.beta.messagesネームスペースが必要です。

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    output_config={"effort": "high"},
    betas=["mid-conversation-output-config-2026-07-01"],
    messages=[
        {"role": "user", "content": "Plan a migration from SQLite to PostgreSQL in three short steps."},
        {"role": "assistant", "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."},
        {"role": "system", "content": [], "output_config": {"effort": "low"}},
        {"role": "user", "content": "Summarize the plan in one sentence."},
    ],
)

このように処理レベルを下げる方法は信頼性があります。上げる場合は、lowからxhighのような大きなジャンプで最も効果的です。Opus 5の処理レベルパラメータガイドでは5つのレベルが詳細に説明されており、同じ意味論がここでも適用されます。

ステップ4: 応答をストリーミングする

Fable 5.1は、高い処理レベルでの難しいタスクでは数分間実行される可能性があるため、長くなる可能性のあるものはすべてストリーミングしてください。SDKでは、128,000トークンという上限に近いmax_tokens値の場合、HTTPタイムアウトを避けるためにストリーミングが必要です。

with client.messages.stream(
    model="claude-fable-5-1",
    max_tokens=64000,
    messages=[{"role": "user", "content": "Write a test plan for a rate-limited public API."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final = stream.get_final_message()

print(final.stop_reason, final.usage.output_tokens)

Apidogでは、ストリーミング応答は到着すると同時にレンダリングされるため、high処理レベルのターンが最初のテキストトークンを表示するまでにどれだけの時間を要するかを最も早く確認できます。

ステップ5: 強制せずにツール使用を追加する

ツールはFable 5と同じ方法で定義します。変更点は、呼び出しを保証する方法です。Fable 5ではtool_choice: {"type": "tool", ...}で強制できましたが、Fable 5.1では強制呼び出しが推論をスキップし、モデルがその作業内容を引数に書き込んでしまうため、400を返します。

代替策は3つの部分から構成されます: tool_choiceautoに保ち、命令でツールの名前を挙げ、スキーマにadditionalProperties: falseを付けてツールにstrict: true厳格なツール使用)を設定して、引数が常に検証されるようにします。

record_summary_tool = {
    "name": "record_summary",
    "description": "Record the structured summary of the document.",
    "strict": True,
    "input_schema": {
        "type": "object",
        "properties": {"summary": {"type": "string"}},
        "required": ["summary"],
        "additionalProperties": False,
    },
}

response = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    tools=[record_summary_tool],
    tool_choice={"type": "auto"},
    messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday. Call the record_summary tool with your result."}],
)

強制呼び出しが単にJSONを返すためだけに存在していたのであれば、ツールを使う代わりに構造化出力(output_config.format)を使用してください。ユーザーではなくアプリケーションが、多ターン会話の現在のターンで特定の呼び出しを要求する場合は、最新のユーザーターンの後にrole: "system"メッセージを追加し、ツール名を指定して呼び出しが必要であることを伝え、そのメッセージを履歴に保持します。tool_choice: {"type": "none"}は、ツールを呼び出してはならないターンでは引き続き機能します。

エージェントループ自体は変更されていません: stop_reasontool_useの場合、すべてのtool_useブロックを実行し、すべてのtool_resultブロックを1つのユーザーメッセージで返し、アシスタントのターンは、推論ブロックを含めて、返されたとおりに正確に再度追加します。この最後の条項は、保存された推論ガイドが説明するように、以前のどのモデルよりもFable 5.1で重要になります。

注意すべき1つの動作: 次の独立した読み取りがタスクによってのみ示唆される長いループでは、Fable 5.1はFable 5が複数バッチ処理したツール呼び出しを、1ターンごとに1つ発行する場合があります。Anthropicの解決策は、各ツール結果メッセージの後に1文のヒントを追加することです。「まず、次に必要なものを個別にリストアップし、次に、他の結果に依存しないすべての項目をこの1つの応答で要求してください。」これをターン範囲のシステムメッセージ(clear_at: "next_user_message"、ベータヘッダーmid-conversation-system-clear-at-2026-08-21)として送信し、それ以前のコピーはすべてそのまま残してください。

ステップ6: フォールバックで拒否を処理する

Fable 5.1は安全性分類器を実行します。拒否されたリクエストは、HTTP 200としてstop_reason: "refusal"と、カテゴリ(cyberbiofrontier_llmreasoning_extraction、またはgeneral_harms)を示すstop_detailsオブジェクトを伴って返されます。出力前の拒否は課金されません。

デフォルトでフォールバックをオプトインしてください。最も単純な形式は、server-side-fallback-2026-07-01ベータヘッダーを使用したfallbacks: "default"です。これにより、Anthropicがそのカテゴリに推奨するモデルで拒否されたリクエストが再試行されます。Fable 5.1の場合、許可されるターゲットはclaude-opus-4-8claude-opus-5です。

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    fallbacks="default",
    betas=["server-side-fallback-2026-07-01"],
    messages=[{"role": "user", "content": "Audit this authentication middleware for logic bugs."}],
)

fallback_ran = any(
    entry.type == "fallback_message" for entry in (response.usage.iterations or [])
)
if fallback_ran and response.stop_reason != "refusal":
    print("served by", response.model)

応答は、トップレベルのmodelフィールドでサービスを提供したモデルの名前を示し、fallbackコンテンツブロックが引き継ぎを示します。ターンをエコーバックするときは、そのブロックが出現した場所に残しておいてください。2つの制限事項: fallbacksはBatches APIでは拒否され、Bedrock、Google Cloud、Foundryでは利用できません。これらのプラットフォームでは、代わりにSDKのBetaRefusalFallbackMiddlewareをクライアントに登録する必要があります。拒否処理ガイドでは、課金、スティッキールーティング、およびフォールバッククレジットによる手動再試行について説明しています。

ステップ7: 長いターンの間に進捗状況の更新を取得する

ツール呼び出しの間、Fable 5.1は、何を発見し、次に何をすべきかについての短いメモを書き込みます。これらは、ツール呼び出しの直前に独自のthinkingブロックとして届き、デフォルトのdisplayではこれらのブロックは空です。推論自体は非表示のまま、テキストとして受信するには、thinking-display-updates-2026-08-18ベータヘッダーを使用してdisplay: "updates"を設定します。

{
  "model": "claude-fable-5-1",
  "max_tokens": 16000,
  "thinking": {"type": "adaptive", "display": "updates"},
  "tools": [...],
  "messages": [{"role": "user", "content": "Review the PRs open against our billing service."}]
}

空でないテキストを含むthinkingブロックは、レンダリングできるステータス行となります。Fable 5.1はFable 5よりもこれらの記述が少ないため、UIがナレーションに依存している場合は、モデルに最終応答のために発見を保持するように指示するプロンプト行も削除してください。

ステップ8: 0.25ドルのキャッシュ料金で利用状況オブジェクトを読み取る

プロンプトキャッシュは、Fable 5.1の料金変更が適用される場所です。安定したプレフィックスにcache_controlを設定し、usageでヒットを確認します。

response = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    system=[{"type": "text", "text": LONG_STABLE_SYSTEM_PROMPT, "cache_control": {"type": "ephemeral"}}],
    messages=[{"role": "user", "content": "Which endpoints in the spec lack an error schema?"}],
)
u = response.usage
print(u.input_tokens, u.cache_creation_input_tokens, u.cache_read_input_tokens)

最初の送信では、cache_creation_input_tokensはゼロではありません(5分間のTTLで100万トークンあたり12.50ドルで課金されます)。5分以内の2回目の送信では、cache_read_input_tokensがゼロでないはずで、100万トークンあたり0.25ドルで課金されます。同じリクエストでこれがゼロのままである場合、プレフィックスの何かが毎回変更されています: システムプロンプト内のタイムスタンプ、未ソートのJSON、変動するツール配列などです。最小キャッシュ可能プロンプトは512トークンです。

このモデル固有の2つのキャッシュに関する事実。キャッシュミスはヒットの40倍のコストがかかるため、キャッシュをウォームアップしておくことはFable 5よりも重要であり、メッセージごとの処理レベルとターン範囲のシステムメッセージは、セッション中にリセットなしで変更できるようにするために部分的に存在します。また、キャッシュをリセットするのと同じ編集(systemの再構築、以前のターンの編集)は、推論ブロックも無効にするため、追加のみの規律は2倍の価値があります。

Apidogで全体のフローをテストおよびデバッグする

上記各ステップをApidogコレクションの1つのリクエストとして保存します: 初回呼び出し、処理レベルのバリエーション、ストリーミング、ツールループ、フォールバック、キャッシュチェック。キーとmodelには環境変数を使用し、claude-fable-5claude-fable-5-1の間でコレクション全体を切り替える際に編集は1回で済むようにします。次に、アサーションを追加します: 無害なテストプロンプトではstop_reasonrefusalではないこと、2回目のキャッシュリクエストではusage.cache_read_input_tokensがゼロより大きいこと、推論バインディングヘッダーで実行したときにinput_transformationsエントリにreason: "prefix_binding_mismatch"がないこと。ハーネスの変更の前後にコレクションを実行してください。Apidogをダウンロードして設定してください。同じコレクションはApidog CLIを通じてCIチェックとして機能します。

遭遇する可能性のあるエラーと落とし穴

よくある質問

Claude Fable 5.1 APIのモデルIDは何ですか? claude-fable-5-1です。Amazon Bedrockではanthropic.claude-fable-5-1です。Google Cloud、Microsoft Foundry、およびAWS上のClaude Platformではclaude-fable-5-1を使用します。

Claude Fable 5.1を使用するためにベータヘッダーは必要ですか? いいえ。ベースモデル、適応型推論、処理レベル、ツール、およびキャッシュはすべて標準のanthropic-version: 2023-06-01ヘッダーで機能します。ベータヘッダーは、メッセージごとの処理レベル、ターン範囲のシステムメッセージ、進捗状況の更新、サーバーサイドのフォールバック、および推論バインディングの制御にのみ必要です。

Claude Fable 5.1でツール呼び出しを強制できますか? いいえ。tool_choiceanyおよびtoolは400を返します。autoを使用し、プロンプトでツール名を指定し、スキーマ有効な引数のためにstrict: trueを設定するか、JSON抽出には構造化出力を使用してください。

Claude Fable 5.1 APIの最大出力トークン数は? Messages APIでは128,000トークンです。大規模なものにはストリーミングを使用してください。300,000トークンのBatch APIベータ版はFable 5.1ではリストされていません。

より安価なキャッシュ読み取りを確認するにはどうすればよいですか? 繰り返しリクエストでusage.cache_read_input_tokensを確認してください。これらのトークンは、Fable 5.1では100万あたり0.25ドルで課金されますが、Fable 5では1ドル、Opus 5では0.50ドルです。料金内訳で具体的な数字が示されています。

Fable 5 APIガイドはまだ適用されますか? ほとんどの場合、適用されます。Fable 5 APIガイドは同じエンドポイントをカバーしていますが、その強制ツール使用の例は現在400を返し、メッセージごとの処理レベルや進捗状況の更新よりも前のものです。

ボタン

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる