Execute code with the Gemini API
Stay organized with collections
Save and categorize content based on your preferences.
The Gemini API code execution feature enables the model to generate and run Python code and learn iteratively from the results until it arrives at a final output. You can use this code execution capability to build applications that benefit from code-based reasoning and that produce text output. For example, you could use code execution in an application that solves equations or processes text.
The Gemini API provides code execution as a tool, similar to function calling. After you add code execution as a tool, the model decides when to use it.
Supported models
- Gemini 2.5 Flash (Preview)
- Gemini 2.5 Flash-Lite (Preview)
- Gemini 2.5 Flash-Lite
- Gemini 2.0 Flash with Live API (Preview)
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.0 Flash
Limitations
- The feature doesn't support file I/O.
- Code execution can run for a maximum of 30 seconds before timing out.
Example syntax
curl
PROJECT_ID=myproject REGION=us-central1 MODEL_ID=gemini-2.0-flash-001 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent\ -d'{ "contents": [{ ... }], "tools": [{ "code_execution": {} }] }'
Parameter list
See examples for implementation details.
Python
To enable code execution, specify a code execution tool
in your request.
CodeExecution
Tool that executes code generated by the model, and automatically returns the result to the model. See also ExecutableCode and CodeExecutionResult which are input and output to this tool.
Part
executable_code
Optional:
ExecutableCode
Code generated by the model that is meant to be executed.
See Code Execution [API].
code_execution_result
Optional:
CodeExecutionResult
Result of executing the [ExecutableCode].
See Code Execution [API].
ExecutableCode
language
Required:
string (enum)
Supported programming languages for the generated code
.
Supported:
PYTHON
code
Required:
string
The code to be executed.
See Code Execution [API].
CodeExecutionResult
outcome
Required:
string (enum)
Outcome of the code execution.
Possible outcomes:
- Code execution completed successfully. (
OUTCOME_OK
) -
Code execution finished but with a failure.
stderr
should contain the reason. (OUTCOME_FAILED
) -
Code execution ran for too long, and was cancelled. There may or may not be a partial output present. (
OUTCOME_DEADLINE_EXCEEDED
)
output
Required:
string
Contains stdout
when code execution is successful, stderr
or other description otherwise.
See Code Execution [API].
Examples
Here are illustrations of how you can submit a query and function declarations to the model.
Basic use case
curl
PROJECT_ID=myproject REGION=us-central1 MODEL_ID=gemini-2.0-flash-001 curl-XPOST\ -H"Authorization: Bearer $(gcloudauthprint-access-token)"\ -H"Content-Type: application/json"\ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent\ -d'{ "contents": [{ "role": "user", "parts": [{ "text": "Calculate 20th fibonacci number. Then find the nearest palindrome to it." }] }], "tools": [{'codeExecution': {}}], }'
Python
fromgoogleimport genai fromgoogle.genai.typesimport Tool, ToolCodeExecution, GenerateContentConfig client = genai.Client() model_id = "gemini-2.0-flash-001" code_execution_tool = Tool( code_execution=ToolCodeExecution() ) response = client.models.generate_content( model=model_id, contents="Calculate 20th fibonacci number. Then find the nearest palindrome to it.", config=GenerateContentConfig( tools=[code_execution_tool], temperature=0, ), ) for part in response.candidates[0].content.parts: if part.executable_code: print(part.executable_code) if part.code_execution_result: print(part.code_execution_result) # Example response: # code='...' language='PYTHON' # outcome='OUTCOME_OK' output='The 20th Fibonacci number is: 6765\n' # code='...' language='PYTHON' # outcome='OUTCOME_OK' output='Lower Palindrome: 6666\nHigher Palindrome: 6776\nNearest Palindrome to 6765: 6776\n'
Enable code execution on the model
To enable basic code execution, see Code execution.
What's next
- Learn more about the Gemini API.
- Learn more about Function calling.
- Learn more about Generating content with Gemini.