この API リファレンスでは、Gemini モデルの操作に使用できる標準 API、ストリーミング API、リアルタイム API について説明します。REST API は、HTTP リクエストをサポートする環境であれば、どの環境でも使用できます。最初の API 呼び出しを開始する方法については、クイックスタート ガイドをご覧ください。言語固有のライブラリと SDK のリファレンスをお探しの場合は、左側のナビゲーションの [SDK リファレンス] で、該当する言語のリンクをクリックしてください。
プライマリ エンドポイント
Gemini API は、次の主要なエンドポイントを中心に構成されています。
- 標準コンテンツ生成(
generateContent
): リクエストを処理し、モデルの完全なレスポンスを 1 つのパッケージで返す標準の REST エンドポイント。これは、結果全体を待つことができる非インタラクティブなタスクに最適です。 - ストリーミング コンテンツ生成(
streamGenerateContent
): サーバー送信イベント(SSE)を使用して、レスポンスのチャンクを生成と同時にプッシュします。これにより、chatbot などのアプリケーションで、より高速でインタラクティブなエクスペリエンスを実現できます。 - Live API(
BidiGenerateContent
): リアルタイムの会話ユースケース向けに設計された、双方向ストリーミング用のステートフルな WebSocket ベースの API。 - バッチモード(
batchGenerateContent
):generateContent
リクエストのバッチを送信するための標準 REST エンドポイント。 - エンベディング(
embedContent
): 入力Content
からテキスト エンベディング ベクトルを生成する標準の REST エンドポイント。 - Gen Media API: Imagen(画像生成用)や Veo(動画生成用)などの専用モデルを使用してメディアを生成するためのエンドポイント。Gemini にはこれらの機能も組み込まれており、
generateContent
API を使用してアクセスできます。 - プラットフォーム API: ファイルのアップロードやトークンのカウントなどのコア機能をサポートするユーティリティ エンドポイント。
認証
Gemini API へのすべてのリクエストには、API キーを含む x-goog-api-key
ヘッダーを含める必要があります。Google AI Studio で数回クリックするだけで作成できます。
次の例は、ヘッダーに API キーが含まれているリクエストです。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a few words"
}
]
}
]
}'
Gemini SDK を使用して API にキーを渡す方法については、Gemini API キーの使用ガイドをご覧ください。
コンテンツの生成
これは、モデルにプロンプトを送信するための中央エンドポイントです。コンテンツを生成するためのエンドポイントは 2 つあります。主な違いは、レスポンスの受信方法です。
generateContent
(REST): リクエストを受け取り、モデルが生成を完了した後に単一のレスポンスを提供します。streamGenerateContent
(SSE): 同じリクエストを受け取りますが、モデルはレスポンスのチャンクを生成時にストリーミングで返します。これにより、部分的な結果をすぐに表示できるため、インタラクティブ アプリケーションのユーザー エクスペリエンスが向上します。
リクエストの本文の構造
リクエスト本文は、標準モードとストリーミング モードの両方で同じ JSON オブジェクトであり、いくつかのコア オブジェクトから構築されます。
Content
オブジェクト: 会話の 1 つのターンを表します。Part
オブジェクト:Content
ターン内のデータ(テキストや画像など)。inline_data
(Blob
): 未加工のメディア バイトとその MIME タイプのコンテナ。
最上位のレベルでは、リクエストの本文に contents
オブジェクトが含まれます。これは Content
オブジェクトのリストで、それぞれが会話のターンを表します。ほとんどの場合、基本的なテキスト生成では 1 つの Content
オブジェクトを使用しますが、会話履歴を維持する場合は複数の Content
オブジェクトを使用できます。
一般的な generateContent
リクエスト本文を次に示します。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
// A list of Part objects goes here
]
},
{
"role": "model",
"parts": [
// A list of Part objects goes here
]
}
]
}'
レスポンス本文の構造
レスポンス本文は、ストリーミング モードと標準モードでほぼ同じですが、次の点が異なります。
- 標準モード: レスポンスの本文には
GenerateContentResponse
のインスタンスが含まれます。 - ストリーミング モード: レスポンスの本文には
GenerateContentResponse
インスタンスのストリームが含まれます。
レスポンスの本文には、Candidate
オブジェクトのリストである candidates
オブジェクトが含まれています。Candidate
オブジェクトには、モデルから返された生成されたレスポンスを含む Content
オブジェクトが含まれています。
リクエストの例
次の例は、さまざまなタイプのリクエストでこれらのコンポーネントがどのように連携するかを示しています。
テキストのみのプロンプト
シンプルなテキスト プロンプトは、単一の Content
オブジェクトを含む contents
配列で構成されます。そのオブジェクトの parts
配列には、text
フィールドを含む単一の Part
オブジェクトが含まれています。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a single paragraph."
}
]
}
]
}'
マルチモーダル プロンプト(テキストと画像)
プロンプトでテキストと画像の両方を指定するには、parts
配列に 2 つの Part
オブジェクトを含める必要があります。1 つはテキスト用、もう 1 つは画像 inline_data
用です。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "/9j/4AAQSkZJRgABAQ... (base64-encoded image)"
}
},
{"text": "What is in this picture?"},
]
}]
}'
マルチターン会話(チャット)
複数のターンを含む会話を構築するには、複数の Content
オブジェクトを含む contents
配列を定義します。API は、この履歴全体を次のレスポンスのコンテキストとして使用します。各 Content
オブジェクトの role
は、user
と model
を交互に繰り返す必要があります。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
{ "text": "Hello." }
]
},
{
"role": "model",
"parts": [
{ "text": "Hello! How can I help you today?" }
]
},
{
"role": "user",
"parts": [
{ "text": "Please write a four-line poem about the ocean." }
]
}
]
}'
重要なポイント
Content
はエンベロープです。ユーザーからのものかモデルからのものかにかかわらず、メッセージ ターン用の最上位コンテナです。Part
でマルチモーダルを実現する: 1 つのContent
オブジェクト内で複数のPart
オブジェクトを使用して、さまざまな種類のデータ(テキスト、画像、動画 URI など)を組み合わせます。- データ方法を選択します。
- 直接埋め込まれた小さなメディア(ほとんどの画像など)の場合は、
inline_data
を含むPart
を使用します。 - サイズの大きいファイルや、リクエスト間で再利用するファイルの場合は、File API を使用してファイルをアップロードし、
file_data
部分で参照します。
- 直接埋め込まれた小さなメディア(ほとんどの画像など)の場合は、
- 会話履歴を管理する: REST API を使用するチャット アプリケーションの場合は、各ターンの
Content
オブジェクトを追加してcontents
配列を作成し、"user"
ロールと"model"
ロールを交互に指定します。SDK を使用している場合は、会話履歴を管理するおすすめの方法について、SDK のドキュメントをご覧ください。
レスポンスの例
次の例は、さまざまなタイプのリクエストでこれらのコンポーネントがどのように連携するかを示しています。
テキストのみのレスポンス
シンプルなテキスト レスポンスは、モデルのレスポンスを含む 1 つ以上の content
オブジェクトを含む candidates
配列で構成されます。
標準レスポンスの例を次に示します。
{
"candidates": [
{
"content": {
"parts": [
{
"text": "At its core, Artificial Intelligence works by learning from vast amounts of data ..."
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 1
}
],
}
ストリーミング レスポンスのシーケンスを次に示します。各レスポンスには、完全なレスポンスをまとめる responseId
が含まれています。
{
"candidates": [
{
"content": {
"parts": [
{
"text": "The image displays"
}
],
"role": "model"
},
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": ...
},
"modelVersion": "gemini-2.5-flash-lite",
"responseId": "mAitaLmkHPPlz7IPvtfUqQ4"
}
...
{
"candidates": [
{
"content": {
"parts": [
{
"text": " the following materials:\n\n* **Wood:** The accordion and the violin are primarily"
}
],
"role": "model"
},
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": ...
}
"modelVersion": "gemini-2.5-flash-lite",
"responseId": "mAitaLmkHPPlz7IPvtfUqQ4"
}
Live API(BidiGenerateContent)WebSocket API
Live API は、双方向ストリーミング用のステートフル WebSocket ベースの API を提供し、リアルタイム ストリーミングのユースケースを可能にします。詳しくは、Live API ガイドと Live API リファレンスをご覧ください。
特殊モデル
Gemini API は、Gemini ファミリーのモデルに加えて、Imagen、Lyria、エンベディング モデルなどの特殊なモデルのエンドポイントも提供します。これらのガイドは、モデル セクションで確認できます。
プラットフォーム API
残りのエンドポイントは、これまで説明したメイン エンドポイントで使用する追加機能を有効にします。詳しくは、ガイド セクションのバッチモードと File API をご覧ください。
次のステップ
初めてご利用になる場合は、次のガイドをご覧ください。Gemini API プログラミング モデルについて理解を深めることができます。
さまざまな Gemini API の機能を紹介し、コード例を提供する機能ガイドもご覧ください。