/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(ツールを呼び出したい場合)。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