アプリにClaude APIを組み込む方法
Claude APIを組み込むには、AnthropicのClaude Consoleでキーを作成し、サーバー側のシークレット(通常は ANTHROPIC_API_KEY)として保存したうえで、自分のサーバー上のルートから、Anthropicの公式SDKのいずれかを使ってMessages APIを呼び出します。各リクエストでは、model(モデル)を指定し、max_tokens(受け取る返信の最大長)を設定し、会話をmessagesとして送ります。指示内容は別のsystemプロンプトに書きます。利用上限を設定し、長い返信はストリーミングで受け取り、レート制限(429)や過負荷(529)のエラーにはリトライで対応してください。
このガイドでは、セットアップ、安全なリクエストの流れ、AIビルダー向けのプロンプト、想定しておくべきエラーを扱います。Anthropicの詳細は、2026年9月時点のドキュメントに基づいています。トークンと料金の一般的な仕組みについては、LLM APIの使い方を参照してください。
作れるもの
- チャットアシスタントやヘルプウィジェット(AIチャットボットアプリの作り方)
- 要約、言い換え、返信の下書き
- 文書、メール、フォームからの項目の抽出
- 自社のコンテンツに基づく質問への回答
- ツール利用(tool use)を通じて、アプリの関数を呼び出すエージェント
その他のアイデアは、アプリにAI機能を追加する方法をご覧ください。
Messages APIの概要
AnthropicのAPIリファレンスによると、リクエストは https://api.anthropic.com/v1/messages への POST で、次の内容を含みます。
| 項目 | 内容 |
|---|---|
x-api-key ヘッダー | APIキー |
anthropic-version ヘッダー | APIのバージョン(例:2023-06-01) |
model(必須) | 使用するClaudeのモデル |
max_tokens(必須) | 返信に含めてよいトークンの上限。モデルはそれより前に止まることがあります |
messages(必須) | 会話。user と assistant のターンを交互に並べたもの |
system(任意) | 会話全体に適用される指示 |
stream(任意) | true にすると、サーバー送信イベントで、返信が書かれるそばから受け取れます |
APIはステートレスです。会話を続けるには、リクエストのたびに過去のターンを送り直す必要があります。だからこそ、長い会話ほど1メッセージあたりのコストが増えます。
Anthropicは、Python、TypeScript、C#、Go、Java、PHP、Rubyの公式SDKを提供しています。SDKはヘッダーを設定し、レスポンスを解析し、ストリーミングにも対応しています。特別な理由がなければ、生のHTTPではなくSDKを使ってください。
モデルの選び方
Anthropicは、能力、速度、価格のバランスが異なる複数のClaudeモデルを提供しており、そのラインアップは変わります。タスクをうまくこなせる中で最も小さいモデルを選び、実際の例でテストしてください。モデルIDは設定で管理し、コードを変えずに切り替えられるようにしておくとよいです。現在のモデルと料金は、Anthropicのモデル・料金ページで確認してください。
アカウントのセットアップ
- platform.claude.com の Claude Console にサインインし、課金情報を追加します。
- APIキーを作成します。 テスト用と本番用でキーを分け、一方を無効化してももう一方に影響が出ないようにしてください。
- 利用上限を設定します。 Anthropicのエラーページでは、設定した利用上限に達すると、APIが400エラーを返すと説明されています。アプリはその場合に、わかりやすいメッセージを表示する必要があります。
- Consoleで、アカウントのレート制限を確認します。レート制限は組織単位で計測されます。
リクエストの流れ
- ユーザーがアプリで操作する。メッセージを送る、「要約」をクリックする、などです。
- ブラウザが、Anthropicではなく自分のサーバーのルートを呼び出す。
- サーバーが、ユーザーがログインしていて、その機能の利用が許可されているかを確認し、ユーザーごとの上限を適用する。
- リクエストを組み立てる。ルールを書いたシステムプロンプト、ユーザーの入力、タスクに必要なデータベース上のデータを含めます。
- 環境変数のキーを使い、適切な
max_tokensを指定して、Messages APIを呼び出す。 - 返信をブラウザにストリーミングし、レスポンスからトークン使用量を記録する。
選択肢とトレードオフ
| 判断 | シンプルな選択 | さらに検討する場合 |
|---|---|---|
| ストリーミング | 返信の全体を待つ | チャットや長い返信にはストリーミングを使う。Anthropicは長時間かかるリクエストにはストリーミングまたはバッチを推奨 |
| 出力形式 | プレーンテキスト | コードで項目を読み取る必要がある場合は、構造化されたJSON出力 |
| 自分のデータ | 関連するレコードを含める | 量が多すぎる場合は、コンテンツに対する検索を使う(RAGとは) |
| アクション | モデルは文章を書くだけ | ツール利用。モデルが、自分で定義した関数の実行をコードに依頼する |
| 大量の、急がない処理 | 項目をループで処理する | Message Batches API。送信して、後から結果を取得する |
AIビルダーに与えるプロンプト
最初の機能の例:
「この文書について質問する」パネルを追加してください。POST /api/ask というサーバーのルートを呼び出し、そのルートでユーザーがログインしていて文書の所有者であることを確認します。その後、公式のAnthropic SDKとシークレット ANTHROPIC_API_KEY を使って、Claude Messages APIを呼び出してください。モデルIDはシークレット CLAUDE_MODEL から読み込みます。システムプロンプトは「回答は提供された文書だけに基づいてください。文書に答えがない場合は、その旨を伝えてください。」とします。文書の本文と質問を送り、max_tokens は800に設定し、回答はページにストリーミングしてください。キーがブラウザに露出しないようにしてください。
ガードレールとエラー処理:
各ユーザーの質問を1時間あたり20件に制限し、その記録はデータベースに保存してください。各レスポンスの入力トークンと出力トークンを、ユーザーIDとリクエストIDと一緒に記録してください。429または529のエラーが出た場合は、retry-after ヘッダーを尊重しながら、指数バックオフで最大3回リトライし、それでも失敗したら「アシスタントが混み合っています。しばらくしてから再度お試しください。」と表示してください。APIが利用上限のエラーを返した場合は、「AI機能は一時停止中です」と表示し、管理者に通知してください。
想定しておくべきエラー
Anthropicのエラーのドキュメントに基づき、アプリが実際に遭遇しやすいものは次のとおりです。
| コード | 種類 | 対処 |
|---|---|---|
| 400 | invalid_request_error | リクエストを修正する。自分で設定した利用上限に達したときにも返されます |
| 401 | authentication_error | キーが存在し、正しく、無効化されていないかを確認する |
| 413 | request_too_large | 送信量を減らす。Messages APIは1リクエストあたり最大32 MBまで受け付けます |
| 429 | rate_limit_error | retry-after を尊重して、待ってからリトライする |
| 500 | api_error | 指数バックオフでリトライする。続く場合はリクエストIDを添えてサポートに連絡する |
| 529 | overloaded_error | すべてのユーザーのアクセス集中による一時的な過負荷。待ってリトライする |
Anthropicのドキュメントによると、公式SDKは一時的な失敗(接続エラー、レート制限、5xxエラー)を、デフォルトで指数バックオフにより2回まで自動的にリトライします。この動作は設定で変更できます。すべてのレスポンスには request-id ヘッダーが付いています。サポートが問題を追跡できるように、それを記録しておいてください。
よくあるミス
- ブラウザからAPIを呼び出す。 キーが公開されてしまいます。必ずサーバー経由にしてください。APIキーを安全に保つ方法を参照してください。
max_tokensは上限であって目標値ではないことを忘れる。 機能に必要な分だけ設定してください。小さすぎると回答が途中で切れ、大きすぎると長く、コストの高い返信になります。- ルールをユーザーのメッセージに書く。 変わらない指示は
systemプロンプトに入れ、権限はコードで管理します。 - 会話全体を永遠に送り続ける。 会話が長くなったら、古いターンを切り詰めるか要約してください。
- 利用上限やユーザーごとの上限を設定しない。
- モデルIDを直接コードに書き込む。 モデルは更新され、廃止されることもあります。
- 停止理由を無視する。 返信が
max_tokensに達して止まった場合は、ユーザーに伝えるか、上限を上げてください。
チェックリスト
- Claude Consoleでキーを作成し、サーバー側のシークレットとして保存している
- テスト用と本番用でキーを分けている
- 利用上限を設定し、上限に達したときのメッセージを用意している
- すべてのリクエストは、権限チェック付きで自分のサーバーを経由する
- ルールはシステムプロンプトに書き、モデルIDは設定で変更できる
- 機能ごとに
max_tokensを設定し、長い返信はストリーミングしている - アプリ側でユーザーごとのレート制限を設けている
- 429と529をバックオフで処理し、リクエストIDを記録している
- ページを壊さない、わかりやすいエラー表示になっている
- 空の入力、非常に長い入力、悪意のある入力でテストしている
Mythexで Claude API を使う
Mythexで作るアプリでは、Claudeの機能は自分のAnthropicキーを使い、料金はMythexのビルドクレジットではなく、自分のAnthropicアカウントに請求されます。これは、コードを書くMythexのエージェントとは別物です。ANTHROPIC_API_KEY は /secrets、プロジェクト設定、またはチャット内のシークレットカードから、プロジェクトのシークレットとして追加してください。その後、上記のようなプロンプトを使って機能を説明します。公開中のアプリでシークレットを変更したら、再度公開して反映させてください。スターター用のプロンプトは、自分のAPIキーでAI機能を追加するを参照してください。プロバイダーを比較している場合は、同じ内容をOpenAIについて扱ったOpenAI APIの組み込み方法もご覧ください。
よくある質問
Claude APIのキーはどのように取得しますか?
Claude Console(platform.claude.com)にサインインし、課金を設定してからAPIキーを作成します。キーはサーバー側のシークレットとして保存してください。慣例的な名前は ANTHROPIC_API_KEY です。ブラウザ側のコードに入れてはいけません。
Claude APIへのリクエストには何が必要ですか?
2026年9月時点で、AnthropicのMessages APIリファレンスでは、必須のボディ項目は model、max_tokens、messages の3つです。HTTPで直接呼び出す場合は、x-api-key と anthropic-version のヘッダーも必要です。公式SDKを使えば、これらは自動で設定されます。
Claude APIの529エラーとは何ですか?
Anthropicのエラーページでは、529 は overloaded_error と説明されています。すべてのユーザーのアクセス集中により、APIが一時的に過負荷になっている状態です。指数バックオフでリトライしてください。公式SDKは一部の一時的なエラーを自動でリトライします。
OpenAI SDK用に書かれたコードでClaudeを使えますか?
Anthropicは、OpenAI SDKの形式でClaudeを利用できる互換レイヤーを提供しています。新しく書くコードであれば、Claude固有の機能を使える公式SDKの方が通常は適しています。