Gemini ネイティブ

コンテンツの生成

Google Gemini API形式を使用してコンテンツを生成します

POST
/v1beta/models/{model}:generateContent

Gemini Models APIから返されるモデルを使用して、Geminiのリクエストおよびレスポンス形式を利用します。ProtoJSONのlowerCamelCase、および対応するprotoのsnake_caseフィールド名が使用可能です。サポートされているオプションのフィールドや値は、選択したモデルによって異なります。

パスパラメータ

modelstringpath必須

モデル名(例: gemini-2.5-pro, gemini-3.5-flash)。

Query Parameters

keystringquery

APIキー(ヘッダー認証の代わりに使用)。

Authentication

Geminiエンドポイントは複数の認証方法をサポートしています:

  • ?key=YOUR_API_KEY クエリパラメータ
  • x-goog-api-key: YOUR_API_KEY ヘッダー
  • Authorization: Bearer YOUR_API_KEY ヘッダー

リクエストボディ

contentsarray必須

parts およびオプションの role を含む会話コンテンツ。メディアパーツには inlineData / inline_data または fileData / file_data を使用します。TokenLabによって作成されたファイルおよびキャッシュIDは、その所有ワークスペース内でのみ使用可能です。

systemInstructionobject

モデルに対するシステム指示。

generationConfigobject

temperature、topP、topK、maxOutputTokens、stopSequences、candidateCount、responseModalities、responseMimeType、responseSchema、thinkingConfig などの生成設定。対応するsnake_case名も使用可能です。サポートされている値や組み合わせはモデルによって異なります。

safetySettingsarray

安全フィルターの設定。

上記で示されたすべてのlowerCamelCaseフィールドは、公式のprotoである snake_case 表記でも使用できます。例:system_instruction、generation_config、safety_settings、tool_config、cached_content、file_data.file_uri、inline_data.mime_type。

Supported Methods

Gemini互換APIには、モデルのリスト取得/詳細取得、generateContent、streamGenerateContent、countTokens、embedContent、batchEmbedContents が含まれます。Gemini InteractionsおよびLiveは利用できません。

Response

candidatesarray

生成されたコンテンツの候補。

usageMetadataobject

トークン使用量情報。

リクエスト

curl -X POST "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?key=sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [{"text": "Hello, Gemini!"}]
      }
    ],
    "generationConfig": {
      "temperature": 0.7,
      "maxOutputTokens": 1024
    }
  }'

Vision Input Example

Geminiのマルチモーダルリクエストでは、インラインバイトまたはURLベースのファイル参照を使用して、contents[].parts[] 内にメディアを配置します。

パブリックGeminiコントラクトでサポートされているメディアカテゴリ:

  • image
  • audio
  • video

インラインメディアの場合は、inlineData または inline_data を使用し、Base64エンコードされたファイルバイトを渡します。

URLベースのメディアの場合は、fileData または file_data を使用し、公開されている https URLを渡します。

Video Input Example

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this video." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/demo.mp4"
          }
        }
      ]
    }
  ]
}

Audio Input Example

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this audio." },
        {
          "fileData": {
            "mimeType": "audio/mpeg",
            "fileUri": "https://example.com/demo.mp3"
          }
        }
      ]
    }
  ]
}

Image Input Example

インライン画像バイトを使用する場合:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this image." },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

画像URLを使用する場合:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this image." },
        {
          "fileData": {
            "mimeType": "image/jpeg",
            "fileUri": "https://example.com/demo.jpg"
          }
        }
      ]
    }
  ]
}

Audio Input Example

オーディオURLを使用する場合:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Transcribe and summarize this audio." },
        {
          "file_data": {
            "mime_type": "audio/mpeg",
            "file_uri": "https://example.com/sample.mp3"
          }
        }
      ]
    }
  ]
}

Video Input Example

ビデオURLを使用する場合:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Describe this video briefly." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/sample.mp4"
          }
        }
      ]
    }
  ]
}

レスポンス

Response
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {"text": "Hello! How can I assist you today?"}
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE"}
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 5,
    "candidatesTokenCount": 10,
    "totalTokenCount": 15
  }
}

別のインターフェースを使用する前に、選択したモデルの現在のモデル詳細を確認してください。可用性やリクエストフィールドはモデルによって異なります。

HTTPAPI
POST/v1beta/models/{model}:countTokens
POST/v1beta/models/{model}:embedContent
POST/v1beta/models/{model}:batchEmbedContents

トークンカウントにはAPIキーが必要ですが、課金はされません。返される入力カウントは計画用の概算です。最終的な請求については、レスポンスの使用量および課金記録を参照してください。

countTokens: contents / generateContentRequest

embedContent: content, taskType, title, outputDimensionality

batchEmbedContents: requests

認証

BearerAuth
AuthorizationBearer <token>

APIキー認証。Dashboard > API > API KeysでAPIキーを作成または管理します。

場所: header

パスパラメータ

model*string

モデル名 (例: gemini-2.5-pro)

クエリパラメータ

key?string

APIキー (ヘッダー認証の代替)

ヘッダー

X-TokenLab-Delivery-Policy?string

リクエストごとの配信ポリシー。APIキーおよびWorkspaceのデフォルト設定を上書きします。自動的にまず TokenLab Verified を試行し、出力、リクエストの受け入れ、または永続的なリソース作成の前に、一度だけ Official に切り替える場合があります。

指定できる値

  • "auto"
  • "verified"
  • "official"

リクエストボディ

application/json

ネイティブGemini GenerateContentリクエスト。ProtoJSONのlowerCamelCaseと元のprotoのsnake_caseの両方が受け入れられ、保持されます(混在リクエストを含む)。1つのフィールドに対して両方の綴りが存在する場合、TokenLabはそれらをマージしたり、ローカルの優先順位を選択したりしません。不明なフィールドはベストエフォートで転送されます。

レスポンス

application/json

application/json

application/json

application/json

application/json

application/json