{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "Hello! I'm pleased to introduce myself.\n\nI'm a large language model, trained and developed by Google...",
"thought": true,
"thoughtSignature": "<Signature_A>"
}
]
},
"finishReason": "STOP",
"continuationToken": "<string>",
"index": 0,
"safetyRatings": [
{}
]
}
],
"promptFeedback": {
"safetyRatings": [
{}
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
],
"cachedContentTokenCount": 0
},
"modelVersion": "gemini-3.6-flash",
"responseId": "l-LoaPu0BPmo1dkP6ZPHiQc"
}{
"error": {
"code": 400,
"message": "無効なリクエストパラメータ",
"type": "invalid_request_error"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "クォータ不足",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/credits"
}
}{
"error": {
"code": 403,
"message": "Access denied for this model",
"type": "permission_error"
}
}{
"error": {
"code": 404,
"message": "Model not found",
"type": "not_found_error"
}
}{
"error": {
"code": 413,
"message": "リクエストボディが大きすぎます",
"type": "request_too_large_error",
"fallback_suggestion": "reduce file size"
}
}{
"error": {
"code": 429,
"message": "レート制限を超過しました",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "内部サーバーエラー",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 502,
"message": "Upstream AI service unavailable",
"type": "upstream_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "サービス一時利用不可",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}Gemini 全モデルインターフェース - ネイティブ API 形式
パス内の {model} で呼び出す Gemini テキストモデルを選択します(すべての選択可能な値は model パラメータの対照表を参照してください)。
- Google ネイティブ API 形式を使用し、会話内容を同期的に返却します
- プレーンテキスト / マルチモーダル入力:テキスト + 画像 / 音声 / 動画の混合入力
- ストリーミング:パス内の
generateContentをstreamGenerateContentに置き換えます(?alt=sseを追加して SSE を取得できます)
モデルの仕様と差異
- 3.8 の動作:3.7 と比べて、ソフトウェアエンジニアリング、エージェント、多段階推論、マルチモーダル精度が向上しています。特に
highでは、推論 / 出力 Token の消費が増える場合があります。レイテンシ重視ならlow、一般用途ならデフォルトのmedium、複雑なコード、長い動画、多段階推論にはhighを推奨します。 - Gemini 4 Argon の動作:思考は
thinkingConfig.thinkingLevelのみで制御し、low/medium/highを指定できます。未指定の場合はモデルが思考量を自動で決定します。minimalは非対応です(指定すると 400 が返ります。代わりにlowを使用してください)。thinkingBudgetも非対応です(指定すると 400 が返ります)。temperature/topPが有効範囲を超えると 400 が返ります。複数ターンの関数呼び出しでは、前のターンで返されたthoughtSignatureを変更せずに送り返す必要があります。そうしないと 400 が返ります。入力はテキスト / 画像 / 音声 / 動画 / PDF に対応しています。 - サンプリングパラメータ
temperature/topP/topK:Gemini 3.x 全シリーズ共通で、カスタム値は出力に影響しません。topKは無視され効果がなく、temperature/topPが正当な範囲を超えると 400 が返ります。 - 思考制御:Gemini 3.x / 4 シリーズでは
thinkingConfig.thinkingLevel(各モデルが対応する段階とデフォルトはthinkingLevelパラメータを参照)を使用します。Gemini 2.5 シリーズではthinkingConfig.thinkingBudget(整数、0=無効)を使用します。両者は排他的です。gemini-3.8-flash/gemini-3.7-flashと Pro 系はminimalに対応しておらず、指定すると自動的にlowに引き下げられます。 - 関数呼び出し:Gemini 3.x の
FunctionResponseでは、対応するFunctionCallと一致するidとnameを必ず返す必要があります。そうでない場合はエラーになります。 - 最終ターンのロール:最後のメッセージの
roleをmodelにすることはできません(Gemini 3.5+ ではエラーになります)。 - Token 上限:
gemini-3.8-flash/gemini-3.7-flash/gemini-3.6-flash/gemini-3.5-flash-liteはコンテキスト1,048,576、最大出力65,536です。gemini-4-argonは入力・思考・回答で1,048,576のコンテキストを共有し、単発出力はストリーミング65,536、非ストリーミング32,768(いずれも思考と回答を含む)です。より長い出力は継続生成を使い、累計の思考と回答には入力を差し引いた残りの領域のみ使用できます。本ページの「長い出力の継続生成」を参照してください。他のモデルは各仕様に準じます。 - Gemini 2.5 の旧 ID:2026-10-19 から
gemini-2.5-pro/gemini-2.5-flash/gemini-2.5-flash-liteはそれぞれgemini-3.8-flash/gemini-3.5-flash-lite/gemini-3.1-flash-lite-previewが処理し、その料金で課金されます。レスポンスには新しいモデル ID が表示され、パラメータの動作は新しいモデルに準じます。thinkingBudgetは段階に変換されます(thinkingBudgetパラメータを参照)。
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "Hello! I'm pleased to introduce myself.\n\nI'm a large language model, trained and developed by Google...",
"thought": true,
"thoughtSignature": "<Signature_A>"
}
]
},
"finishReason": "STOP",
"continuationToken": "<string>",
"index": 0,
"safetyRatings": [
{}
]
}
],
"promptFeedback": {
"safetyRatings": [
{}
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
],
"cachedContentTokenCount": 0
},
"modelVersion": "gemini-3.6-flash",
"responseId": "l-LoaPu0BPmo1dkP6ZPHiQc"
}{
"error": {
"code": 400,
"message": "無効なリクエストパラメータ",
"type": "invalid_request_error"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "クォータ不足",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/credits"
}
}{
"error": {
"code": 403,
"message": "Access denied for this model",
"type": "permission_error"
}
}{
"error": {
"code": 404,
"message": "Model not found",
"type": "not_found_error"
}
}{
"error": {
"code": 413,
"message": "リクエストボディが大きすぎます",
"type": "request_too_large_error",
"fallback_suggestion": "reduce file size"
}
}{
"error": {
"code": 429,
"message": "レート制限を超過しました",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "内部サーバーエラー",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 502,
"message": "Upstream AI service unavailable",
"type": "upstream_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "サービス一時利用不可",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}generateContent を streamGenerateContent に置き換えます。リクエストボディは変更せず、応答をチャンク単位で受け取ります。SSE形式には ?alt=sse を追加してください。https://direct.evolink.ai で、テキストモデルへの対応が優れており、長時間接続をサポートします。https://api.evolink.ai はマルチモーダルの主力エンドポイントで、テキストモデルに対しては代替アドレスとして使用されます。長い出力の継続生成(Gemini 4 Argon)
gemini-4-argon の1回の出力上限は、ストリーミングが65,536トークン、非ストリーミングが32,768トークンで、いずれも思考と回答を含みます。より長い出力は継続リクエストで取得します。入力・思考・回答は1,048,576トークンのコンテキストを共有するため、累計の思考と回答には入力を差し引いた残りの領域のみ使用できます。継続生成に対応するのはネイティブAPIのみで、OpenAI互換形式では利用できません。
ストリーミング streamGenerateContent | 非ストリーミング generateContent | |
|---|---|---|
| 1回のリクエストの最大出力 | 65,536 | 32,768 |
| 終了時の継続トークンの位置 | 最終チャンクの candidates[0].continuationToken | candidates[0].continuationToken |
generationConfig.maxOutputTokensを1回の上限より大きく設定します(ストリーミングは65,536超、非ストリーミングは32,768超)。パラメータには最大1,048,576を指定できますが、実際の出力は共有コンテキストの制約を受けます。この値は全継続リクエストにわたる思考と回答の累計予算です。candidates[0].finishReasonがCONTINUATIONの場合、生成はまだ完了していません。同じ候補にcontinuationTokenが返されます。- 元のリクエストを、
contents、systemInstruction、tools、generationConfigを変えずに再送します。トップレベルにcontinuationTokenのみ追加し、直近の応答のトークンをそのまま指定します。 finishReasonがCONTINUATIONの間だけ手順3を繰り返し、それ以外では停止します。STOPは正常終了、MAX_TOKENSは累計予算の消費完了を示します。各応答には新たに生成された内容だけが含まれるので、順番に連結します。
- 生成済みの内容を
contentsに追加したり、「続きを書いて」などの新しい指示を送ったりしないでください。 - 1回のリクエストがすべて思考に使われ、回答の本文が空になることがあります。終了理由が
CONTINUATIONなら継続してください。 MAX_TOKENSでもcontinuationTokenが返される場合があります。再開するにはmaxOutputTokensを手動で増やし、最新のトークンを付けて元のリクエストを再送します。消費済みの予算のままでは400になります。下の「予算消費後の再開」を参照してください。- 複数ターンの会話では、
STOPまで待ってから連結した回答全体を1件のmodelメッセージとして履歴に追加してください。
使用例
1回目のリクエスト:curl -X POST "https://direct.evolink.ai/v1beta/models/gemini-4-argon:generateContent" \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{ "role": "user", "parts": [{ "text": "Rust非同期ランタイムの完全な設計書を書いてください。アーキテクチャ、スケジューラ、I/Oドライバ、タイマー、完全なサンプルコードを含めてください。" }] }
],
"generationConfig": {
"maxOutputTokens": 262144,
"thinkingConfig": { "thinkingLevel": "high" }
}
}'
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "# Rust非同期ランタイムの設計\n\n## 1. アーキテクチャ\n…"
}
]
},
"finishReason": "CONTINUATION",
"continuationToken": "<長い文字列。そのまま保存>"
}
]
}
CONTINUATION の場合、同じリクエストのトップレベルに continuationToken を追加して再送します:
curl -X POST "https://direct.evolink.ai/v1beta/models/gemini-4-argon:generateContent" \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{ "role": "user", "parts": [{ "text": "Rust非同期ランタイムの完全な設計書を書いてください。アーキテクチャ、スケジューラ、I/Oドライバ、タイマー、完全なサンプルコードを含めてください。" }] }
],
"generationConfig": {
"maxOutputTokens": 262144,
"thinkingConfig": { "thinkingLevel": "high" }
},
"continuationToken": "<前の応答のcontinuationToken>"
}'
CONTINUATION を自動処理し、正常終了または予算消費時に結果を返します。最新のトークンを保持し、MAX_TOKENS でも予算を自動的には増やしません:
import os
from copy import deepcopy
import requests
URL = "https://direct.evolink.ai/v1beta/models/gemini-4-argon:generateContent"
HEADERS = {"Authorization": f"Bearer {os.environ['EVOLINK_API_KEY']}"}
def generate_with_continuation(body):
request_body = deepcopy(body)
pieces = []
while True:
# クライアントの読み取りタイムアウトは1,200秒。サーバーが20分間接続を維持する保証ではありません。
resp = requests.post(URL, headers=HEADERS, json=request_body, timeout=1200)
resp.raise_for_status()
candidates = resp.json().get("candidates", [])
if not candidates:
raise RuntimeError("応答に候補がありません。promptFeedbackを確認してください。")
candidate = candidates[0]
for part in candidate.get("content", {}).get("parts", []):
if not part.get("thought"):
pieces.append(part.get("text", ""))
reason = candidate.get("finishReason")
token = candidate.get("continuationToken")
if reason == "CONTINUATION":
if not token:
raise RuntimeError("継続が必要ですが、continuationTokenが返されていません。")
request_body["continuationToken"] = token # 他のフィールドは変更しない
continue
return {
"text": "".join(pieces),
"finishReason": reason,
"continuationToken": token,
}
body = {
"contents": [
{"role": "user", "parts": [{"text": "Rust非同期ランタイムの完全な設計書を書いてください。アーキテクチャ、スケジューラ、I/Oドライバ、タイマー、完全なサンプルコードを含めてください。"}]}
],
"generationConfig": {"maxOutputTokens": 262144, "thinkingConfig": {"thinkingLevel": "high"}},
}
result = generate_with_continuation(body)
print(result["text"])
print("finishReason:", result["finishReason"])
if result["finishReason"] == "MAX_TOKENS":
print("累計出力予算を消費しました。継続トークンがあれば、maxOutputTokensを手動で増やして再開できます。")
予算消費後の再開
この例は上のgenerate_with_continuation、URL、HEADERS を再利用します。小さな予算で数列を生成した後、総予算を明示的に64から2,048へ増やします。元の contents とその他の設定を維持し、トークンの追加と予算の増加によって中断箇所から再開します。
body = {
"contents": [
{"role": "user", "parts": [{"text": "Output integers 1 through 100, one per line. Start immediately."}]}
],
"generationConfig": {"maxOutputTokens": 64, "thinkingConfig": {"thinkingLevel": "low"}},
}
first = generate_with_continuation(body)
print(first["text"], end="")
if first["finishReason"] == "MAX_TOKENS" and first["continuationToken"]:
body["continuationToken"] = first["continuationToken"]
body["generationConfig"]["maxOutputTokens"] = 2048 # 呼び出し側が累計予算の増加を明示的に指定
resumed = generate_with_continuation(body)
print(resumed["text"], end="")
print("\nfinishReason:", resumed["finishReason"])
else:
print("\nfinishReason:", first["finishReason"])
finishReason を含む最終チャンクを読み取ってから判断します。CONTINUATION は設定を変えずに最新トークンで継続し、MAX_TOKENS は再開する場合に累計予算を手動で増やします。STOP は正常終了です。
課金とエラー
- 各リクエストは個別に課金されます。継続時には元の入力と生成済みの内容が再び入力として計上されます。暗黙的キャッシュにヒットした部分にはキャッシュ料金が適用されます。
- 各応答の
usageMetadataはそのリクエストのみの使用量です。総使用量はリクエスト間で加算します。同一ストリーム内の値は累計なので、最後のusageMetadataだけを使用し、途中の累計値を重複して加算しないでください。 - ネイティブAPIの出力分の仮引き落とし見積もりには、非ストリーミングでも
maxOutputTokensと65,536の小さい方を使い、入力分は別途見積もります。非ストリーミングの実際の単発出力上限は32,768なので、それより大きい予算では実際の単発上限に基づく額より多く確保される場合があります。最終料金は応答の使用量に基づいて精算します。 - 無効なトークンは400になります。形式が正しくても内容が無効なら
Invalid continuation token.、形式が不正なら別のパラメータエラーが返される場合があります。他のモデルはcontinuationTokenを無視します。 MAX_TOKENSの後にトークンを付けても、消費済みのmaxOutputTokensを増やさなければ400になります。
承認
##すべてのAPIにBearer Token認証が必要です##
APIキーの取得:
APIキー管理ページにアクセスしてAPIキーを取得してください
リクエストヘッダーに追加:
Authorization: Bearer YOUR_API_KEY
パスパラメータ
呼び出す Gemini テキストモデルを選択します:
| モデル ID | シリーズ | 位置づけ |
|---|---|---|
gemini-4-argon | 4 Argon | 長いレポート・大規模コード向け。1回の上限はストリーミング65,536 / 非ストリーミング32,768トークン。ネイティブAPIで継続可能(総量は共有コンテキストの制約あり) |
gemini-3.8-flash | 3.8 Flash | ソフトウェアエンジニアリング / エージェント / 多段階推論 / マルチモーダル精度を強化 |
gemini-3.7-flash | 3.7 Flash | Pro 級 agentic / コード生成 / ターミナル実行 |
gemini-3.6-flash | 3.6 Flash | マルチステップ編成 / コードリファクタリング / 汎用推論 |
gemini-3.5-flash | 3.5 Flash | 汎用 Flash |
gemini-3.5-flash-lite | 3.5 Flash-Lite | 低コスト / 高スループット / 軽量 agent |
gemini-3.1-pro-preview | 3.1 Pro (Preview) | 高度な推論 |
gemini-3.1-pro-preview-customtools | 3.1 Pro · CustomTools | 高度な推論 + カスタムツール |
gemini-3.1-flash-lite-preview | 3.1 Flash-Lite (Preview) | 低コスト |
gemini-3-pro-preview | 3.0 Pro (Preview) | 高度な推論 |
gemini-3-flash-preview | 3.0 Flash (Preview) | 汎用 Flash |
gemini-2.5-pro | 2.5 Pro | 旧 ID。2026-10-19 から gemini-3.8-flash が処理し、その料金で課金 |
gemini-2.5-flash | 2.5 Flash | 旧 ID。2026-10-19 から gemini-3.5-flash-lite が処理し、その料金で課金 |
gemini-2.5-flash-lite | 2.5 Flash-Lite | 旧 ID。2026-10-19 から gemini-3.1-flash-lite-preview が処理し、その料金で課金 |
gemini-4-argon, gemini-3.8-flash, gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash, gemini-3.5-flash-lite, gemini-3.1-pro-preview, gemini-3.1-pro-preview-customtools, gemini-3.1-flash-lite-preview, gemini-3-pro-preview, gemini-3-flash-preview, gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite "gemini-3.6-flash"
ボディ
List of conversation contents, supports multi-turn dialogue and multimodal input
1Show child attributes
Show child attributes
System instruction (optional), mainly text content
Show child attributes
Show child attributes
モデルが呼び出せるツールです。次の 3 種類に対応します。
functionDeclarations:関数呼び出しcodeExecution:コード実行googleSearch:Google Search によるウェブ検索。{"googleSearch": {}}を指定します(camelCase。google_searchは HTTP 400)。すべての Gemini テキストモデルで利用できます。レスポンスのcandidates[].groundingMetadataに検索クエリと参照元が含まれ、呼び出しごとに課金されます。
[{ "googleSearch": {} }]
Tool calling configuration (optional)
Safety settings list (optional)
Generation configuration parameters (optional)
Show child attributes
Show child attributes
長い出力の継続トークン(gemini-4-argon のみ)。直近の応答の candidates[0].continuationToken をそのままリクエストのトップレベルに指定します。元の contents、systemInstruction、tools を維持し、生成済みの本文は追加しません。
CONTINUATION:生成設定をすべて維持してトークンを再送します。MAX_TOKENS:トークンが返される場合があります。再開前に累計maxOutputTokensを手動で増やし、他の設定は維持します。消費済みの予算のままでは400になります。- 無効なトークンは400になります。
- 他のモデルはこのフィールドを無視します。
ネイティブAPIの完全リファレンス の「長い出力の継続生成」を参照してください。
Cached content name, in the form cachedContents/{cachedContent}
レスポンス
コンテンツが正常に生成されました
レスポンス形式の説明:
generateContentエンドポイント使用時、GenerateContentResponseを返却(完全なレスポンスを一度に返却)streamGenerateContentエンドポイント使用時、StreamGenerateContentResponseを返却(ストリーミングレスポンス、コンテンツをチャンクで返却)