Gemini 3.5 Flash uses medium thinking by default. The API supports minimal, low, medium, and high to adjust reasoning depth; for multi-turn tool calls, preserve all parts and thought signatures returned by the model exactly as received.
Suitable tasks: Coding, data analysis, document processing, function calling, and multi-step Agent workflows with the Gemini API.
Unsuitable tasks: Applying Gemini 2.5's thinkingBudget parameter directly to Gemini 3.5 Flash, or deleting signature parts from multi-turn function calls.
Applicable model version: gemini-3.5-flash.
Applicable client, Agent, or API: generate_content/generateContent in the Google Gen AI SDK, as well as REST generateContent.
Recommended reasoning levels and parameters: minimal or low for simple classification/fact tasks; medium for ordinary tasks; high for complex coding, mathematics, and planning. Enable thought summaries as needed, and record thought tokens in production at the same time.
The following code is a runnable configuration template based on official API fields and official examples, with the model name explicitly replaced by gemini-3.5-flash; the model-name replacement is an adaptation prepared for this model and is not claimed to be verbatim code from the page.
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="Analyze this sales data, first give the conclusion, then list the evidence and uncertainties.",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="high")
),
)
print(response.text)import { GoogleGenAI, ThinkingLevel } from "@google/genai";
const ai = new GoogleGenAI({});
const response = await ai.models.generateContent({
model: "gemini-3.5-flash",
contents: "Turn these meeting notes into JSON with the topic, decisions, owner, and deadline.",
config: {
thinkingConfig: { thinkingLevel: ThinkingLevel.MEDIUM },
},
});
console.log(response.text);curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{"parts": [{"text": "Classify the following text as bug, feature, or question; return only the category."}]}],
"generationConfig": {
"thinkingConfig": {"thinkingLevel": "low"}
}
}'from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="Compare the two approaches and give a recommendation and key risks.",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
thinking_level="high",
include_thoughts=True,
)
),
)
for part in response.candidates[0].content.parts:
if not part.text:
continue
print("Thought summary:" if part.thought else "Answer:")
print(part.text)Establish a baseline with the default medium; rerun simple tasks with minimal/low and complex tasks with high.
For each run, record usage_metadata.thoughts_token_count, output tokens, time to first token, total latency, and cost.
To debug quality, temporarily enable include_thoughts=True to inspect summaries; in production, retain only necessary summaries/logs and do not treat internal reasoning as proof of facts.
When using function calling or multi-turn conversations, pass back all response parts returned by the model exactly as received; do not concatenate, delete, or modify signed parts.
Do not use Gemini 2.5's thinkingBudget to control 3.5 Flash; 3.5 Flash uses thinkingLevel, which supports minimal, low, medium, and high.
The official model page lists gemini-3.5-flash with an input limit of 1,048,576 tokens and an output limit of 65,536 tokens; it supports text, image, video, audio, and PDF input, with text output.
The official thinking table marks Gemini 3.5 Flash's default as medium and supports minimal, low, medium, and high; high can dynamically increase reasoning depth.
The official documentation states that after thinking is enabled, charges include output tokens and thought tokens; thought tokens can be read from thoughtsTokenCount/the corresponding SDK usage field.
Gemini 3 models may return thought signatures for various parts; the official recommendation is to pass all parts through unchanged, and signatures must not be dropped in multi-turn function calls in particular.
Some code examples on the documentation page use gemini-3.6-flash as the current example; the template above replaces it with this model ID while keeping the same field structure. Actual SDK/API availability must be verified in the target project.
minimal does not guarantee that thinking is completely disabled; the official Gemini 3.5 Flash page does not provide a thinkingBudget=0 configuration for strictly no-thinking semantics.
Thought summaries are summaries rather than complete internal reasoning, and cannot replace external evidence, testing, or human review.
The 1M input window and 65,536 output limit are API model-page specifications and do not mean that every client, plan, or agent framework exposes the same limits.
The official table marks Gemini 3.5 Flash's default level as medium and describes high as deeper dynamic reasoning. The documentation also emphasizes that multi-turn requests must pass back signed parts unchanged—a configuration detail that custom Agent frameworks are especially likely to break.
Gemini 3.5 Flash