Gemini API reference

この 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_dataBlob): 未加工のメディア バイトとその 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 は、usermodel の間で交互に切り替わる必要があります。

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 モデル ファミリーに加えて、ImagenLyriaエンベディング モデルなどの特殊なモデルのエンドポイントも提供します。これらのガイドは、[モデル] セクションで確認できます。

プラットフォーム API

残りのエンドポイントは、これまで説明したメイン エンドポイントで使用する追加機能を有効にします。詳しくは、ガイド セクションのバッチモードFile API をご覧ください。

次のステップ

初めてご利用になる場合は、次のガイドをご覧ください。Gemini API プログラミング モデルについて理解を深めることができます。

さまざまな Gemini API の機能を紹介し、コード例を提供する機能ガイドもご覧ください。