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 を使用してアクセスできるこれらの機能も組み込まれています。
  • Platform 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) : リクエストを受け取り、モデルが生成を完了した後に 1 つのレスポンスを提供します。
  • 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 インスタンスのストリームが含まれます。

レスポンスの本文には、candidates オブジェクトが含まれます。これは Candidate オブジェクトのリストです。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)WebSockets API

Live API は、双方向ストリーミング用のステートフル WebSocket ベースの API を提供し、リアルタイム ストリーミングのユースケースを実現します。詳細については、 Live API ガイドLive API リファレンス をご覧ください。

特殊モデル

Gemini API は、Gemini モデル ファミリーに加えて、 ImagenLyriaエンベディング モデルなどの特殊モデルのエンドポイントを提供します。これらのガイドについては、モデル セクションをご覧ください。

Platform API

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

次のステップ

使い始めたばかりの場合は、Gemini API プログラミング モデルを理解するのに役立つ次のガイドをご覧ください。

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