/v1/messages)を呼び出すと、レスポンスは OpenAI 互換モードとは完全に異なります。返答は型付きの content ブロック配列であり、ストリーミングでは Anthropic の名前付きイベント SSE プロトコルを使用します。このページでは、両方のモードをどのようにパースするかを説明します。
リクエスト側(エンドポイント、
anthropic-version ヘッダー、x-api-key 認証、effort / thinking パラメータ)については、Claude API の基本 と Claude Effort & Thinking ガイド を参照してください。このページはレスポンス側のみを扱います。例では軽量モデル claude-haiku-4-5-20251001 を使用します。ノンストリーミングレスポンス
トップレベルはmessage オブジェクトであり、回答は content 配列内に格納され、type ごとにブロックに分割されます:
content 配列を反復処理する必要があります — OpenAI のように単一の文字列フィールドを読み取ることはできません:
stop_reason の値: end_turn (通常)、max_tokens (max_tokens により中断 — テキストが空の場合があります。制限を引き上げてください)、stop_sequence、tool_use (ツール呼び出しを要求)、refusal (セーフティポリシーにより拒否。content は空の配列です — Claude の拒否で空の content が返される理由 を参照)。thinking を有効にすると、content 配列に type: "thinking" ブロックが追加され、text ブロックの前に配置されます。ストリーミング応答(named-event SSE)
Claude のストリーミングでは Anthropic のイベントプロトコルを使います。各メッセージにはevent: 名と data: ペイロードがあり、OpenAI のように各チャンクを同じように扱うのではなく、イベントタイプでディスパッチします。
要点は、
text_delta を content_block_delta の中で蓄積することです。
thinking(adaptive thinking)を有効にすると、最初に
type: "thinking" ブロックが表示されます。増分は thinking_delta で、ブロックが閉じる前に signature_delta(thinking ブロックのシグネチャー)が表示されます。thinking を表示するには、thinking_delta と text_delta を別々にレンダリングします。Claude Effort & Thinking Guide を参照してください。OpenAI互換モードとの主な違い
利用と課金
- 非ストリーミング:
usageは結果とともに返ってきて、input_tokens、output_tokens、cache_creation_input_tokens、cache_read_input_tokensが含まれます。 - ストリーミング:
input_tokensはmessage_startにあり、最終的なoutput_tokensはmessage_deltaにあります — 両方をマージしてください。 - キャッシュヒットフィールド(
cache_read_input_tokens)の割引と使用量については、Claude Cache Billing を参照してください。
関連リンク
- 同じグループ: Claude API 基礎 · Claude キャッシュ 課金 · Claude の推論強度と Thinking ガイド
- 互換フォーマット対応版: OpenAI 互換モード: 応答の処理
- token の取得 / 管理:
https://api.apiyi.com/token